解决DHSNet ValueError: operands could not be broadcast together with shapes (224,224) (3, ) (224,224)

最近在复现DHSnet-pytorch模型,代码调试过程中遇到如下错误:

ValueError: operands could not be broadcast together with shapes (224,224) (3, ) (224,224)

解决DHSNet ValueError: operands could not be broadcast together with shapes (224,224) (3, ) (224,224)_第1张图片

通过错误描述可知该问题出现在 dataset.py 文件的第56行:

解决DHSNet ValueError: operands could not be broadcast together with shapes (224,224) (3, ) (224,224)_第2张图片

该函数的功能是将输入图片和ground truth 进行真值处理,以增强物体与背景的对比度,最后转化为GPU可以处理的张量。

而为什么会在这一行出错呢,该错误的描述即为:操作数不能与形状一起广播,由此可以推测 img 中向量维度出错导致不能相减。

解决方案如下:

将出错部分的代码做如下修改:

解决DHSNet ValueError: operands could not be broadcast together with shapes (224,224) (3, ) (224,224)_第3张图片

修改代码后,在运行程序,出错时会返回错误图片信息,具体如下:

解决DHSNet ValueError: operands could not be broadcast together with shapes (224,224) (3, ) (224,224)_第4张图片

根据错误图片信息可知,出现问题的图片路径为:

./dataset/DUTS/train/RGB/DUTS-TR_n03447447_4852.jpg

我们根据路径找到这幅图像,如下:

解决DHSNet ValueError: operands could not be broadcast together with shapes (224,224) (3, ) (224,224)_第5张图片

定位到问题图片后可以发现,在一堆彩色图像中混杂着一张黑白图片,可能在加载图像的时候自动将这幅图像转换为灰度图,导致该图像的向量为(224,224)而不是(224,224,3)

解决方案很简单,将问题图片删除即可

 

 

 

你可能感兴趣的:(常见问题解决方案,程序人生,经验分享,编辑器,深度学习,pytorch)