做网站绿标,百度推广退款电话,钉钉付费版多少钱,百度收录方法文章目录 YOLOv5训练长方形图像详解一、引言二、数据集准备1、创建文件夹结构2、标注图像3、生成标注文件 三、配置文件1、创建数据集配置文件2、选择模型配置文件 四、训练模型1、修改训练参数2、开始训练 五、使用示例1、测试模型2、评估模型 六、总结 YOLOv5训练长方形图像详… 文章目录 YOLOv5训练长方形图像详解一、引言二、数据集准备1、创建文件夹结构2、标注图像3、生成标注文件 三、配置文件1、创建数据集配置文件2、选择模型配置文件 四、训练模型1、修改训练参数2、开始训练 五、使用示例1、测试模型2、评估模型 六、总结 YOLOv5训练长方形图像详解 一、引言
YOLOv5 是一种高效的目标检测算法广泛应用于各种图像识别任务。然而当处理长方形图像时可能会遇到一些特殊问题如图像尺寸不匹配、标注不准确等。本文将详细介绍如何在 YOLOv5 中训练长方形图像确保模型能够准确地检测和识别目标。
二、数据集准备
1、创建文件夹结构
首先需要在 YOLOv5 根目录下创建一个文件夹 VOCData并在其中创建以下子文件夹
images存放待标注的图像文件JPG格式。Annotations存放标注后的文件采用 XML 格式。
VOCData/
├── images/ # 存放图像文件
├── Annotations/ # 存放标注文件2、标注图像
使用在线标注工具如 MAKE SENSE 进行标注。标注完成后将标注文件保存为 XML 格式并存放在 Annotations 文件夹中。
3、生成标注文件
创建 voc_label.py 文件将训练集、验证集、测试集生成 YOLO 格式的标注文件并将数据集路径导入到 train.txt 和 val.txt 文件中。代码如下
import xml.etree.ElementTree as ET
import os
from os import getcwdsets [train, val, test]
classes [class1, class2] # 根据实际情况修改类别名称def convert(size, box):dw 1. / size[0]dh 1. / size[1]x (box[0] box[1]) / 2.0 - 1y (box[2] box[3]) / 2.0 - 1w box[1] - box[0]h box[3] - box[2]return x * dw, y * dh, w * dw, h * dhdef convert_annotation(image_id):in_file open(VOCData/Annotations/%s.xml % (image_id), encodingUTF-8)out_file open(VOCData/labels/%s.txt % (image_id), w)tree ET.parse(in_file)root tree.getroot()size root.find(size)w int(size.find(width).text)h int(size.find(height).text)for obj in root.iter(object):difficult obj.find(difficult).textcls obj.find(name).textif cls not in classes or int(difficult) 1:continuecls_id classes.index(cls)xmlbox obj.find(bndbox)b (float(xmlbox.find(xmin).text), float(xmlbox.find(xmax).text), float(xmlbox.find(ymin).text), float(xmlbox.find(ymax).text))b1, b2, b3, b4 bif b2 w:b2 wif b4 h:b4 hb (b1, b2, b3, b4)bb convert((w, h), b)out_file.write(str(cls_id) .join([str(a) for a in bb]) \n)in_file.close()out_file.close()wd getcwd()
for image_set in sets:if not os.path.exists(VOCData/labels/):os.makedirs(VOCData/labels/)image_ids open(VOCData/ImageSets/Main/%s.txt % (image_set)).read().strip().split()list_file open(VOCData/dataSet_path/%s.txt % (image_set), w)for image_id in image_ids:list_file.write(wd /VOCData/images/%s.jpg\n % (image_id))convert_annotation(image_id)list_file.close()三、配置文件
1、创建数据集配置文件
在 YOLOv5 目录下的 data 文件夹下新建一个 myvoc.yaml 文件内容如下
train: D:/Yolov5/yolov5/VOCData/dataSet_path/train.txt
val: D:/Yolov5/yolov5/VOCData/dataSet_path/val.txt# number of classes
nc: 2# class names
names: [class1, class2]确保路径和类别名称与实际情况一致。
2、选择模型配置文件
YOLOv5 有多种配置文件如 yolov5s.yaml、yolov5m.yaml、yolov5l.yaml 和 yolov5x.yaml。选择一个合适的配置文件例如 yolov5x.yaml并将其复制到 models 文件夹中重命名为 ddjc_model.yaml然后修改 nc 为实际的类别数。
四、训练模型
1、修改训练参数
在 train.py 文件中找到 def parse_opt(knownFalse) 函数修改训练参数。例如
parser argparse.ArgumentParser()
parser.add_argument(--weights, typestr, defaultyolov5x, helpinitial weights path)
parser.add_argument(--cfg, typestr, defaultROOT / models/ddjc_model.yaml, helpmodel.yaml path)
parser.add_argument(--data, typestr, defaultROOT / data/myvoc.yaml, helpdataset.yaml path)
parser.add_argument(--hyp, typestr, defaultROOT / data/hyps/hyp.scratch-low.yaml, helphyperparameters path)
parser.add_argument(--epochs, typeint, default50)
parser.add_argument(--batch-size, typeint, default16, helptotal batch size for all GPUs, -1 for autobatch)
parser.add_argument(--imgsz, --img, --img-size, typeint, default640, helptrain, val image size (pixels))
parser.add_argument(--rect, actionstore_true, helprectangular training)
parser.add_argument(--device, defaultcuda, helpcuda device, i.e. 0 or 0,1,2,3 or cpu)2、开始训练
在终端中运行以下命令开始训练
python train.py --img 640 --batch 16 --epochs 50 --data data/myvoc.yaml --cfg models/ddjc_model.yaml --weights yolov5x.pt --name ddjc_model五、使用示例
1、测试模型
训练完成后可以使用 detect.py 文件进行测试。例如
python detect.py --weights runs/train/ddjc_model/weights/best.pt --img 640 --conf 0.25 --source data/images2、评估模型
使用 val.py 文件评估模型性能
python val.py --weights runs/train/ddjc_model/weights/best.pt --data data/myvoc.yaml --img 640六、总结
本文详细介绍了如何在 YOLOv5 中训练长方形图像包括数据集准备、标注、配置文件设置和模型训练。通过这些步骤可以确保模型能够准确地检测和识别长方形图像中的目标。希望本文对您有所帮助。 版权声明本博客内容为原创转载请保留原文链接及作者信息。
参考文章
Yolov5训练自己的数据集详细完整版_yolov5缔宇-CSDN博客如何制作数据集并基于yolov5训练成模型并部署