作者:CSDN @ _养乐多_
本文将介绍如何使用python语言和 ultralytics 库训练自己的数据集,并进行 YOLO 目标检测模型训练和推理的代码。
文章目录
- 一、样本数据集准备
 - 1.1 标注工具
 - 1.2 数据集格式
 - 1.2.1 图片和标签数据集制作
 - 1.2.2 data.yaml制作
 
- 二、模型训练
 - 三、图片推理
 
一、样本数据集准备
1.1 标注工具
labelimg 、labelme 、VIA 都可以
 
1.2 数据集格式
本文直接采用YOLO数据集格式进行示例,
1.2.1 图片和标签数据集制作
YOLO数据集文件结构如下:
/dataset
    /images
    	/train
	        image1.jpg
	        image2.jpg
	        ...
	    /val
	    	image11.jpg
	        image21.jpg
	        ...
    /labels
        /train
	        image1.txt
	        image2.txt
	        ...
	    /val
	        image11.txt
	        image21.txt
	        ...
 
数据集文件夹如下,
 
images里面的文件夹如下,train和val里面全是图片。图片格式可以是JPEG、PNG。
 
 
 
txt中的内容如下图所示,格式为class-id x y width height,代表
- class_id: 类别ID,从0开始,自己定义
 - center_x:边界框中心的x坐标,相对于图像宽度进行归一化(值在0到1之间)
 - center_y:边界框中心的y坐标,相对于图像高度进行归一化(值在0到1之间)
 - width:边界框的宽度,相对于图像宽度进行归一化(值在0到1之间)
 - height:边界框的高度,相对于图像高度进行归一化(值在0到1之间)
 
 
1.2.2 data.yaml制作
写一个data.yaml文件,并保存。
train: E:\\\\images\\train # 训练数据集路径
val: E:\\images\\val # 验证数据集路径
nc: 1  # 类别数量
names: ['bus'] # 类别名字
 
注意:labels为啥没有路径,因为它可以自己识别,只要和images同级目录就行。
二、模型训练
from ultralytics import YOLO
if __name__ == '__main__':
    # 加载模型
    model = YOLO("yolov8n.pt")  # 加载一个预训练模型(推荐使用预训练模型用于训练)
    # 训练
    model.train(data="data.yaml", epochs=3, workers=0)  # 使用单进程数据加载训练模型
    
    # 验证
    metrics = model.val()  # 评估模型在验证集上的性能
    
    # 保存模型
    path = model.export(format="onnx")  # 将模型导出为ONNX格式
 
三、图片推理
from ultralytics import YOLO
# 加载训练好的模型
model = YOLO("./runs/detect/train40/weights/best.pt")
# 读取图片
image_path = "./images/train/0001.jpg"
model.predict(image_path, imgsz=640, save=True, device=0)
 
测试图片,
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=



















