毕业设计实战:基于计算机视觉的机动车违规检测系统(YOLO+DeepSort+OpenCV全流程落地)

104 阅读9分钟

一、项目背景:为什么要做机动车违规检测?

现在路上的车越来越多,2021年全国机动车保有量已达3.95亿辆,但随之而来的是违规行为(如压实线、闯红灯、逆行)导致的交通事故——2020年全国因交通事故伤亡超31万人,直接财产损失超13亿元。

传统交通管理靠“人工看监控”,有两个致命问题:

  • 效率低:一个监控员每天要盯10+小时视频,容易漏检;
  • 实时性差:违规行为发生后,往往要等几小时甚至几天才能追溯取证。

我的毕业设计就是用计算机视觉解决这些问题:基于YOLOv4检测车辆、DeepSort跟踪轨迹、OpenCV识别违规,实现“实时检测+自动取证”,违规识别率达98%以上,能帮交警快速定位违规车辆,还能减少人工成本,让交通管理更智能。

二、核心技术栈:从检测到违规识别的全链路

整个系统围绕“车辆检测→轨迹跟踪→违规识别”展开,技术栈兼顾精度和实时性,用Python就能实现,本科生可复现:

技术模块具体工具/算法核心作用
车辆检测YOLOv4(含Ghost优化)快速定位车辆:从监控视频帧中检测出汽车、公交车等目标,输出边界框和类别;
多目标跟踪DeepSort跟踪车辆轨迹:给每个车辆分配唯一ID,即使短暂遮挡也能持续跟踪;
违规识别OpenCV图像处理判断违规行为:用多边形标注(如实线区域),检测车辆是否压线、逆行;
数据集KITTI+UA-DETRAC+Veri-776保证泛化性:KITTI/UA-DETRAC练检测,Veri-776练跟踪,覆盖高速、城市场景;
开发环境Python+PyTorch+OpenCV便捷落地:PyTorch训模型,OpenCV做图像预处理,无需复杂硬件;
性能评估识别率/漏检率/实时性验证效果:在高速、城市道路视频上测试,对比人工统计结果;

三、项目全流程:4步实现机动车违规检测

3.1 第一步:数据准备——三类数据集预处理

要训出可靠的模型,先得处理好数据,分3类核心数据集:

3.1.1 车辆检测数据集(KITTI+UA-DETRAC)

  • KITTI:国际通用自动驾驶数据集,含市区、高速场景,标注了车辆3D边界框,但格式是激光雷达坐标系,需转成图像像素坐标;
  • UA-DETRAC:含北京、天津24个地点的14万帧视频,标注了8250辆车(轿车、公交、货车),但图片尺寸不一,需统一缩放至640×640;
  • 预处理操作
    1. 提取两类数据集中的“车辆”标注,过滤行人、自行车等无关目标;
    2. 用LabelImg将标注格式转成YOLO格式(class x_center y_center w h);
    3. 按8:2划分训练集和测试集,用马赛克增强(随机拼4张图)丰富背景。

3.1.2 车辆跟踪数据集(Veri-776)

DeepSort默认用“人重识别”模型,不适合车辆,需用Veri-776训车辆外观模型:

  • Veri-776:含776辆车的5万张图,覆盖不同角度、光照,标注了车辆颜色、品牌;
  • 预处理操作
    1. 统一图片尺寸为128×256(适合外观特征提取);
    2. 按车辆ID分文件夹,每个ID下取80%图做训练、20%做测试;
    3. 用随机翻转、亮度调整增强数据,避免过拟合。

3.1.3 违规场景数据集(自建)

针对“压实线变道”“逆行”等场景,自建数据集:

  • 采集:从城市主干道监控视频中截取1000帧,标注“实线区域”“车道方向”;
  • 标注:用OpenCV画多边形(polygon)标记实线位置,如城市道路实线标注为[[890,370], [844,471], ..., [896,370]]
  • 用途:用于测试违规识别算法的准确性。

3.2 第二步:车辆检测——YOLOv4-Ghost优化模型

YOLOv4检测快,但参数量大,用Ghost卷积优化,在保证精度的同时减少计算量:

3.2.1 网络结构优化

  1. 主干网络:用CSPDarknet53,加入Ghost卷积(将1个3×3卷积拆成1个1×1卷积+1个廉价操作),参数量减少40%;
  2. 颈部层:保留SPP模块(多尺度最大池化),融合19×19、38×38、76×76特征图,兼顾大/小车辆检测;
  3. 输出层:用CIoU损失函数(考虑边界框重合度、中心点距离、宽高比),提升定位精度。

3.2.2 模型训练(PyTorch)

  • 参数设置:输入尺寸640×640,batch size=64(YOLOv4s/m/l)、32(YOLOv4x),迭代300次,初始学习率0.001,用COCO预训练权重初始化;
  • 训练结果:YOLOv4-Ghost在KITTI测试集上的mAP达89%,比原始YOLOv4快15%,单帧检测时间<0.05秒(20FPS),满足实时需求。

