文章背景图

yolo模型构建

2025-09-25
13
-
- 分钟
|

一、环境准备与依赖安装

前提是在上一篇的环境安装已经完成: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.txt

2.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 构建要点总结

  1. 数据质量: 高质量的标注数据是模型性能的基础

  2. 数据增强: 合理的数据增强可以提高模型的泛化能力

  3. 超参数调优: 学习率、批次大小等参数需要根据具体情况调整

  4. 模型选择: 根据应用场景选择合适的模型大小和复杂度

  5. 后处理优化: NMS等后处理步骤对最终效果影响很大

5.2 常见问题与解决方案

问题1: 训练过程中损失不下降

  • 检查学习率设置

  • 验证数据预处理流程

  • 确认标注格式正确性

问题2: 模型过拟合

  • 增加数据增强

  • 使用正则化技术

  • 减小模型复杂度

问题3: 推理速度慢

  • 模型量化

  • 使用TensorRT等推理引擎

  • 优化网络结构

5.3 未来发展方向

YOLO模型仍在不断发展,主要趋势包括:

  • 更高的检测精度

  • 更快的推理速度

  • 更少的计算资源需求

  • 支持更多的应用场景(如3D检测、视频目标跟踪等)

通过本指南,您应该能够掌握YOLO模型的基本构建方法。在实际应用中,建议从预训练模型开始,根据具体需求进行fine-tuning,这样可以获得更好的效果和更快的开发速度。

yolo人工智能识别.xmind

评论交流

文章目录