1. 项目背景与核心价值
道路缺陷检测是交通基础设施维护的关键环节。传统人工巡检方式存在效率低、成本高、主观性强等问题。我们团队开发的这套基于YOLOv11和PyQt的道路缺陷检测系统,通过深度学习算法实现了路面裂缝、坑洼等缺陷的自动化识别与标注,检测准确率达到92.3%,单张图像处理时间仅需47ms。
这个毕业设计项目之所以选择这个方向,主要基于三个现实考量:
- 市政部门每年需要投入大量人力进行道路巡检
- 传统计算机视觉方法在复杂场景下泛化能力不足
- 轻量化的检测系统更适合基层单位部署使用
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构解析
2.1 系统整体设计
系统采用经典的客户端-服务器架构:
code复制[PyQt客户端] ←HTTP→ [Flask服务端] ←gRPC→ [YOLOv11推理引擎]
主要技术栈选择依据:
- PyQt5:提供跨平台的GUI开发能力,内置QGraphicsView完美支持检测结果可视化
- YOLOv11:相比YOLOv8提升小目标检测精度15%,模型体积减小23%
- SQLite:轻量级数据库存储检测记录和缺陷统计信息
2.2 核心算法实现
模型训练关键参数配置:
python复制# yolov11s.yaml
depth_multiple: 0.33
width_multiple: 0.50
anchors:
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
数据增强策略:
- Mosaic增强(概率0.5)
- HSV色域随机扰动
- 随机透视变换
- 混合模糊(高斯+运动)
实际测试发现,对路面图像特别有效的增强方式是增加阴影模拟(使用OpenCV的addWeighted)
3. 系统功能实现
3.1 检测流程优化
为提高实时性,我们实现了以下优化:
- 图像预处理流水线:
python复制def preprocess(img): img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = letterbox(img, new_shape=640)[0] img = img.transpose(2, 0, 1) return np.ascontiguousarray(img) - 使用TensorRT加速推理
- 多线程处理框架(QThreadPool)
3.2 PyQt界面关键实现
主界面采用QDockWidget实现可定制布局:
python复制class MainWindow(QMainWindow):
def __init__(self):
self.detection_dock = QDockWidget("检测结果", self)
self.result_viewer = ResultViewer()
self.detection_dock.setWidget(self.result_viewer)
self.addDockWidget(Qt.RightDockWidgetArea, self.detection_dock)
4. 部署与性能优化
4.1 模型量化方案
为适配不同硬件环境,提供三种部署选项:
- FP32原始模型(精度最高)
- FP16量化版本(速度提升40%)
- INT8量化版本(速度提升120%,精度损失<3%)
量化实现代码:
python复制# 使用TensorRT的polygraphy工具
!polygraphy convert yolov11s.pt --workspace 8G \
--onnx yolov11s.onnx \
--trt --fp16 \
--calib-cache yolov11s.cache
4.2 性能对比测试
测试环境:Intel i7-11800H + RTX 3060 Laptop
| 模型版本 | 推理时延(ms) | mAP@0.5 | 显存占用(MB) |
|---|---|---|---|
| YOLOv8n | 58.2 | 0.891 | 1240 |
| YOLOv11s | 47.3 | 0.923 | 980 |
| YOLOv11s(INT8) | 21.7 | 0.901 | 680 |
5. 常见问题解决方案
5.1 检测漏报问题排查
典型场景及解决方法:
- 反光路面:
- 增加HSV增强中的S通道扰动幅度
- 训练数据中加入更多反光样本
- 细小裂缝:
- 修改anchor box尺寸
- 使用Focus替换首层卷积
5.2 PyQt内存泄漏处理
通过重写QGraphicsItem实现安全的内存管理:
cpp复制class DetectionItem : public QGraphicsRectItem {
public:
~DetectionItem() override {
// 显式释放关联资源
}
};
6. 项目扩展方向
实际部署中我们发现几个有价值的改进点:
- 集成GPS模块实现缺陷定位
- 开发移动端APP配合巡检车使用
- 加入3D重建模块估算坑洼深度
- 建立道路病害预测模型
这个项目从构思到实现共耗时4个月,最大的收获是认识到工程落地中细节决定成败。比如最初没考虑北方地区雪地场景,导致冬季检测准确率骤降,后来通过数据增强解决了这个问题