3.2.3 检测效果

在高速监控视频中,能准确检测出100米外的小型车辆,漏检率<2%,误检主要来自“与背景色相近的车辆”(如白色车在雪地场景)。

3.3 第三步:车辆跟踪——DeepSort多目标跟踪

检测出车辆后,用DeepSort跟踪,避免同一辆车被重复计数:

3.3.1 跟踪流程

  1. 外观特征提取:用ResNet50提取车辆外观特征(如颜色、轮廓),每个车辆对应1个256维特征向量;
  2. 运动预测:用卡尔曼滤波预测车辆下一帧的位置,处理短暂遮挡;
  3. 数据关联:计算“预测位置与检测位置的IOU”+“外观特征相似度”,匹配同一车辆,分配唯一track_id。

3.3.2 模型训练

  • 训练环境:GPU(NVIDIA Quadro P6000),迭代100次,损失函数用三元组损失(Triplet Loss);
  • 训练结果:在Veri-776测试集上的top1准确率达92%,跟踪成功率(MOTA)达88%,能处理“车辆交汇”“短暂遮挡”场景。

3.3.3 跟踪效果

在城市道路视频中,对30辆同时行驶的车辆,跟踪持续率>95%,即使有公交车遮挡小轿车,10帧内也能重新匹配track_id。

3.4 第四步:违规识别——OpenCV图像处理

基于检测和跟踪结果,用OpenCV识别“压实线变道”“逆行”等违规:

3.4.1 压实线变道识别(核心场景)

  1. 标注实线区域:用多边形(polygon)标记道路实线,生成掩码图(mask),实线区域像素值为1,其他为0;
  2. 确定检测点:取车辆边界框的底部中心作为检测点(x_offset, y_offset),避免车辆边缘误判;
  3. 撞线判断:若检测点落在实线掩码图中(mask[x_offset, y_offset] == 1),且该车辆track_id未被记录,则判定为“压实线变道”,违法计数器+1,并截图取证;
    # 伪代码:压实线判断
    if mask[x_offset, y_offset] == 1 and track_id not in illegal_list:
        illegal_count += 1
        illegal_list.append(track_id)
        cv2.imwrite(f"illegal_{track_id}.jpg", frame)  # 截图取证
    

3.4.2 逆行识别

  1. 标注车道方向:用线段标记车道行驶方向(如城市道路自西向东为正向);
  2. 计算轨迹方向:根据DeepSort输出的track_id轨迹(连续10帧的检测点),拟合行驶方向向量;
  3. 方向判断:若轨迹方向与车道方向夹角>120°,则判定为“逆行”,触发报警。

3.4.3 实验验证

在南宁秀厢大道的监控视频(1小时/3661辆车)中,人工统计88辆压实线车辆,模型识别87辆,识别率98.9%,漏检仅1辆(因被前车完全遮挡),误检0辆,满足实际执法需求。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

四、毕业设计复盘:踩过的坑与经验

4.1 那些踩过的坑

  1. YOLOv4训练过拟合:初期用小数据集训模型,测试集mAP仅75%——解决:加入马赛克增强、随机裁剪,用KITTI+UA-DETRAC混合训练,mAP提升到89%;
  2. DeepSort跟踪漂移:车辆快速转弯时,卡尔曼滤波预测偏差大——解决:增加外观特征权重,当IOU匹配失败时,用外观相似度(>0.8)重新匹配;
  3. 压实线误判:雨天路面反光导致实线掩码不准——解决:用HSV颜色空间提取实线(黄色/白色实线在S通道更突出),减少反光干扰。

4.2 给学弟学妹的建议

  1. 数据优先:违规检测的精度依赖标注质量,建议用LabelImg仔细标注实线区域,避免“漏标”“多标”;
  2. 分模块测试:先单独测YOLOv4检测精度,再测DeepSort跟踪成功率,最后测违规识别,逐个解决问题;
  3. 答辩突出实战:评委喜欢看“实际效果”,比如展示“违规车辆截图+track_id轨迹”,比单纯讲公式更有说服力。

五、项目资源与后续扩展

5.1 项目核心资源

本项目包含完整的代码(YOLOv4-Ghost训练、DeepSort跟踪、OpenCV违规识别)、预处理后的数据集、训练好的模型权重,可直接复现实验结果。若需获取这些资源,可私信沟通,还能提供模型调参和代码调试的指导。

5.2 未来扩展方向

  1. 多违规场景支持:增加“闯红灯”“不礼让行人”识别,需标注交通灯、行人位置;
  2. 模型压缩:将YOLOv4-Ghost压缩为YOLOv5n,适配边缘设备(如嵌入式摄像头);
  3. 联动执法:对接交警系统,自动将违规车辆的track_id、截图同步到执法平台,实现“自动取证→罚单生成”全流程。

如果本文对你的计算机视觉、智能交通相关毕业设计有帮助,欢迎点赞 + 收藏 + 关注,后续会分享更多实战案例!