YOLOv5与CVAT联合进行预标注并修正labels--[全网独家]

在网上一直没找到YOLOv5预标注+CVAT修正labels的方法,就自己摸索了,这里记录一下

目录

一、YOLOv5预标注

二、CVAT对预标注结果进行修正

1.将yolo预标注结果保存成可被cvat读取的格式

2.CVAT导入数据

3.完善标注

总结


一、YOLOv5预标注
 

yolov5在模型推理阶段,输入命令:

python detect.py --save-txt

即可获得默认设置下的预标注图像 + txt文件。

        该命令中save_txt选项用于生成结果的txt标注文件,会生成与图片相同文件名的txt检测框信息文件,每个txt文件会生成一行或多行的信息,一行信息对应一个label, 信息包括类别序号(第几类物体)、xcenter ycenter w h(label的中心坐标信息),label的长宽信息,均为归一化数值,如下图:

输入命令:

python detect.py --save-txt  --save-crop

即可获得默认设置下的预标注图像 + txt文件 + 被检物体的截取图像。

 也可以在指定其他信息:

 python detect.py

        --data waterpipe-electricwire.yaml        #指定yaml文件

        --weights last.pt        #权重文件

        --source home/images/        #图片读取位置

        --device 0

        --save-txt

        --save-crop

二、CVAT对预标注结果进行修正

需要安装cvat,还没安装的可以看我这篇博客,这里不展开说明:

CVAT安装及图片标注使用教程

1.将yolo预标注结果保存成可被cvat读取的格式

        创建一个自命名文件夹,自命名文件夹再创建一个obj_train_data文件夹、一个data文件、一个names文件、一个txt文件:

obj_train_data文件用来存放没有检测框的原图 + 被检测生成的txt文件     

这里有个问题要注意:有些图片在预训练时没有被检测到目标,所以没有生成对应的txt文件

而obj_train_data文件中的images和txt是要一一对应的

这就要我们提前手动剔除没有txt文件的图片   

 obj.data写入以下信息,classes = 1即我要检测的类别只有一个

 obj.names文件即是定义类别的具体名称,我这里只有一个

 train.txt文件存放所有图片的位置,但要注意,这里的位置信息不是绝对位置,而是

data/+相对路径

 生成这个信息的代码可以看我这篇博客:python输出文件的位置信息

运行代码会自动生成一个含有图片位置信息的train.txt文件,位于被测图片同级目录下,生成结果也会显示在终端:

2.CVAT导入数据

打开cvat,点击projects, 创建create a new project

项目随意命名,一定要注意的是,

constructor创建的标签名和上述obj.names文件定义类别的名称是一致的

subimt 后选择open project, 点击import dataset上传材料

 

选择yolo 1.1,将包含 obj_train_data、data文件、names文件、txt文件的压缩包上传

3.完善标注

 标注小技巧

  • 标注过程中的快捷键可以省很多力气,以下是比较常用的几个:
    • 保存: Ctrl + S
    • 删除: Delete
    • 缩放:鼠标滚轴,往上放大,向下缩小
    • 拖动:鼠标左键点击并拖动图片,调整位置
    • 下一帧:F
    • 上一帧:D
    • 向后跳十张: Shift+Ctrl + V
    • 向前跳十张: Shift+Ctrl + C
    • 复制框:Ctrl + C
    • 粘贴框:Ctrl + V
    • 重复上一次标注框参数:N,比如连续标一类头框,那么每次重复标时按N可以直接标下一个头框
    • 对选定对象连续标注接下来所有帧内此对象:Ctrl + B
    • 转换标签:Ctrl+(0..9)

更多使用方法看我的这篇博客: CVAT安装及图片标注使用教程_问题多多快快改的博客-CSDN博客


总结

这里只是简单介绍了yolo+cvat的联合使用,更多方法欢迎评论区留言讨论

你可能感兴趣的:(CVAT,yolo检测,python,开发语言)