目标检测作为计算机视觉领域的核心任务之一,旨在识别图像或视频中的目标物体,并确定它们的位置,以边界框(Bounding Box)的形式呈现。这一技术广泛应用于自动驾驶、安防监控、工业检测、图像检索等众多领域。例如,在自动驾驶中,目标检测帮助车辆识别道路上的行人、车辆、交通标志等,为安全行驶提供关键信息;安防监控领域,通过目标检测可以实时监测异常行为,保障公共安全。
YOLO(You Only Look Once)系列在目标检测领域占据着重要地位,凭借其出色的速度与精度平衡,成为实时目标检测的标杆。YOLO 的发展历程见证了目标检测技术的不断演进。从早期的 YOLOv1 将目标检测视为单次回归问题,实现端到端的快速检测,开启了实时目标检测的新篇章;到 YOLOv2 引入锚框(anchor-based predictions)和 DarkNet-19 骨干网络,有效提升检测精度;YOLOv3 采用更深的 DarkNet-53 骨干网和三尺度预测,显著增强对小目标的检测能力;再到后续版本不断集成 CSP(Cross Stage Partial)、SPP(Spatial Pyramid Pooling)、PANet 等先进技术,逐渐采用无锚框(anchor-free)检测头,以及融入注意力机制等,持续优化模型性能,在速度和精度上取得更好的平衡。
在 MS COCO 数据集上,YOLOv13 展现出了卓越的性能优势。与其他 YOLO 版本相比,在参数量和计算量(FLOPs)略低于前代版本的情况下,多项检测指标显著提升。以小模型为例,YOLOv13-N 的参数量为 2.5M,FLOPs 为 6.4G,mAP₅₀:₉₅达到了 41.6% ,AP₅₀为 57.8%,AP₇₅为 45.1%;而 YOLOv12-N 参数量为 2.6M,FLOPs 为 6.5G,mAP₅₀:₉₅为 40.1% ,AP₅₀为 56.0%,AP₇₅为 43.4%;YOLOv8-N 参数量 3.2M,FLOPs 为 8.7G,mAP₅₀:₉₅仅 37.4% ,AP₅₀为 52.6%,AP₇₅为 40.5%。可以看出,YOLOv13-N 在参数量和计算量更低的情况下,mAP₅₀:₉₅比 YOLOv12-N 提升了 1.5%,比 YOLOv8-N 提升了 4.2% ,在小模型上优势明显。在 Small 模型上,YOLOv13-S 同样表现出色,在检测精度上相较于其他版本也有显著提升,尽管由于超图计算引入额外开销,导致延迟略有增加,但整体性能的提升使其在实际应用中仍具有很大的优势。
运行 YOLOv13 需要具备一定的硬件配置和操作系统条件。硬件方面,建议使用具有 NVIDIA GPU 的计算机,以充分发挥模型的性能优势。例如,NVIDIA GeForce RTX 30 系列及以上的显卡能够提供较为出色的计算能力,满足模型对大量数据的快速处理需求。同时,至少配备 16GB 的内存,以确保系统在处理图像数据和运行模型时的流畅性,避免因内存不足导致程序运行缓慢或崩溃。对于存储,拥有 50GB 以上的可用硬盘空间是必要的,这用于存储 YOLOv13 的代码、预训练模型、数据集以及训练过程中产生的中间文件和结果文件等。
操作系统方面,支持 Windows 10 及以上版本、Ubuntu 18.04 及以上版本。Windows 系统以其友好的用户界面和广泛的软件兼容性,为初学者和日常使用提供了便利;Ubuntu 系统则在深度学习领域备受青睐,其开源特性、良好的命令行支持以及对各种深度学习框架的优化,使得它成为专业开发者的常用选择。
conda create -n yolov13_env python=3.11
conda activate yolov13_env
进入 PyTorch 官方网站,根据你的 CUDA 版本、Python 版本等选择合适的安装命令。例如,如果你的 CUDA 版本是 11.7,安装命令可能为:
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
执行上述命令,等待安装完成。安装完成后,可在 Python 环境中验证 PyTorch 是否安装成功,进入 Python 交互环境,输入import torch,若没有报错,说明 PyTorch 安装正确,还可以进一步检查 GPU 是否可用,输入torch.cuda.is_available(),返回True则表示 GPU 可以正常被 PyTorch 调用。
pip install numpy opencv - python matplotlib
如果项目依赖文件requirements.txt,可在激活的虚拟环境中执行以下命令安装所有依赖:
pip install -r requirements.txt
安装过程中,pip会自动下载并安装所需的包及其依赖项。安装完成后,这些包将用于数据处理、图像显示、模型训练和推理等各个环节,确保 YOLOv13 能够正常运行。
获取 YOLOv13 的源代码是安装的首要步骤,这将为后续的环境搭建和模型使用提供基础。我们从官方 GitHub 仓库获取源码,其地址为:https://github.com/iMoonLab/yolov13 。
具体下载方法有两种:
git clone https://github.com/iMoonLab/yolov13.git
Git 会自动将远程仓库的代码克隆到本地指定目录,这种方式的优势在于方便后续更新代码,通过git pull命令即可获取最新的代码更新。
conda create -n yolov13_env python=3.11
创建过程中,conda 会提示你确认安装的软件包及其版本,输入y并回车,等待环境创建完成。
conda activate yolov13_env
激活成功后,命令行提示符会显示当前激活的环境名称(yolov13_env) 。
pip install -r requirements.txt
安装过程中,pip 会根据requirements.txt中的依赖列表,自动下载并安装所需的 Python 包,如numpy、opencv - python、matplotlib、torch、torchvision等。这些包分别用于数值计算、图像处理、数据可视化以及深度学习框架等功能。
安装完成后,需要验证 YOLOv13 是否成功安装。在激活的yolov13_env虚拟环境中,进入 Python 交互环境,执行以下命令:
from ultralytics import YOLO
model = YOLO('yolov13n.pt')
results = model.predict(source='path/to/your/image.jpg')
上述代码中,首先从ultralytics库中导入YOLO类,然后加载预训练的yolov13n.pt模型(这里以 Nano 版本为例,你也可以根据需要替换为其他版本模型),最后使用模型对指定路径下的图像进行目标检测。如果代码能够顺利执行,没有报错,并且成功输出检测结果,如检测到的目标类别、边界框坐标、置信度等信息,则说明 YOLOv13 安装成功 。若出现报错信息,可根据错误提示检查依赖安装、环境配置等步骤是否正确,常见问题如依赖包版本不兼容、环境变量配置错误等,可通过查阅相关文档或在社区寻求帮助来解决。
在使用 YOLOv13 进行实际应用前,对模型进行验证是确保其性能可靠的关键步骤。通常,我们会在 COCO 数据集上进行验证,以评估模型的准确性和泛化能力。首先,确保你已经下载并解压了 COCO 数据集,将其放置在合适的目录,如D:\datasets\coco 。数据集目录结构应包含train2017、val2017、annotations等文件夹,其中annotations文件夹下包含instances_train2017.json和instances_val2017.json等标注文件。
验证代码如下:
from ultralytics import YOLO
# 加载模型,这里以YOLOv13-Nano为例,可根据需求替换
model = YOLO('yolov13n.pt')
# 在COCO验证集上进行验证
results = model.val(data='D:\datasets\coco\coco.yaml', # COCO数据集配置文件路径
batch=16, # 批处理大小,可根据GPU显存调整
imgsz=640, # 输入图像大小
conf=0.001, # 置信度阈值,低于此值的检测结果将被忽略
iou=0.65) # IoU阈值,用于计算检测结果与真实标注的重叠度
上述代码中,model.val方法会加载指定的模型,并使用 COCO 数据集配置文件中的验证集信息进行验证。验证过程中,模型会对验证集中的图像进行目标检测,并将检测结果与标注信息进行对比,计算出一系列评估指标,如平均精度均值(mAP)、不同 IoU 阈值下的平均精度(AP)等 。验证结束后,results变量将包含详细的验证结果,可通过打印results查看,例如print(results.metrics)将输出验证指标,如mAP₀.₅:₀.₉₅、AP₀.₅、AP₀.₇₅等,这些指标可帮助我们评估模型在不同 IoU 阈值下对不同大小目标的检测能力。
训练 YOLOv13 模型可以使其更好地适应特定的数据集和任务,提高检测的准确性。训练前,需准备好训练数据集,格式应与 COCO 数据集类似,包含图像文件和对应的标注文件,标注文件采用 COCO 的 JSON 格式。假设训练数据集存放在D:\custom_dataset目录下,其目录结构如下:
D:\custom_dataset
├── images
│ ├── train
│ │ ├── 0001.jpg
│ │ ├── 0002.jpg
│ │ └──...
│ └── val
│ ├── 0001.jpg
│ ├── 0002.jpg
│ └──...
└── annotations
├── instances_train.json
└── instances_val.json
训练模型的基本步骤如下:
from ultralytics import YOLO
# 加载模型配置文件
model = YOLO('yolov13n.yaml')
# 训练模型
results = model.train(data='D:\custom_dataset\custom_data.yaml', # 自定义数据集配置文件路径
epochs=300, # 训练轮数
batch=32, # 批处理大小,根据GPU显存调整
imgsz=640, # 输入图像大小
lr0=0.01, # 初始学习率
momentum=0.937, # 动量参数
weight_decay=0.0005, # 权重衰减
device='0') # 使用GPU 0进行训练,如果有多个GPU可设置为'0,1'等
上述代码中,data参数指定了自定义数据集的配置文件路径,该配置文件需包含训练集和验证集的图像路径以及标注文件路径等信息 。epochs表示训练的轮数,轮数越多模型可能收敛得越好,但也可能导致过拟合;batch为批处理大小,较大的批处理大小可加快训练速度,但可能会超出 GPU 显存;imgsz是输入图像的大小,通常设置为 32 的倍数;lr0、momentum、weight_decay分别是初始学习率、动量参数和权重衰减,这些参数会影响模型的训练过程和收敛速度 。训练过程中,模型会不断更新参数,以最小化损失函数,训练日志会记录训练过程中的各项指标,如损失值、准确率等,可通过这些指标监控训练进度和模型性能。
使用训练好的 YOLOv13 模型对单张图片或视频进行目标检测,能够将模型应用到实际场景中。以对单张图片进行推理为例,假设已经训练好了模型,并保存为best.pt,有一张待检测的图片test.jpg存放在D:\test_images目录下,推理代码如下:
from ultralytics import YOLO
import cv2
# 加载训练好的模型
model = YOLO('best.pt')
# 对单张图片进行目标检测
results = model.predict(source='D:\test_images\test.jpg',
conf=0.5, # 置信度阈值,默认0.25
iou=0.5, # IoU阈值,默认0.45
save=True) # 是否保存检测结果图片,默认False
# 显示检测结果(如果需要)
for result in results:
im_array = result.plot() # 生成带有检测框的图像数组
im = cv2.cvtColor(im_array, cv2.COLOR_RGB2BGR) # 转换颜色通道顺序
cv2.imshow('result', im) # 显示图像
cv2.waitKey(0) # 等待按键
cv2.destroyAllWindows() # 关闭窗口
上述代码中,model.predict方法对指定路径的图片进行目标检测,source参数指定图片路径;conf和iou分别设置置信度阈值和 IoU 阈值,只有检测结果的置信度大于conf且与其他检测结果的 IoU 小于iou时,才会被保留 。如果设置save=True,检测结果会保存在默认的runs/detect/predict目录下,文件名与原图片相同 。对于视频推理,只需将source参数设置为视频文件路径,如source=‘D:\test_videos\test.mp4’,模型会逐帧对视频进行检测,并可通过保存每一帧的检测结果生成检测后的视频。
将 YOLOv13 模型导出为 ONNX 或 TensorRT 格式,有助于模型在不同平台上的部署和加速推理。
from ultralytics import YOLO
# 加载模型,这里以YOLOv13-Small为例,可根据需求替换
model = YOLO('yolov13s.pt')
# 导出为ONNX格式
model.export(format='onnx',
imgsz=640, # 输入图像大小,需与训练或推理时一致
dynamic=False) # 是否使用动态轴,默认False
上述代码中,format='onnx’指定导出格式为 ONNX;imgsz设置输入图像大小,需与模型训练或推理时使用的图像大小一致;dynamic参数决定是否使用动态轴,设置为True时,模型可接受不同尺寸的输入,但可能会影响一些推理引擎的优化效果 。导出成功后,会在当前目录生成yolov13s.onnx文件。
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov13s.pt')
# 导出为TensorRT格式
model.export(format='engine',
half=True, # 是否使用半精度(FP16),可加快推理速度
imgsz=640) # 输入图像大小
这里format='engine’指定导出为 TensorRT 格式,half=True表示使用半精度(FP16)进行推理,可在支持 FP16 的 GPU 上大幅提升推理速度,同时减少内存占用,但可能会略微降低精度;imgsz同样设置输入图像大小 。导出完成后,会生成yolov13s.engine文件,可用于 TensorRT 推理部署 。导出后的 ONNX 和 TensorRT 模型可用于在不同的推理框架和硬件平台上进行部署,如在 C++ 环境中使用 ONNX Runtime 或 TensorRT 进行推理,实现高效的目标检测应用。
YOLOv13 作为目标检测领域的重要进展,凭借其创新的技术和出色的性能,在计算机视觉领域展现出独特的优势。它创新性地引入 HyperACE 和 FullPAD 技术,突破了传统目标检测模型在信息建模上的局限,有效捕捉特征间潜在的高阶关联,实现全网络范围内的信息协同与精细化流动,显著提升了复杂场景下的检测精度和鲁棒性 。在安防监控、自动驾驶、工业检测等实际应用场景中,YOLOv13 都发挥了重要作用,为各行业的智能化发展提供了有力支持。
从安装使用角度来看,虽然 YOLOv13 的安装过程涉及系统环境配置、依赖包安装等多个环节,如 CUDA、PyTorch 及众多 Python 依赖包的安装,但只要按照正确的步骤进行操作,通常可以顺利完成安装。在使用过程中,模型验证、训练、推理和导出等功能也为用户提供了灵活的应用方式 。通过在 COCO 数据集或自定义数据集上的验证和训练,用户可以根据实际需求调整模型参数,以适应不同的任务和场景。在模型推理阶段,用户能够快速对单张图片或视频进行目标检测,将模型应用到实际场景中;模型导出功能则方便了模型在不同平台上的部署和加速推理。