作者:CSDN @ _养乐多_
本文将介绍如何训练和推理YOLO模型。使用coco8数据集以一个简单的demo进行示例。
文章目录
- 一、准备
- 1.1 模型类型
- 1.2 环境配置
- 二、模型训练和推理
- 三、讨论
一、准备
1.1 模型类型
YOLO8模型性能数据:
Model | Size (pixels) | mAPval 50-95 | Speed CPU ONNX (ms) | Speed A100 TensorRT (ms) | Params (M) | FLOPs (B) |
---|---|---|---|---|---|---|
YOLOv8n | 640 | 37.3 | 80.4 | 0.99 | 3.2 | 8.7 |
YOLOv8s | 640 | 44.9 | 128.4 | 1.20 | 11.2 | 28.6 |
YOLOv8m | 640 | 50.2 | 234.7 | 1.83 | 25.9 | 78.9 |
YOLOv8l | 640 | 52.9 | 375.2 | 2.39 | 43.7 | 165.2 |
YOLOv8x | 640 | 53.9 | 479.1 | 3.53 | 68.2 | 257.8 |
这个表格包含了YOLO模型的各项性能指标,包括模型大小、mAP值、CPU和TensorRT的推理速度、参数数量以及FLOPs。
1.2 环境配置
安装ultralytics库
pip install ultralytics
二、模型训练和推理
Windows系统下,直接运行以下代码。保持网络通畅,因为模型文件和推理图片都是通过网络直接下载并应用的。
from ultralytics import YOLO
if __name__ == '__main__':
# 加载模型
# model = YOLO("yolov8n.yaml") # 从头构建一个新模型
model = YOLO("yolov8n.pt") # 加载一个预训练模型(推荐用于训练)
# 训练
model.train(data="coco8.yaml", epochs=3, workers=0) # 使用单进程数据训练模型
# 验证
metrics = model.val() # 评估模型在验证集上的性能
# 推理
results = model("https://ultralytics.com/images/bus.jpg") # 对图像进行预测
model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640, save=True, device=0)
# 保存模型
path = model.export(format="onnx") # 将模型导出为ONNX格式
如果网络有问题,就点击链接下载bus.jpg图片。 也可以自己在网上找一个有很多物体的图片进行推理。
代码如下,
from ultralytics import YOLO
if __name__ == '__main__':
# 加载模型
# model = YOLO("yolov8n.yaml") # 从头构建一个新模型
model = YOLO("yolov8n.pt") # 加载一个预训练模型(推荐用于训练)
# 训练
model.train(data="coco8.yaml", epochs=3, workers=0) # 使用单进程数据训练模型
# 验证
metrics = model.val() # 评估模型在验证集上的性能
# 推理
# 如果网络有问题,就点击链接下载到本地,“https://ultralytics.com/images/bus.jpg”
results = model("bus.jpg") # 对图像进行预测
model.predict("bus.jpg", imgsz=640, save=True, device=0)
# 保存模型
path = model.export(format="onnx") # 将模型导出为ONNX格式
三、讨论
因为我只训练了3次,训练的epoch少,精度就会低一点,像下面右上角的图片中,人和马都检测错了。
再简化一下代码,四行就可以训练、预测和保存模型。
from ultralytics import YOLO
if __name__ == '__main__':
# 加载模型
model = YOLO("yolov8n.pt") # 加载一个预训练模型(推荐用于训练)
# 训练
model.train(data="coco8.yaml", epochs=3, workers=0) # 使用单进程数据训练模型
# 推理
model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640, save=True, device=0)
# 保存模型
path = model.export(format="onnx") # 将模型导出为ONNX格式