在智慧城市和道路维护领域,实时检测路面坑洼一直是个技术难点。传统方案要么依赖人工巡检效率低下,要么采用云端处理存在延迟高、隐私泄露风险。这次我们尝试在Luxonis OAK-D-Lite这款边缘计算设备上部署YOLOv8模型,实现本地化的坑洼检测方案。
OAK-D-Lite是款自带AI加速的嵌入式视觉设备,搭载英特尔Myriad X VPU芯片,功耗仅2W左右却能实现4TOPS算力。配合YOLOv8这个最新一代轻量级目标检测框架,正好组成"强算法+专用硬件"的黄金搭档。我们选用了公开的Pothole Dataset进行训练,最终模型大小仅5.8MB,在OAK设备上跑出了23FPS的实时性能。
2023年发布的YOLOv8在保持YOLO系列实时性的基础上,通过以下改进特别适合边缘部署:
实测对比其他版本:
| 模型版本 | 参数量(M) | mAP@0.5 | 推理速度(FPS) |
|---|---|---|---|
| YOLOv5s | 7.2 | 0.68 | 38 |
| YOLOv7-tiny | 6.0 | 0.71 | 45 |
| YOLOv8n | 3.2 | 0.75 | 52 |
这款设备有三个关键特性使其成为理想选择:
注意:Myriad X芯片对模型格式有特殊要求,需要先导出OpenVINO IR格式
使用Pothole Dataset的5500张标注图像,我们做了针对性增强:
python复制# Albumentations增强管道示例
transform = A.Compose([
A.RandomRain(p=0.3), # 模拟雨天场景
A.RandomShadow(p=0.2),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20),
A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2),
], bbox_params=A.BboxParams(format='yolo'))
使用YOLOv8n预训练模型进行微调:
yaml复制# yolov8-pothole.yaml
lr0: 0.01
lrf: 0.01
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 3
warmup_momentum: 0.8
box: 7.5
cls: 0.5
dfl: 1.5
将PyTorch模型转换为OpenVINO格式:
bash复制yolo export model=yolov8n-pothole.pt format=openvino imgsz=640
然后使用OpenVINO的模型优化器:
bash复制mo --input_model yolov8n-pothole.xml --compress_to_fp16
创建自定义推理管道:
python复制pipeline = depthai.Pipeline()
cam = pipeline.create(depthai.node.ColorCamera)
cam.setPreviewSize(640, 640)
cam.setInterleaved(False)
detection_nn = pipeline.create(depthai.node.YoloDetectionNetwork)
detection_nn.setBlobPath("yolov8n-pothole.blob")
detection_nn.input.setBlocking(False)
实测性能:
| 优化项 | 原始 | 优化后 |
|---|---|---|
| 推理延迟 | 58ms | 42ms |
| 内存占用 | 1.2GB | 780MB |
| 持续运行温度 | 72°C | 65°C |
问题现象:导出OpenVINO时报错Unsupported ONNX opset version 17
解决方法:
python复制torch.onnx.export(..., opset_version=12) # Myriad X最高支持opset 12
典型表现:检测框位置偏移或尺寸错误
排查步骤:
当环境温度超过35°C时,建议:
在真实道路场景中,我们总结了这些经验:
经过三个月实地测试,系统在晴天检测准确率达到89%,雨天降至76%。后续计划加入时序分析模块,通过多帧检测提升鲁棒性。这个方案同样适用于井盖缺失、道路裂缝等基础设施检测场景。