一、背景
对一张人脸进行卷积,发现图像显示不对。180x180的图,3x3的卷积核,按理说卷出来应该与原图差别不大,但出来的图像很奇怪。
从左至右依次为:原图、空洞卷积图、正常卷积图。
事后分析,上米娜的图像出现了失真,有一种切割感,譬如最高是1,出现了1.5,那么该1.5就会被赋值为1。
二、原因
代码存在问题。Image.open读取到的图像为PngImageFile类型,将其转换为tensor后,数值范围是0-1,经过cnn后,数值范围就超过了0-1的范围。利用plt.imshow显示图像,需要PIL格式的图像,transforms.ToPILImage()接受的tensor范围必须是0-1,否则就会出现失真。因此需要对卷积后的张量进行归一化。