第一次接触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()
这个检查会输出你的环境配置,包括:
常见问题排查:
--user参数COCO128是COCO数据集的精简版,包含128张训练图片,正好适合新手练手。我第一次用时就发现它有几个特点:
数据集结构长这样:
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时要确保顺序和标注文件一致训练命令看着简单,但参数设置大有讲究。这是我调试多次后总结的最佳配置:
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应该稳步下降训练开始后,Ultralytics会自动启动TensorBoard记录。在终端新开一个窗口运行:
bash复制tensorboard --logdir runs/detect/train
然后在浏览器打开localhost:6006就能看到这些图表:
我常用的分析技巧:
训练完成后,用这个命令测试模型效果:
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下生成带标注的结果图。我经常用这个功能快速检查模型在实际场景的表现。
训练好的模型可以导出为各种格式:
python复制model.export(format='onnx') # 导出为ONNX
支持格式包括:
我在树莓派上部署时发现,转成ONNX后推理速度能提升3倍。关键是要加上动态轴设置:
python复制model.export(format='onnx', dynamic=True)
经过多次实验,我总结出这些提升精度的方法:
数据增强:修改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个百分点。不过要注意,小数据集容易过拟合,增强幅度不宜过大。