YOLO 家族全新一代 YOLO v13 上手使用及微调实验

一、YOLO v13

YOLOv13YOLO系列最新发布的目标检测模型,代表了当前目标检测技术的最新发展成果。它不仅继承了YOLO系列的速度与精度平衡优势,还在多个方面进行了显著创新。例如:在主流 的MS COCO数据集上,YOLOv13-NmAP 达到 41.6%,相较 YOLOv12-N 提升了 1.5%。其Nano版本仅需6.4G FLOPs即可达到41.6%mAPCPU推理速度最快可达25FPS,展现出极强的实时性和高精度。

在这里插入图片描述

在这里插入图片描述

YOLOv13 的本次创新是引入了超图自适应相关增强机制(HyperACE),通过可学习的超边构建方式,帮助模型识别多个物体之间的复杂潜在关系。这种机制突破了传统卷积和自注意力只能处理局部关联的限制,实现了从“点对点”到“多对多”的语义建模,使得模型在复杂场景中能够更好地理解物体之间的组合关系。

并且还采用了全流程信息分发范式,将超图增强后的特征分配到模型的各个部分(BackboneNeckHead),从而实现更细致的特征融合与信息传递。这种设计不仅提升了特征表示能力,还增强了模型在多尺度目标检测中的表现。

更多介绍可关注官方 Github

https://github.com/iMoonLab/yolov13

在模型上 V13 和之前的版本类似,包括不同大小的模型,从小到大包括:

  • YOLOv13-N:用于资源极其有限环境的纳米版本。
  • YOLOv13-S:兼顾速度和精度的小型版本。
  • YOLOv13-L:大型版本,精度更高,但计算资源增加。
  • YOLOv13-X:超大型版本可实现最高精度和性能。

权重可在 Github 中下载。

快速使用

拉取 Github 源码:

git clone https://github.com/iMoonLab/yolov13.git

安装依赖:

python 版本需要 3.11 以上

wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3+cu11torch2.2cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -e .
pip install thop

在这里插入图片描述

这里使用 YOLOv13-N 模型进行测试:

from ultralytics import YOLO

model = YOLO('yolov13n.pt')
results = model.predict('./img/1.png')
results[0].show()

在这里插入图片描述

二、微调训练

数据集使用本专栏前面实验 YOLO-V10 时标注的人脸数据集, 这里你可以收集一些自定义的图片,然后根据下面文章中介绍的方式进行标注:

基于 YOLO V10 Fine-Tuning 训练自定义的目标检测模型

微调训练,其中 face.yaml 文件内容和上面文章 YOLO-V10 时的一致:

from ultralytics import YOLO

# 加载模型
model = YOLO('yolov13n.pt')

# 训练
model.train(
    data='face.yaml', # 训练配置文件
    epochs=100, # 训练的周期
    imgsz=640, # 图像的大小
    device=[0], # 设备,如果是 cpu 则是 device='cpu'
    workers=0,
    lr0=0.001, # 学习率
    batch=8, # 批次大小
    amp=False # 是否启用混合精度训练
)

运行后可以看到打印的网络结构:

在这里插入图片描述

训练过程:

在这里插入图片描述

训练结束后可以在 runs 目录下面看到训练的结果:

在这里插入图片描述

weights 下面是训练后保存的模型,results.png 为训练时 loss 的变化图:

在这里插入图片描述

五、模型测试

runs\detect\train\weights 下可以看到 best.ptlast.pt 两个模型,表示最佳和最终模型,下面使用 best.pt 模型进行测试

from ultralytics import YOLO
from matplotlib import pyplot as plt
import os
plt.rcParams['font.sans-serif'] = ['SimHei']

# 测试图片地址
base_path = "test"
# 加载模型
model = YOLO('runs/detect/train/weights/best.pt')
for img_name in os.listdir(base_path):
    img_path = os.path.join(base_path, img_name)
    image = plt.imread(img_path)
    # 预测
    results = model.predict(image, device=[0])
    boxes = results[0].boxes.xyxy
    confs = results[0].boxes.conf

    ax = plt.gca()
    for index, boxe in enumerate(boxes):
        x1, y1, x2, y2 = boxe[0], boxe[1], boxe[2], boxe[3]
        score = confs[index].item()
        ax.add_patch(plt.Rectangle((x1, y1), (x2 - x1), (y2 - y1), linewidth=2, fill=False, color='red'))
        plt.text(x=x1, y=y1-10, s="{:.2f}".format(score), fontsize=15, color='white',
                 bbox=dict(facecolor='black', alpha=0.5))
    plt.imshow(image)
    plt.show()

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小毕超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值