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

报错

  • 1. 报错相关环境
  • 2. 报错解析
    • 2.1 查看通道
    • 2.2 查看模式
  • 3. 解决方法
  • 4.补充【后期补充】
  • 5.总结

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

1. 报错相关环境

  • 使用paddlepaddle 环境,显示以上报错信息
  • 使用自己的数据集报错,他们的数据没有问题
  • 报错详情
    paddlepaddle ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image._第1张图片

2. 报错解析

2.1 查看通道

  • 根据报错,说图片应该是1通道,我的数据是4通道
  • 找到报错的行数
    paddlepaddle ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image._第2张图片
  • 打印自己数据图片维度
    • 自己是(256,256,4),4通道
    • paddlepaddle ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image._第3张图片
  • 打印不报错数据图片维度
    • (256,256),1通道
      在这里插入图片描述

2.2 查看模式

  • 打印自己的图片mode
    • RGBA
      paddlepaddle ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image._第4张图片
  • 打印不报错数据图片mode
    • 1
      paddlepaddle ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image._第5张图片

3. 解决方法

  • 就是将4通道改为1通道,即将mode改为1
    • 百度搜mode将RGBA改为1
    • 使用convert函数即可
      Image.open(img_name).convert('1')
      
  • 通道数和mode因该是对应的,报错解决了,不关心它们之间的什么关系,,,
  • 项目相关文件代码修改
    mask=np.asarray(Image.open(mask).convert('1'))
    

paddlepaddle ValueError: Mask should be a 1-channel image, but recevied is a 4-channel image._第6张图片

  • 完成!!!

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
  • 百度查找不到解决方案,乱七八糟的,发现上面的报错应该更好解决,所以就不管了
  • 上个报错解决好,这个报错也没有了,,,
  • 很神奇,,,

你可能感兴趣的:(报错,paddlepaddle,python,numpy)