处理mask图像为单通道彩色图
一、问题说明
最近在训练mask rcnn时发现输入的mask格式不对,后面发现通过labelme
标注并转换得到的Mask
是单通道彩色图,Mask
图像的像素值代表了像素点所属的类别标签。对于单个类别的数据集来说, Mask
像素值应该是[0,1], 其中0表示背景区域;对于多个类别的数据集, Mask
像素值应该是[0,1,2,…],显示为彩色以区分不同目标。如下图所示,虽然看上去是彩色图像,但是打开属性看其位深却是8。
二、解决办法
最开始采用OpenCV
读取,但里面自动转换成了3通道图(24位),类似于这篇博客在深度学习中遇到的opencv坑,后面采用Pillow
库,查看其官网说明,支持8位的调色板格式图片,如下图所示。
通过PIL读取后再依次处理即可正常训练
三、保存mask为单通道彩图
tmp_image = np.zeros((h, w), np.uint8)
for mask_id, mask in enumerate(masks):
tmp_image[mask >= 1] = mask_id + 1
tmp_image = Image.fromarray(tmp_image, "P")
palette_data = [0, 0, 0, 128, 0, 0, 0, 128, 0, 128, 128, 0, 0, 0, 128, 128, 0, 128, 0, 128, 128, 128, 128, 128,
64, 0, 0, 192, 0, 0, 64, 128, 0, 192, 128, 0, 64, 0, 128, 192, 0, 128, 64, 128, 128, 192, 128, 128,
0, 64, 0, 128, 64, 0, 0, 192, 0, 128, 192, 0] # 调色板
tmp_image.putpalette(palette_data)
tmp_image.save("D:/mask.png")
参考链接
numpy转PIL.Image: 处理Mask图像为单通道的彩色/灰度图colormap.png
在深度学习中遇到的opencv坑
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2018-06-20 pandas练习(三)------ 数据分组