TensorBoard中tf.summary.image显示图像颜色异常问题求助
为啥TensorBoard里的图像颜色错乱?
嘿,这个问题我之前踩过坑!核心原因就是色彩通道顺序不匹配,给你拆解清楚:
- 你用OpenCV读的图默认是BGR通道顺序,Matplotlib显示时转成RGB就正常,是因为Matplotlib认RGB格式;但你喂给TensorFlow
x占位符的还是没转的BGR图啊——你只是在验证的时候转了Matplotlib的显示,并没有修改输入张量的通道顺序! - 而
tf.summary.image默认是按RGB通道顺序渲染图像的,拿到BGR的张量自然就把红蓝通道搞反,颜色直接乱掉了。
另外还有个小细节要注意:你把uint8的图转成了float32格式,但如果没归一化到[0,1]区间(tf.summary.image对float输入要求这个范围,uint8的话是[0,255]),虽然不是颜色错乱的主因,但也可能影响渲染效果。
怎么解决?
- 先转通道顺序:在喂给
x之前,把BGR转成RGB。要么在预处理时用OpenCV转好:
要么用TensorFlow的操作在图里转:img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)x_rgb = tf.reverse(x, axis=[-1]) # 反转最后一个通道维度,BGR变RGB tf.summary.image('input', x_rgb, 1) - 再处理像素范围:如果你的float32张量是0-255的数值,记得归一化到0-1:
x_normalized = x / 255.0 tf.summary.image('input', x_normalized, 1)
这样调整后,TensorBoard里的图像颜色就会和你Matplotlib里看到的一致啦!
内容的提问来源于stack exchange,提问作者Ben Quan
相关产品推荐
相关产品推荐

