1. 环境准备与YOLOv8安装
第一次接触YOLOv8时,我也被各种依赖项搞得头晕。后来发现其实用pip一键安装就能搞定,根本不需要折腾复杂的编译过程。这里分享我的安装经验,帮你避开那些常见的坑。
首先确保你的Python版本在3.7以上(推荐3.8+),然后打开终端执行:
bash复制pip install ultralytics
这个命令会自动安装所有依赖,包括PyTorch、torchvision等。如果你有NVIDIA显卡,建议先单独安装CUDA版的PyTorch,这样训练速度能快10倍以上。我测试过RTX 3060显卡,安装CUDA 11.7版本的PyTorch后,训练速度从原来的15分钟缩短到2分钟。
安装完成后,用这个命令验证是否成功:
python复制import ultralytics
ultralytics.checks()
这个检查会输出你的环境配置,包括:
- PyTorch版本和CUDA是否可用
- GPU型号和显存大小
- 关键依赖库的版本
常见问题排查:
- 如果遇到权限错误,试试加上
--user参数 - 网络问题导致下载失败时,可以换用国内镜像源
- 显存不足的话,后面训练时可以把batch_size调小
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. COCO128数据集详解
COCO128是COCO数据集的精简版,包含128张训练图片,正好适合新手练手。我第一次用时就发现它有几个特点:
- 类别齐全:虽然图片少,但包含了COCO全部的80个类别
- 标注质量高:每张图平均有7.25个标注框
- 场景多样:室内外、白天黑夜、不同角度都有
数据集结构长这样:
code复制coco128/
├── images/
│ └── train2017/ # 所有图片都在这里
└── labels/
└── train2017/ # 对应的YOLO格式标注文件
配置文件coco128.yaml是关键,它告诉YOLOv8去哪找数据。我建议你这样修改:
yaml复制train: ../coco128/images/train2017/
val: ../coco128/images/train2017/ # 小数据集可以用训练集做验证
nc: 80 # 类别数
names: ['person', 'bicycle', ...] # 类别名称
实际项目中我发现三个实用技巧:
- 用相对路径更便于项目迁移
- 小数据集可以设置
val和train相同 - 修改
names时要确保顺序和标注文件一致
3. 训练模型实战操作
训练命令看着简单,但参数设置大有讲究。这是我调试多次后总结的最佳配置:
bash复制yolo train model=yolov8n.pt data=coco128.yaml epochs=100 imgsz=640 batch=16
重点参数解析:
model=yolov8n.pt:使用nano版本,适合快速验证epochs=100:小数据集需要更多迭代imgsz=640:图片缩放尺寸,越大精度越高但更耗显存batch=16:根据显存调整,报错就减小这个值
训练过程中会实时显示这些指标:
code复制Epoch GPU_mem box_loss cls_loss Instances Size
1/100 2.3G 1.21 1.35 87 640
我的经验是:
box_loss和cls_loss应该稳步下降- 如果波动太大,可能是学习率过高
- GPU显存占用要留20%余量防止爆显存
4. 训练过程监控与分析
训练开始后,Ultralytics会自动启动TensorBoard记录。在终端新开一个窗口运行:
bash复制tensorboard --logdir runs/detect/train
然后在浏览器打开localhost:6006就能看到这些图表:
- 损失曲线:观察是否收敛
- mAP指标:评估检测精度
- 验证结果:查看预测示例
我常用的分析技巧:
- 如果训练loss下降但验证loss上升,可能是过拟合
- mAP50在0.5以上说明模型已经不错
- 查看验证图片能直观发现模型的问题
5. 模型验证与结果可视化
训练完成后,用这个命令测试模型效果:
bash复制yolo val model=runs/detect/train/weights/best.pt data=coco128.yaml
输出结果包含每个类别的详细指标:
code复制Class Images Instances P R mAP50
all 128 929 0.631 0.676 0.704
person 128 254 0.763 0.721 0.778
car 128 46 0.487 0.217 0.322
要可视化检测结果,可以用:
python复制from ultralytics import YOLO
model = YOLO('runs/detect/train/weights/best.pt')
results = model.predict('test.jpg', save=True)
这样会在runs/detect/predict下生成带标注的结果图。我经常用这个功能快速检查模型在实际场景的表现。
6. 模型导出与部署
训练好的模型可以导出为各种格式:
python复制model.export(format='onnx') # 导出为ONNX
支持格式包括:
- ONNX:适合TensorRT加速
- TensorFlow Lite:移动端部署
- CoreML:苹果设备使用
我在树莓派上部署时发现,转成ONNX后推理速度能提升3倍。关键是要加上动态轴设置:
python复制model.export(format='onnx', dynamic=True)
7. 进阶调优技巧
经过多次实验,我总结出这些提升精度的方法:
-
数据增强:修改
coco128.yaml添加yaml复制augment: hsv_h: 0.015 # 色相增强 hsv_s: 0.7 # 饱和度增强 flipud: 0.5 # 上下翻转概率 -
迁移学习:用预训练模型初始化
bash复制
yolo train model=yolov8s.pt data=coco128.yaml pretrained=True -
超参数调优:尝试不同的学习率
yaml复制lr0: 0.01 # 初始学习率 lrf: 0.1 # 最终学习率系数
在COCO128上,这些技巧能让mAP50提升5-8个百分点。不过要注意,小数据集容易过拟合,增强幅度不宜过大。
