最近在复现DHSnet-pytorch模型,代码调试过程中遇到如下错误:
ValueError: operands could not be broadcast together with shapes (224,224) (3, ) (224,224)
通过错误描述可知该问题出现在 dataset.py 文件的第56行:
该函数的功能是将输入图片和ground truth 进行真值处理,以增强物体与背景的对比度,最后转化为GPU可以处理的张量。
而为什么会在这一行出错呢,该错误的描述即为:操作数不能与形状一起广播,由此可以推测 img 中向量维度出错导致不能相减。
解决方案如下:
将出错部分的代码做如下修改:
修改代码后,在运行程序,出错时会返回错误图片信息,具体如下:
根据错误图片信息可知,出现问题的图片路径为:
./dataset/DUTS/train/RGB/DUTS-TR_n03447447_4852.jpg
我们根据路径找到这幅图像,如下:
定位到问题图片后可以发现,在一堆彩色图像中混杂着一张黑白图片,可能在加载图像的时候自动将这幅图像转换为灰度图,导致该图像的向量为(224,224)而不是(224,224,3)
解决方案很简单,将问题图片删除即可