一、环境准备与依赖安装
前提是在上一篇的环境安装已经完成:yolo图像识别功能|DeepWave
# 标注工具
pip install labelimg
pip install ultralytics二、数据集准备
2.1 数据集结构
标准的YOLO数据集应遵循以下目录结构:
dataset/
├── images/
│ ├── train/
│ │ ├── image1.jpg
│ │ └── image2.jpg
│ └── val/
│ ├── image3.jpg
│ └── image4.jpg
└── labels/
├── train/
│ ├── image1.txt
│ └── image2.txt
└── val/
├── image3.txt
└── image4.txt2.2 数据预处理
将视频转换为图片,进行人工标注。(运行前,请先创建image文件夹)
import cv2
import matplotlib.pyplot as plt
video_path = "jkl.mp4" # 视频文件路径
cap = cv2.VideoCapture(video_path)
num=0 # 帧数计数器
save =30 # 每隔30帧保存一帧
while True:
ret, frame = cap.read()
if not ret:
break
num+=1
if num%save==0:
cv2.imwrite("./image/" + str(num) + ".jpg",frame)运行完后图片会储存至image文件夹
三、标注信息
将标注工具安装好后,在终端运行:labelimg

记得标注完后要点保存(Save)
四、模型架构设计
4.1 自定义YOLO简单模型
模型,配置文件,配合“数据集结构”使用
# data.yaml
path: datasets # 数据集的根目录
train: images/train # 训练集图片路径(相对于 path)
val: images/val # 验证集图片路径(相对于 path)
test: # 测试集图片路径(可选)
# 类别名称
names:
0: car
1: Traffic
# ... 你的所有类别开始构建模型
from ultralytics import YOLO
if __name__ == '__main__':
# 加载一个预训练模型
model = YOLO('./yolov8s.yaml') # 或者 ‘yolov8s.pt’ 从模型加载
model.train(data='./yolo-jkl.yaml', workers=1, epochs=100, batch=16)data='./yolo-jkl.yaml', # 数据配置文件
epochs=50, # 训练轮数
batch=16, # 批次大小
workers=1, # 数据加载工作进程数(可根据CPU核心数调整)
imgsz=640, # 图像尺寸
patience=10, # 早停耐心值
lr0=0.01, # 初始学习率
lrf=0.01, # 最终学习率
momentum=0.937, # 动量
weight_decay=0.0005, # 权重衰减
warmup_epochs=3, # 热身轮数
box=7.5, # 框损失权重
cls=0.5, # 分类损失权重
dfl=1.5, # dfl损失权重
save=True, # 保存训练检查点
exist_ok=True, # 覆盖现有输出目录
pretrained=True, # 使用预训练权重
4.2 简单的对模型进行评估与验证
生成标注后的视频
from ultralytics import YOLO
# 加载训练好的模型
model = YOLO('./runs/detect/train/weights/last.pt')
# 对MP4视频进行推理,加“show=True”可是查看实时训练情况
video_path = './jkl.mp4' # 替换为您的视频路径
results = model.predict(video_path, save=True, conf=0.15, iou=0.7) # 推理
# results = model.track(video_path, save=True, persist=True, conf=0.1, iou=1) # 追踪
print("视频处理完成!")五 总结与最佳实践
5.1 构建要点总结
数据质量: 高质量的标注数据是模型性能的基础
数据增强: 合理的数据增强可以提高模型的泛化能力
超参数调优: 学习率、批次大小等参数需要根据具体情况调整
模型选择: 根据应用场景选择合适的模型大小和复杂度
后处理优化: NMS等后处理步骤对最终效果影响很大
5.2 常见问题与解决方案
问题1: 训练过程中损失不下降
检查学习率设置
验证数据预处理流程
确认标注格式正确性
问题2: 模型过拟合
增加数据增强
使用正则化技术
减小模型复杂度
问题3: 推理速度慢
模型量化
使用TensorRT等推理引擎
优化网络结构
5.3 未来发展方向
YOLO模型仍在不断发展,主要趋势包括:
更高的检测精度
更快的推理速度
更少的计算资源需求
支持更多的应用场景(如3D检测、视频目标跟踪等)
通过本指南,您应该能够掌握YOLO模型的基本构建方法。在实际应用中,建议从预训练模型开始,根据具体需求进行fine-tuning,这样可以获得更好的效果和更快的开发速度。