这是基于 labelImg与 YOLOv5 的半自动标注工具,通过现有的YOLOv5 PyTorch模型对数据集进行半自动标注。
原理:使用在 VOC 数据集训练好的 YOLOv5 模型,在你的数据集上进行推理,生成标签。
实际上:需要自己先标注一部分数据,训练一个基本的模型,然后使用这个模型帮我们标注,提高标注效率,类似半监督。
具体的使用方法大致如下,大家也可以进入项目仓库直接看readme
1.从 git 中获取项目
git clone https://github.com/cnyvfang/labelGo-Yolov5AutoLabelImg.git
2.切换操作目录到工程目录
cd labelGo-Yolov5AutoLabelImg
3.虚拟环境配置
使用anaconda进行安装,不需要单独安装cuda和cudnn,conda会下载并安装好,不需要考虑版本依赖的问题,简便的地方就是这里了。
创建虚拟环境
conda create -n Autolabel python=3.7.6
conda activate Autolabel
pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
先注释掉 requirements.txt文件里的 torch>=1.7.0和 torchvision>=0.8.1 上一步已经单独安装
pip install -r requirements.txt
pip install Ipython
4.替换类别
将目录中的/data/predefined_classes.txt文件的内容修改为你自己的类别
5.labelGo文件修改
报错:执行labelGo的Auto Label功能会出现 Can't get attribute 'DetectionModel' on <module 'models.yolo'>”错误问题
进行修改:
a.将进行训练自己标注的数据的yolov5文件里的utils文件拷贝到labelGo-Yolov5AutoLabelImg-5_v5_source文件夹里。
b.将yolov5/mode文件夹里的yolo.py,拷贝到labelGo-Yolov5AutoLabelImg-5_v5_source/libs/models
6.使用labelGo的AutoLabel功能
运行labelGo
python labelGo.py
点击 打开目录,导入待标注图片的文件夹
点击 自动标注,提示此操作将会清除所有的原有标注文件,点击Yes以选择YOLOv5权重并继续,点击Yes
选择训练好的YOLOv5模型best.pt。
成功完成标注
7. 问题记录
上面执行完倒是可以调起来yolo5了, 但是发现新问题:
点击"auto lable",选择train.py训练好的权重文件".pt"后,报错如下:
看起来从权重里拿到的label序号之类的是数字类型, 但是这里在用+运算符去加str类型的换行符, 懒得深究了,临时改了下libs/autoLabeler.py第65行,顺利跑起来了..如下