提示:本文针对语义分割任务打点标注工作太繁琐、边缘位置不精确等问题提出基于PS的快速语义分割标注方法,后续会推出语义分割系列数据集构建与转换方法。
文章目录
- 前言
- 什么是语义分割?
- 常见分割标注方法有哪些?
- 二、PS实现快速语义分割标注
- 1.使用环境
- 2.使用方法
- 总结
前言
什么是语义分割?
语义分割是一种典型的计算机视觉问题,其涉及将一些原始数据(例如,平面图像)作为输入并将它们转换为具有突出显示的感兴趣区域的掩模。全像素语义分割(full-pixel semantic segmentation),其中图像中的每个像素根据其所属的感兴趣对象被分配类别ID。
语义分割基本概念介绍:(语义分割介绍)
常见分割标注方法有哪些?
labelme标注工具使用:labelme
这里放一个labelme标注图片,不难看出,labelme需要围绕待标注物体边缘打点,而且打点数量与分割精细程度成正比!
本人在此不含任何私人仇怨的前提下简单吐槽labelme:
1.打点太少,边缘标注不精细,打点太多,脑子、手和脖子难受
2.不能挖孔,对于特定场景这是个问题!
3.不能直接生成我想要的掩码图!
二、PS实现快速语义分割标注
1.使用环境
Adobe Photoshop CC 2015(不要问为什么不用高版本,但凡我电脑内存大一点也不至于用这个版本!)
在此附上下载链接:(下载链接)
2.使用方法
首先,设置前景背景色为你掩码图的对应颜色,一般背景色为黑色,前景色为你标注对象的颜色
然后,注意切换为美式键盘(shift+ctrl)
标注工具包括:磁性套索工具,使用时沿边缘走一圈即可,按住alt可切换为多边形套索工具(在边界明显为直线时使用),此工具适用于边界不明显的图片.
快速选择/魔棒工具, 适用于边界明显的标注,特别是具体物体标注,右键可切换为魔棒工具,此工具适用于颜色接近的区域划分.
在标注过程中常用快捷键为撤销:ctrl+alt+Z
建立选区后需填充目标区域为对一个类别颜色,背景区域为黑色,快捷键:ctrl+del:背景色填充,ctrl+shift+i:反选选区得到背景色,alt+del:前景色填充,若具有多个类别,则更换前景色即可
然后,反选选区(快捷键CTRL+SHIFT+I),填充前景色(快捷键ALT+DEL)
最后,保存图片为二值PNG图片(快捷键CRTL+ALT+SHIFT+S),此处注意修改颜色表为你标注掩码图的颜色(背景色在前,前景色在后)。否则会生成三维PNG图片,导致语义分割模型无法训练!
在预设一栏中选择PNG-8 128仿色,其下一栏选择PNG-8格式,再下一栏选择颜色表,注意此处颜色表要与mmseg中类别颜色一一对应,背景在前为黑色,类别颜色自定,最好为(128,0,0)红色、(0,128,0)绿色、(0,0,128)红色、(128,128,0),按mmseg/datasets/voc.py中的颜色顺序调整,处理完后存储在目标文件夹下即可。
生成的二值图如下:
附赠掩码图像维度检查函数:
def get_Image_dim_len(png_dir: str,jpg_dir:str):png = Image.open(png_dir)png_w,png_h=png.width,png.height#若第十行报错,说明jpg图片没有对应的png图片png_dim_len = len(np.array(png).shape)assert png_dim_len==2,"提示:存在三维掩码图"jpg=Image.open(jpg_dir)jpg = ImageOps.exif_transpose(jpg)jpg.save(jpg_dir)jpg_w,jpg_h=jpg.width,jpg.heightprint(jpg_w,jpg_h,png_w,png_h)assert png_w==jpg_w and png_h==jpg_h,print("提示:%s mask图与原图宽高参数不一致"%(png_dir))
总结
本文介绍了PS实现快速语义分割标注的核心方法,以供大家交流讨论!
往期回顾:
(1)CBAM论文解读+CBAM-ResNeXt的Pytorch实现
(2)SENet论文解读及代码实例
(3)ShuffleNet-V1论文理解及代码复现
(4) ShuffleNet-V2论文理解及代码复现
(5)GhostNet论文理解及代码复现
下期预告:
基于PS的VOC语义分割数据集构建方法