pytorch的torchvision无法保存真正的灰度图像
在图像相关的深度学习模型中,有时候需要保存训练中的图像或者测试得到的图像(尤其是低级视觉任务比如去噪、超分辨率、压缩重建等),一般使用如下方式进行图像保存(torchvision.utils中的save_image()函数):
torchvision.utils.save_image(output.data,'%d.bmp'% (idx), padding=0)
但这种方式只能保存RGB彩色图像,如果网络的输出是单通道灰度图像,则该函数依然会输出三个通道,每个通道的数值都是相同的,即“伪灰度图像”,虽然从视觉效果上看不出区别,但是图像所占内存比正常情况大了两倍。
那么如何保存真正的灰度图像?首先转入save_image()函数进行探究:
def save_image(tensor, filename, nrow=8, padding=2,
normalize=False, range=None, scale_each=False, pad_value=0):
"""Save a given Tensor into an image file.
Args:
tensor (Tensor or list): Image to be saved. If given a mini-batch tensor,
saves the tensor as a grid of images by calling ``make_grid``.
**kwargs: Other arguments are documented in ``make_grid``