一、问题描述
遇到一个很奇怪的事情,我命名保存的是灰度图格式,但是使用torchvision.dataset.ImageFolder
读取图片后变成了三通道,灰度图按理说应该是单通道才对。
二、原因
在使用torchvision.dataset.ImageFolder
时,会用到transform
,这个东西默认是 RGB 图片,因此对于单通道的灰度图,他会自动复制三份,做成一个[3, W, H]的模式,然后再交给 ImageFolder 返回。
三、如果我确实要使用单通道的灰度图怎么办
在使用 transform 的时候,加入:transform = transforms.Compose([transforms.Grayscale(num_output_channels = 1)])
再来输出试试:注意要使用print(image[0][0][0])
可以看到,这是一个单通道矩阵张量,这样就可以使用灰度图操作了。以前用的都是彩色图,没注意过这个事情。。。。。