YOLOv5进行半自动标注

背景:想利用自己收集的一些图片制作数据集进行训练,但是有8000多张,而且都是常见的检测出人就可以,所以想着利用YOLOv5的detect.py以及YOLOv5的原始权重YOLOv5s.pt进行半自动标注。

命令行:

python3 detect.py --weights weights/yolov5s.pt --source data/detect --classes 0 --device 0 --save-txt

(1) --weights weights/yolov5s.pt

          采用YOLOv5自带的权重yolov5s.pt,检测人的效果会好一点,如果自己训练的权重也很好,也可以用自己的;

(2)--source data/detect

          这里放入想要标注的图片;

(3)--classes 0

         YOLOv5的权重可以检测80个类,但是我们只想让它把我们给的图片中的人检测出来,而人在YOLOv5的80个类中是第一位,所以这里采用--classes 0

(4)--device 0

         采用哪一块GPU的训练,我们这里采用第一块;

(5)--save-txt

         将预测的框坐标以txt文件形式保存。

效果图

 

 

 如果你的原始图片上也有txt标签,这就需要将两个txt文档进行合并

可借鉴如下代码:

import os



def concattxt(path1,path2):
        num = 0
        pathdir1 = os.listdir(path1)#获取第一部分txt文件夹中的文件列表

        for txtname in pathdir1:
                #name1 = os.path.splitext(txtname)[0]#获取当前txt文件名字
                #txtfile1 = open(txtpath1+name1, "rb")
                #txtfile2 = open(txtpath2+name1, "rb")
                txtfilepath1 = path1+txtname
                txtfilepath2 = path2+txtname
                txt1 = open(txtfilepath1,'a+', encoding='utf-8')
                if os.path.exists(txtfilepath2):
                        num = num+1
                        with open(txtfilepath2, 'r', encoding='utf-8') as txt2:
                                #txt1.write('\n')
                                for i in txt2:
                                         txt1.write(i)
        print('the concat txt num is:',num)


if __name__ == '__main__':
    txtpath1 = ''
    txtpath2 = ''
    concattxt(txtpath1,txtpath2)
 
 

如果你想将生成的txt转化为xml,可借鉴这个博客:

yolov5实现半自动化标注/预标注 & txt to xml_国服最强貂蝉的博客-CSDN博客_yolov5 标注

参考文献:

python根据yolov5检测得到的txt文件,截取目标框图片并保存_深度学习菜鸟的博客-CSDN博客

python合并两个txt文件内容-yolo格式数据_小俊俊的博客的博客-CSDN博客

yolov5实现半自动化标注/预标注 & txt to xml_国服最强貂蝉的博客-CSDN博客_yolov5 标注

猜你喜欢

转载自blog.csdn.net/weixin_52950958/article/details/126487705