[LabelImg][LabelMe]标注工具使用小结
数据是深度学习算法的关键,其中最常见的数据操作就是目标标注。通用数据集已经给出了标注结果,并且对数据本身进行了很好的分类和归纳,而在最近的工作中需要对原始数据进行有效整理并进行标注,小结遇到的问题,希望对之后的实践有帮助
标注工具
目前最常用的是以下两个标注工具:
Note 1:LabelImg
会解析jpeg
文件的exif
元信息,导致图像自动旋转。此问题将在后面内容中提及
Note 2:LabelMe
会将标注图像的数据保存在json
文件中,字段为imageData
。对于此数据的解析将在后面内容中提及
标注规范
刚开始和标注公司打交道,遇到了很多的问题,感觉自己还是太naive
,把所有的条件都想像的太理想了,导致前期的数据处理阶段遇到了很多的小麻烦。小结一下请别人进行标注时需要注意的事项(默认标注的是正矩形框)
- 标注前:需要让标注公司清楚的地方
- 标注文件的编码格式:
utf-8
- 标注图像的格式:不推荐使用
Jpeg
格式(后续会提及),最好使用Png
格式(自己可以先进行图像格式转换,再交给标注公司) - 标注的工具:
LabelImg
还是LabelMe
- 标注文件保存规范:和对应的标注图像保存在同一目录下即可
- 标注的内容:自己给出示例,写清楚标注目标和对应标签,写清楚标注目标的标注范围
- 标注文件的编码格式:
- 标注后:后处理需要注意的地方
xmin/ymin/xmax/ymax
:进行标框时,除了保存左上-右下的坐标外,还有可能保存的是左下-右上、右下- 左上、右上-左下的坐标,所以需要额外代码处理- 标注框是否符合标准:对标注目标有范围要求,比如小目标标注不要超出大目标标注的范围,有可能会标错,需要额外代码判断
- 图像是否标注:实际上还会发生有些图像没有标注的情况
关于Jpeg格式图像
问题
在实践过程中发现有些jpeg
图像会在LabelImg
中自动翻转90
度
解析
在网上查过资料后发现是由于EXIF元数据的关系,参考Jpeg图片旋转和Exif方向
带方向传感器的数码相机允许自动旋转肖像图像。不幸的是,对此功能的支持并不普遍或一致地应用
尝试了多种方式打开图像,发现确实没有普遍支持
- 支持
LabelImg
VSCode
- 不支持
Ubuntu 18.04
自带图像查看工具OpenCV cv2.imread
LabelMe
解决
可以使用工具exiftran
解析该属性,或者直接使用OpenCV
将JPEG
图像转换为PNG
图像即可(这样所见即所得)