ValueError: operands could not be broadcast together with shapes (1404,2000,1) (1404,2000)
错误原因:
此处图片为灰度图片,通道数为1,shape为(351,500),现在需要(351,500,1),所以报错
解决方法:
方法1:直接将灰度图片在数据集中去掉,只剩下多通道的数据,即,去掉shape为(351,500)的图片。此时程序正常运行,输出结果。
方法2:使用cv2将灰度单通道图转为多通道图,实际上还是个灰色图片,知识多了几个通道而已,每个通道都是灰色。
具体操作可参考以下链接:
转发链接:https://discuss.pytorch.org/t/runtimeerror-given-groups-1-weight-of-size-64-3-7-7-expected-input-3-1-224-224-to-have-3-channels-but-got-1-channels-instead/30153/4
方法3:本文是复现Real-ESRGAN,只需要加上两句代码即可。
在inference_realesrgan.py的140行后面加上:
elif len(img.shape) == 2:
img_mode = 'RGBA'
修改后附近完整代码如下:
img = cv2.imread(path, cv2.IMREAD_UNCHANGED)
print(img.shape)
if len(img.shape) == 3 and img.shape[2] == 4:
img_mode = 'RGBA'
elif len(img.shape) == 2:
img_mode = 'RGBA' #将灰度照片的单通道改为4通道
else:
img_mode = None
如下图所示,(23,236)的图片运行完后直接结束程序,说明正常处理,并且输出了结果。