Files
rtsp-video-analysis-system/YOLOV8-SETUP.md
2025-09-30 14:23:33 +08:00

5.7 KiB
Raw Blame History

YOLOv8模型配置指南

本系统使用YOLOv8Ultralytics进行目标检测推理。

快速开始

1. 准备模型文件

将YOLOv8训练好的模型放到指定位置

# 模型文件路径
python-inference-service/models/best.pt

2. 准备类别文件(可选)

创建 classes.txt 文件,每行一个类别名称:

# 文件路径
python-inference-service/models/classes.txt

# 内容示例
person
car
truck
bicycle

3. 启动服务

# 使用部署脚本
deploy.bat  # Windows
./deploy.sh # Linux/Mac

# 或手动启动
docker-compose up -d

训练YOLOv8模型

如果还没有训练好的模型,可以按以下步骤训练:

1. 安装Ultralytics

pip install ultralytics

2. 准备数据集

创建数据集配置文件 data.yaml

# 数据集路径
path: /path/to/dataset
train: images/train
val: images/val

# 类别
nc: 4  # 类别数量
names: ['person', 'car', 'truck', 'bicycle']  # 类别名称

3. 训练模型

from ultralytics import YOLO

# 加载预训练模型
model = YOLO('yolov8n.pt')  # n, s, m, l, x 可选

# 训练模型
results = model.train(
    data='data.yaml',
    epochs=100,
    imgsz=640,
    batch=16,
    device=0  # GPU设备IDCPU使用'cpu'
)

# 训练完成后,最佳模型保存在 runs/detect/train/weights/best.pt

4. 导出模型

训练完成后,将最佳模型复制到项目中:

# 复制模型文件
cp runs/detect/train/weights/best.pt python-inference-service/models/best.pt

# 创建类别文件
echo "person
car
truck
bicycle" > python-inference-service/models/classes.txt

模型配置

修改模型参数

编辑 python-inference-service/models/yolov8_model.py

# 置信度阈值
self.conf_threshold = 0.25  # 默认0.25,降低可检测更多目标

# 输入图像尺寸
self.img_size = 640  # 默认640可改为320、1280等

配置文件

python-inference-service/models/models.json

[
  {
    "name": "yolov8_detector",
    "path": "models/yolov8_model.py",
    "size": [640, 640],
    "comment": "YOLOv8检测模型"
  }
]

参数说明:

  • name: 模型名称API调用时使用
  • path: 模型包装类路径
  • size: 输入图像尺寸 [宽度, 高度]

多模型配置

如果有多个模型,可以配置多个:

[
  {
    "name": "person_detector",
    "path": "models/person_model.py",
    "size": [640, 640]
  },
  {
    "name": "vehicle_detector",
    "path": "models/vehicle_model.py",
    "size": [640, 640]
  }
]

然后为每个模型创建对应的模型文件,参考 yolov8_model.py

测试模型

本地测试

from ultralytics import YOLO

# 加载模型
model = YOLO('python-inference-service/models/best.pt')

# 测试图像
results = model('test.jpg')

# 显示结果
results[0].show()

# 打印检测结果
for r in results:
    print(r.boxes)

API测试

启动服务后使用curl测试

# 1. 检查服务健康
curl http://localhost:10080/python-api/health

# 2. 查看可用模型
curl http://localhost:10080/python-api/api/models

# 3. 测试检测(文件上传)
curl -X POST "http://localhost:10080/python-api/api/detect/file" \
  -F "model_name=yolov8_detector" \
  -F "file=@test.jpg"

性能优化

1. 使用GPU

确保Docker配置了GPU支持

# docker-compose.yml
python-service:
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: 1
            capabilities: [gpu]

2. 选择合适的模型大小

YOLOv8提供多种尺寸

模型 参数量 速度 精度
YOLOv8n 3.2M 最快 较低
YOLOv8s 11.2M 中等
YOLOv8m 25.9M 中等 较高
YOLOv8l 43.7M
YOLOv8x 68.2M 最慢 最高

根据需求选择:

  • 实时处理 → 使用 yolov8n.ptyolov8s.pt
  • 高精度 → 使用 yolov8l.ptyolov8x.pt

3. 调整图像尺寸

# 在 yolov8_model.py 中
self.img_size = 320  # 更快但精度降低
# 或
self.img_size = 1280  # 更慢但精度提高

常见问题

Q1: 模型加载失败

错误FileNotFoundError: best.pt not found
解决:确保模型文件在 python-inference-service/models/best.pt

Q2: GPU不可用

错误CUDA not available
解决:
1. 检查NVIDIA驱动安装
2. 检查Docker GPU支持
3. 使用 docker run --gpus all 测试GPU

Q3: 检测结果为空

原因:
1. 置信度阈值太高
2. 模型未正确训练
3. 输入图像与训练数据差异大

解决:
1. 降低 conf_threshold
2. 检查模型训练情况
3. 检查输入图像质量

Q4: 推理速度慢

解决:
1. 使用GPU加速
2. 使用更小的模型如yolov8n
3. 减小输入图像尺寸
4. 批量处理多张图像

模型版本差异

YOLOv5 vs YOLOv8

本系统已从YOLOv5升级到YOLOv8

特性 YOLOv5 YOLOv8
精度 较高 更高
速度 更快
API yolov5 ultralytics
训练 复杂 简单

迁移说明

如果之前使用YOLOv5模型

  1. 使用YOLOv8重新训练推荐
  2. 或使用 garbage_model.py 作为模板支持YOLOv5

参考资料

技术支持

如遇问题:

  1. 查看服务日志:docker-compose logs python-service
  2. 查看模型加载日志
  3. 测试模型是否可以本地加载
  4. 检查环境配置是否正确