paddlepaddle ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image.
1. 报错相关环境
- 使用
paddlepaddle
环境,显示以上报错信息 使用自己的数据集报错,他们的数据没有问题
- 报错详情
2. 报错解析
2.1 查看通道
- 根据报错,说图片应该是
1通道
,我的数据是4通道
- 找到报错的行数
- 打印自己数据图片维度
- 自己是
(256,256,4),4通道
- 自己是
- 打印不报错数据图片维度
- 是
(256,256),1通道
- 是
2.2 查看模式
- 打印自己的图片
mode
- 为
RGBA
- 为
- 打印不报错数据图片
mode
- 为
1
- 为
3. 解决方法
- 就是将
4通道
改为1通道
,即将mode
改为1
- 百度搜mode将
RGBA
改为1
- 使用
convert
函数即可Image.open(img_name).convert('1')
- 百度搜mode将
- 通道数和
mode
因该是对应的,报错解决了,不关心它们之间的什么关系,,, - 项目相关文件代码修改
mask=np.asarray(Image.open(mask).convert('1'))
- 完成!!!
4.补充【后期补充】
- 转换
1
后,模型训练读取的msak
掩码全为黑色,导致预测不出来,所以因该是转为L
,不是转为1
mask=np.asarray(Image.open(mask).convert('L'))
5.总结
- 在报错的命令行里还有一个错
SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception. [Hint: Expected killed_ != true, but received killed_:1 == true:1.] (at /paddle/paddle/fluid/operators/read
- 百度查找不到解决方案,乱七八糟的,发现上面的报错应该更好解决,所以就不管了
- 上个报错解决好,这个报错也没有了,,,
- 很神奇,,,