paddlepaddle ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image.


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因该是对应的,报错解决了,不关心它们之间的什么关系,,,
  • 项目相关文件代码修改
    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
  • 百度查找不到解决方案,乱七八糟的,发现上面的报错应该更好解决,所以就不管了
  • 上个报错解决好,这个报错也没有了,,,
  • 很神奇,,,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荼靡~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值