知方号

知方号

自动标注软件X<图的标注格式怎么设置出来>

自动标注软件X

最近需要标注一批单目标检测的数据集,但是手动标注实在太麻烦了,最终发现一款超级好用的标注标注软件:X-AnyLabeling。不仅支持多种格式,多种标注方式,还提供了许多模型。

在使用自动标注的前提是拥有一个自己已经训练好的模型权重文件或者直接使用该软件再github上已经存在的各种模型的预训练权重文件,最后都要将他们转换为onnx文件以供软件的自动检测标注。

GitHub源码地址:https://github.com/CVHub520/X-AnyLabeling 安装方式: 1.直接通过Releasean安装:https://github.com/CVHub520/X-AnyLabeling/releases/tag/v1.1.0

根据自己的系统选择CPU还是GPU推理以及Linux或者win系统。

2.clone源码后采用终端运行

在项目中打开终端安装所需的环境依赖:

pip install -r requirements.txt

安装完成后运行app.py

python anylabeling/app.py

注意: 一开始我也是采用直接下载的exe文件打开标注,但是我在配置好自定义模型后开启自动标注会环境报错,原因是还有一些必需的依赖没有安装(官方也建议采用下载源码终端运行,方便查看报错)

自动标注: 1.打开文件夹,修改输出文件夹

这里我的标注任务为普通的单目标检测,只需要输出一个类别 点击打开文件夹选择自己数据集文件夹,修改输出目录,选择自己想输出的目录文件夹(如果不修改输出文件夹自动保存在数据集文件夹中)

2.增添标签类别

和普通的标注类似,只需要将标签类型加上就行了

3.(重点)构建自己的模型 点击这个AI图标,编辑下面会出现选择模型 打开可以看见有很多供选择的模型 X-AnyLableing里面是自带很多模型的供我们选择的,但是这里我需要标注的目标并不在常见物体中,所以我需要构建自己的标注模型

这里我采用的是yolov5s 6.0版本,因为之前需要已经训练好了一个小数据集的模型 X-AnyLabeling里面采用的是读取yaml文件和加载onnx文件的方式加载自定义模型

普通的pt文件不行,一定要转onnx文件,yolov5 6.0以上可以通过里面的export.py文件直接将pt文件转onnx文件

先配置yaml文件 官方文档里面的模板为: 下面是对参数的解析: 更为细致的解析可以直接参考官方文档:https://github.com/CVHub520/X-AnyLabeling/blob/v1.1.0/docs/custom_model.md

根据自己的需求最后配置的自己的yaml文件为:

将onnx文件和yaml文件放一起 随后选择自己的模型就可以了 之前已经搞好了标签就可以按自己想法开始自动标注,点击这个播放按钮 这个自动标注的好坏和自己的模型准确度还是很大的关系,建议自己检查再手动调整一下,反正缩短了一大半的时间 格式转换:

作者言:

#=============================================================================== Usage ================================================================================###---------------------------------------------------------------------------- custom2voc -----------------------------------------------------------------------------## python tools/label_converter.py --task rectangle --src_path custom_folder --dst_path voc_folder --mode custom2voc##---------------------------------------------------------------------------- voc2custom -----------------------------------------------------------------------------## python tools/label_converter.py --task rectangle --src_path voc_folder --img_path img_folder --mode voc2custom##---------------------------------------------------------------------------- custom2yolo ----------------------------------------------------------------------------## python tools/label_converter.py --task rectangle --src_path custom_folder --dst_path yolo_folder --classes xxx.txt --mode custom2yolo# python tools/label_converter.py --task polygon --src_path custom_folder --dst_path yolo_folder --classes xxx.txt --mode custom2yolo ##---------------------------------------------------------------------------- yolo2custom ----------------------------------------------------------------------------## python tools/label_converter.py --task rectangle --src_path yolo_folder --img_path img_folder --classes xxx.txt --mode yolo2custom# python tools/label_converter.py --task polygon --src_path yolo_folder --img_path img_folder --classes xxx.txt --mode yolo2custom##---------------------------------------------------------------------------- custom2coco ----------------------------------------------------------------------------## python tools/label_converter.py --task rectangle --src_path custom_folder --dst_path coco_folder --classes xxx.txt --mode custom2coco ##---------------------------------------------------------------------------- coco2custom ----------------------------------------------------------------------------## python tools/label_converter.py --task rectangle --src_path coco.json --img_path img_folder --mode coco2custom# python tools/label_converter.py --task polygon --src_path coco.json --img_path img_folder --mode coco2custom##---------------------------------------------------------------------------- custom2dota ----------------------------------------------------------------------------## python tools/label_converter.py --task rotation --src_path dota_image_folder --dst_path save_folder --mode custom2dota##---------------------------------------------------------------------------- dota2custom ----------------------------------------------------------------------------## python tools/label_converter.py --task rotation --src_path dota_label_folder --img_path dota_image_folder --mode dota2custom##---------------------------------------------------------------------------- dota2dcoco ----------------------------------------------------------------------------## python tools/label_converter.py --task rotation --src_path dota_label_folder --dst_path xxx.json --img_path dota_image_folder --classes xxx.txt --mode dota2dcoco##---------------------------------------------------------------------------- dcoco2dota ----------------------------------------------------------------------------## python tools/label_converter.py --task rotation --src_path xxx.json --dst_path dota_folder --mode dcoco2dota##=============================================================================== Usage ================================================================================#

注意:

目前 --task 支持的任务有 [‘rectangle’, ‘polygon’] 即矩形框和多边形框两种,其中多边形框任务只提供 yolo 和 custom 之间的互相转换,方便大家训练检测和分割任务。至于其它的任务,如关键点等,可以参考下脚本自行修改适配下。

此处 --classes 参数指定的 *.txt 文件是用户预定义的类别文件,每一行代表一个类别,类别编号按从上到下的顺序编排,可参考 assets 目录下的 classes.txt。

这里我们是将custom格式转化yolo格式,创建一个我的标签txt文件 放到输出yolo标签的文件夹中终端输入命令

src_path:输出的json格式(转化前)标签路径dst_path:转化后yolo格式标签路径classes:分类

最后成功!

遇到的一个问题

因为我采用的半精度训练模型导出onnx文件,我使用自定模型时虽然导入成功但是一直不画框,随后去终端看发现一直报错半精度的问题 查看了一圈文档也没发现解决方案,无奈之下联系了软件官方人员最后给出了解决方案:

我懒得重新导出所以采用的第二种方案 至此问题解决

不得不说作者回应是真的很快,几乎是秒回我,不过官方给的结论是 最好不要修改基类,不然会影响其他的程序

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。