安徽网站关键词优化,电子商务网站建设与管理程序设计题,WordPress的网外无法访问,横向网站源码文章目录 一、意义二、修改源码获取三、自动标注前期准备四、开始自动标注五、可视化标注效果六、XML转换TXT 一、意义
通过界面化操作YOLOv5完成数据集的自动标注的意义在于简化数据标注的流程#xff0c;提高标注的效率和准确性。
传统的数据集标注通常需要手动绘制边界框… 文章目录 一、意义二、修改源码获取三、自动标注前期准备四、开始自动标注五、可视化标注效果六、XML转换TXT 一、意义
通过界面化操作YOLOv5完成数据集的自动标注的意义在于简化数据标注的流程提高标注的效率和准确性。
传统的数据集标注通常需要手动绘制边界框或标记关键点这个过程费时费力且容易出错。而通过界面化操作YOLOv5完成数据集的自动标注可以实现自动识别目标并生成标注结果极大地减轻了标注人员的工作负担。
界面化操作YOLOv5完成数据集的自动标注还可以提高标注的准确性。由于YOLOv5是一种基于深度学习的目标检测算法其具有较高的检测准确率和鲁棒性。通过使用YOLOv5进行自动标注可以减少人为因素对标注结果的影响提高标注的一致性和准确性。
此外界面化操作YOLOv5完成数据集的自动标注还可以加速标注的速度。YOLOv5可以快速地对图像进行目标检测自动生成标注结果。相比于手动标注自动标注可以大大减少标注的时间成本提高数据集的制作效率。
总的来说通过界面化操作YOLOv5完成数据集的自动标注可以简化标注流程、提高标注准确性和加速标注速度对于大规模数据集的制作和实时应用具有重要意义。
二、修改源码获取
获取链接下载点击
三、自动标注前期准备
annotions里面为空用于存放标注后的标签文件coco128通过下载coco128数据集并将其转换为YOLO可运行的文件夹 images train2017用于存放coco128的图片文件 labels train2017用于存放coco128的TXT标签文件 images存放想要标注的图片文件coco128.yamldetector_classes.txt用于存放想要打标签的类别信息yolov5s.pt 官方下载的对应YOLOv5的权重文件可根据自己实际情况进行更换labels用与存放将XML转换成TXT的文件 四、开始自动标注
第一步下载修改后源码通过Pycharm打开
第二步通过Anaconda配置好YOLOv5的依赖环境
第三步运行detect_auto.py 第四步选择好对应的文件路径一步一步点击选择好的界面如下 第五步点击开始自动标注如果看到以下界面说明是没问题的 第六步检查对应标签文件
五、可视化标注效果
第一步通过cmd输入labelImg打开标注界面 第二步把TXT标注文件和拷贝到图像所在文件夹下把classes.txt也拷过来.然后在labelimg里opendirlabelimg里显示看到当时标注的矩形框了
六、XML转换TXT
将我们标注后的XML文件以及结合原图片将其转换为可用于YOLO训练的TXT文件后续可更方便调用数据集来进行训练。
修改两个路径xml文件地址和创建保存txt文件的地址
import os
import xml.etree.ElementTree as ET# xml文件存放目录(修改成自己的文件名)
input_dir rE:\auto_label\annotation# 输出txt文件目录自己创建的文件夹
out_dir rE:\auto_label\labelsclass_list []# 获取目录所有xml文件
def file_name(input_dir):F []for root, dirs, files in os.walk(input_dir):for file in files:# print file.decode(gbk) #文件名中有中文字符时转码if os.path.splitext(file)[1] .xml:t os.path.splitext(file)[0]F.append(t) # 将所有的文件名添加到L列表中return F # 返回L列表# 获取所有分类
def get_class(filelist):for i in filelist:f_dir input_dir \\ i .xmlin_file open(f_dir, encodingUTF-8)filetree ET.parse(in_file)in_file.close()root filetree.getroot()for obj in root.iter(object):cls obj.find(name).textif cls not in class_list:class_list.append(cls)def ConverCoordinate(imgshape, bbox):# 将xml像素坐标转换为txt归一化后的坐标xmin, xmax, ymin, ymax bboxwidth imgshape[0]height imgshape[1]dw 1. / widthdh 1. / heightx (xmin xmax) / 2.0y (ymin ymax) / 2.0w xmax - xminh ymax - ymin# 归一化x x * dwy y * dhw w * dwh h * dhreturn x, y, w, hdef readxml(i):f_dir input_dir \\ i .xmltxtresult outfile open(f_dir, encodingUTF-8)filetree ET.parse(outfile)outfile.close()root filetree.getroot()# 获取图片大小size root.find(size)width int(size.find(width).text)height int(size.find(height).text)imgshape (width, height)# 转化为yolov5的格式for obj in root.findall(object):# 获取类别名obj_name obj.find(name).textobj_id class_list.index(obj_name)# 获取每个obj的bbox框的左上和右下坐标bbox obj.find(bndbox)xmin float(bbox.find(xmin).text)xmax float(bbox.find(xmax).text)ymin float(bbox.find(ymin).text)ymax float(bbox.find(ymax).text)bbox_coor (xmin, xmax, ymin, ymax)x, y, w, h ConverCoordinate(imgshape, bbox_coor)txt {} {} {} {} {}\n.format(obj_id, x, y, w, h)txtresult txtresult txt# print(txtresult)f open(out_dir \\ i .txt, a)f.write(txtresult)f.close()# 获取文件夹下的所有文件
filelist file_name(input_dir)# 获取所有分类
get_class(filelist)# 打印class
print(class_list)# xml转txt
for i in filelist:readxml(i)# 在out_dir下生成一个class文件
f open(out_dir \\classes.txt, a)
classresult
for i in class_list:classresult classresult i \n
f.write(classresult)
f.close()