如何用YOLOv12训练自定义目标检测教程(手把手教你训练自己的yolo模型-适合小白入门)

基于YOLOv11的自定义目标检测教程

本教程将指导您使用Ultralytics的YOLOv11 Nano模型创建一个用于检测猫眼的自定义目标检测器。我们将涵盖从数据收集和标注到微调预训练YOLOv11 Nano模型的完整流程。

环境设置

首先,创建一个Python 3.9的conda环境:

conda create -n yolov11 python=3.9
conda activate yolov11

安装必要的包:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install ultralytics
pip install opencv-python
数据集准备
  1. 收集图像
    我从互联网上收集了猫的图像。

  2. 标注图像
    使用LabelImg工具对图像进行标注。免费标注软件

在这里插入图片描述

  1. 数据集结构
    数据集文件夹结构如下:

    dataset/
    ├── train/
    │   ├── images/
    │   └── labels/
    ├── valid/
    │   ├── images/
    │   └── labels/
    └── test/
        ├── images/
        └── labels/
    

    images/ 包含 .jpg 图像文件。
    labels/ 包含 YOLO 格式的 .txt 文件,存储边界框坐标。

  2. 标签格式
    每个 .txt 文件对应一张图像,包含 YOLO 格式的边界框坐标。例如:

    ## class_id x_center y_center width height
    0 0.532 0.654 0.120 0.098
    1 0.412 0.389 0.095 0.077
    

    所有值归一化到 0 到 1 之间,class_id 表示对象类别(例如,0 表示猫眼)。

  3. data.yaml 文件
    定义数据集路径和类别名称:

    train: ./dataset/train/images
    val: ./dataset/valid/images
    test: ./dataset/test/images
    
    nc: 1  # 类别数量
    names: ['cateyes']
    
训练YOLOv11 Nano模型

修改并使用以下脚本(train.py)训练模型:

from ultralytics import YOLO

# 加载模型
if __name__ == '__main__':
    model = YOLO("yolo11n.pt")  # 使用YOLOv11 Nano模型
    data_path = r"F:/path/to/dataset/data.yaml"  # data.yaml路径

    # 训练模型
    train_results = model.train(
        data=data_path,   # 数据集YAML
        epochs=100,       # 训练轮数
        imgsz=640,        # 图像尺寸
        device=0          # GPU设备(0)或'cpu'
    )

训练完成后,模型将保存在 ./runs 文件夹中。
在这里插入图片描述

测试模型

训练完成后,运行以下脚本(test.py)进行推理:

from ultralytics import YOLO
import torch

# 检查GPU可用性
print("GPU available: ", torch.cuda.is_available())

# 加载训练好的模型
checkpoint = "./runs/detect/train/weights/best.pt"
input_image = "./dataset/test/images/image (95).jpg"
model = YOLO(checkpoint)

# 运行检测
results = model(source=input_image, conf=0.3, show=True, save=True)

# 打印结果
print('Results: ', results)
print('Boxes: ', results[0].boxes)
print('Done!')

conf=0.3 设置置信度阈值。
show=True 显示检测结果图像。
save=True 将结果保存到磁盘(默认路径:./runs/detect/predict)。
在这里插入图片描述

导出模型为ONNX格式

如果需要将训练好的模型导出为ONNX格式,可以使用以下代码:

path = model.export(format="onnx")  # 返回导出模型的路径

在这里插入图片描述

YOLOv11模型对比

以下是YOLOv11系列模型的性能对比:

模型尺寸(像素)mAPval 50-95CPU ONNX速度(ms)T4 TensorRT10速度(ms)参数量(M)FLOPs(B)
YOLO11n64039.556.1 ± 0.81.5 ± 0.02.66.5
YOLO11s64047.090.0 ± 1.22.5 ± 0.09.421.5
YOLO11m64051.5183.2 ± 2.04.7 ± 0.120.168.0
YOLO11l64053.4238.6 ± 1.46.2 ± 0.125.386.9
YOLO11x64054.7462.8 ± 6.711.3 ± 0.256.9194.9

更多使用示例请参考Detection Docs,这些模型已在COCO数据集上预训练,包含80个预训练类别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值