背景说明
最近在做一个视频行为识别项目的时候,已经采集了视频样例片段,需要对视频的行为动作进行图片标注,自己很快完成了视频到图片的分割,在进行图片标注的时候,选用的标注工具是labelimg,由于视频转成图片后数量很多,所以在标注的时候一次没办法标注完成,选用的是YOLO标注格式,每一个目标对应一个类别。以1000张图片为例,假如说我要标注图片中,人、汽车、树木、狗、猫为标注对象,我第一天标注的200张,对应的标签是hand、car、tree、dog、cat、标注完成没有问题,默认生成了一个classes.txt文件。第二天标注的时候,我的标注对象还是昨天的那五类,对应的标签也没有改变,但是标注顺序和昨天不一样,我寻思,目标和标签用的字母都是一样的应该没事,实际上生成的classes.txt文件和昨天的内容顺序不一样,虽然也是五类,但是第一天是hand、car、tree、dog、cat,第二天的却变成了car、tree、car、cat,hand,很明显标签对应的序号改变了,训练的时候出现了问题,而且我在第二天打开labelimg进行标注的时候,确实是让我重新输入的标签,于是我就想着如何让labelimg每次标注的时候自动导入预设标签,这样就不会出现当需要多次标注的时候避免标签混乱的问题。
问题分析
网上有说可以在labelimg中的File--> Open Annotation 中进行导入,自己测试了一下,实际点击这个是没有反应的。
也有的说是版本问题,于是自己升级到labelimg的最新版本,也是没有用。
解决方法
经过研究发现,只有在labelimg的安装目录里面建立一个data文件夹,在文件夹里面导入预设标签文件predefined_classes.txt才可以实现。不同人的python环境安装路径可能有所差别,但是大同小异,我的目录如下,data文件夹本来是不存在的,是自己创建的。
然后导入自己预设的 predefined_classes.txt即可,后期如果有别的标注需要,适当修改里面的内容即可以。
如果是使用的anaconda的python环境,可以参考如下:
最后重启labelimg,在进行标注的时候发现,已经有预设值了。