共计 1786 个字符,预计需要花费 5 分钟才能阅读完成。
为什么选择 YOLO?
传统的目标检测方法(如 R -CNN 系列)需要先生成候选区域再进行分类,这种两阶段检测虽然准确率高,但速度较慢。YOLO(You Only Look Once)作为单阶段检测器,将目标检测视为回归问题,直接在全图上预测边界框和类别,实现了速度与精度的平衡。

- 实时性优势:YOLOv5 在 Titan X GPU 上可达 140FPS
- 适用场景:视频监控、自动驾驶、工业质检等需要实时处理的领域
版本选型建议
目前主流版本包括 YOLOv5 和 YOLOv8,对新手推荐:
- YOLOv5s:最小的预训练模型(14MB),适合快速验证
- YOLOv8n:最新版本的 nano 模型,精度提升 20%
注:带 ’s’/’n’ 后缀的为轻量级版本,完整版需要更强的计算资源
环境配置(5 分钟)
确保使用 Python3.8+ 环境:
# 创建虚拟环境(可选)python -m venv yolo_env
source yolo_env/bin/activate # Linux/Mac
yolo_env\Scripts\activate # Windows
# 安装核心库
pip install torch==2.0.1 torchvision==0.15.2 --extra-index-url https://download.pytorch.org/whl/cu118
pip install ultralytics opencv-python
快速推理实战(10 分钟)
图像检测示例
from ultralytics import YOLO
import cv2
# 加载预训练模型(自动下载 yolov8n.pt)model = YOLO('yolov8n.pt')
# 执行推理
results = model('bus.jpg') # 支持 jpg/png 等格式
# 可视化结果
res_plotted = results[0].plot()
cv2.imshow("YOLOv8 Detection", res_plotted)
cv2.waitKey(0)
视频流处理
# 视频文件推理(同样适用于摄像头)cap = cv2.VideoCapture("test.mp4")
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
results = model(frame, stream=True) # stream 模式节省内存
for r in results:
frame = r.plot() # 实时绘制检测框
cv2.imshow("YOLOv8", frame)
if cv2.waitKey(1) == ord('q'): # 按 Q 退出
break
cap.release()
常见问题解决
CUDA 报错排查
如果遇到CUDA out of memory:
- 减小输入尺寸:
model.predict(source=..., imgsz=320) - 关闭半精度:
model = YOLO(...).half()→ 改为float()
路径问题
建议使用绝对路径或如下处理方式:
from pathlib import Path
# 自动兼容不同操作系统
img_path = Path("data/images") / "test.jpg"
assert img_path.exists(), f"文件 {img_path} 不存在"
性能优化技巧
- 硬件加速:
- 确保安装对应 CUDA 版本的 PyTorch
- 使用
model.to('cuda')显式指定 GPU - 推理参数:
conf=0.5调高置信度阈值减少误检iou=0.45调整 NMS 重叠阈值
进阶方向
自定义训练
准备数据集格式:
dataset/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
启动训练:
model.train(data="coco128.yaml", epochs=50, imgsz=640)
模型导出
支持多种部署格式:
model.export(format="onnx") # 输出 ONNX/TensorRT 等格式
学习资源
经过这个流程,你应该已经完成了:
1. 10 分钟环境搭建
2. 5 分钟模型加载
3. 10 分钟跑通第一个检测 demo
4. 5 分钟问题调试
接下来可以尝试更换自己的图片 / 视频,或者研究如何用自定义数据训练专属检测器。记住:遇到报错时先检查 CUDA 和路径这两个高频问题点!
正文完
发表至: 未分类
近两天内
