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

314 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# YOLOv8模型配置指南
本系统使用**YOLOv8**Ultralytics进行目标检测推理。
## 快速开始
### 1. 准备模型文件
将YOLOv8训练好的模型放到指定位置
```bash
# 模型文件路径
python-inference-service/models/best.pt
```
### 2. 准备类别文件(可选)
创建 `classes.txt` 文件,每行一个类别名称:
```bash
# 文件路径
python-inference-service/models/classes.txt
# 内容示例
person
car
truck
bicycle
```
### 3. 启动服务
```bash
# 使用部署脚本
deploy.bat # Windows
./deploy.sh # Linux/Mac
# 或手动启动
docker-compose up -d
```
## 训练YOLOv8模型
如果还没有训练好的模型,可以按以下步骤训练:
### 1. 安装Ultralytics
```bash
pip install ultralytics
```
### 2. 准备数据集
创建数据集配置文件 `data.yaml`
```yaml
# 数据集路径
path: /path/to/dataset
train: images/train
val: images/val
# 类别
nc: 4 # 类别数量
names: ['person', 'car', 'truck', 'bicycle'] # 类别名称
```
### 3. 训练模型
```python
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. 导出模型
训练完成后,将最佳模型复制到项目中:
```bash
# 复制模型文件
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`
```python
# 置信度阈值
self.conf_threshold = 0.25 # 默认0.25,降低可检测更多目标
# 输入图像尺寸
self.img_size = 640 # 默认640可改为320、1280等
```
### 配置文件
`python-inference-service/models/models.json`
```json
[
{
"name": "yolov8_detector",
"path": "models/yolov8_model.py",
"size": [640, 640],
"comment": "YOLOv8检测模型"
}
]
```
参数说明:
- `name`: 模型名称API调用时使用
- `path`: 模型包装类路径
- `size`: 输入图像尺寸 [宽度, 高度]
## 多模型配置
如果有多个模型,可以配置多个:
```json
[
{
"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`
## 测试模型
### 本地测试
```python
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测试
```bash
# 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支持
```yaml
# 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.pt``yolov8s.pt`
- 高精度 → 使用 `yolov8l.pt``yolov8x.pt`
### 3. 调整图像尺寸
```python
# 在 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
## 参考资料
- [Ultralytics YOLOv8文档](https://docs.ultralytics.com/)
- [YOLOv8 GitHub](https://github.com/ultralytics/ultralytics)
- [模型训练教程](https://docs.ultralytics.com/modes/train/)
- [推理示例](https://docs.ultralytics.com/modes/predict/)
## 技术支持
如遇问题:
1. 查看服务日志:`docker-compose logs python-service`
2. 查看模型加载日志
3. 测试模型是否可以本地加载
4. 检查环境配置是否正确