将检测任务迁移python
This commit is contained in:
314
YOLOV8-SETUP.md
Normal file
314
YOLOV8-SETUP.md
Normal file
@@ -0,0 +1,314 @@
|
||||
# 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设备ID,CPU使用'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. 检查环境配置是否正确
|
||||
Reference in New Issue
Block a user