【视觉CV】车流量检测项目实现全流程 原理+代码

车流量检测项目

  • 课程链接
  • 课程重点
  • 知识点汇总
  • 源代码分析
  • 思路梳理:
      • 1.YOLO V3进行目标检测
      • 2.sort 算法实现多目标跟踪
      • 3.车流量计数
      • 4.利用OpenCV进行图像处理


课程链接

本套课件完整的讲述了所需的全部知识点,实现一套完整的车流量检测项目

文档:3.0 车流量检测实现.note

文档:3.1. 多目标追踪.note

文档:3.2. 辅助功能.note

文档:3.3.卡尔曼滤波器.note

文档:3.4.卡尔曼滤波器实践.note

文档:3.5 目标估计模型-卡尔曼滤波.note

文档:3.6 匈牙利算法.note

文档:3.7 数据关联.note

文档:3.8 SORTdeepSORT.note

文档:3.9 多目标追踪.note

文档:3.10 yoloV3模型.note

文档:3.11 基于yoloV3的目标检测.note

文档:3.12 车流量统计.note

文档:3.13 视频中的车流量统计.note


课程重点

流程框架
【视觉CV】车流量检测项目实现全流程 原理+代码_第1张图片


知识点汇总

  • xmind知识点梳理:知识点下载
    车流量检测项目(1)-基础知识库总结
    车流量检测项目(2)- 基本算法原理详解
    车流量检测项目(3)- 算法详解
    车流量检测项目(4)
    包含上面三个内容的汇总知识点:
    全知识点打包汇总

源代码分析

项目名称: 车流量检测

项目功能需求分析:

  1. 目标检测:检测目标车辆,排除非目标车辆或其他物体。多目标跟踪
  2. 目标计数:计数功能
  3. 视频处理:视频处理模块

思路梳理:

1.YOLO V3进行目标检测

优点:

  • 可以完成多目标检测和定位
  • 使用OpenCV直接调用预训练模型

存在问题:

  • 只能检测是否存在,无法实现连续追踪。
  • 经常因为目标大小、光照等问题,导致部分帧丢失目标,造成目标丢失。

2.sort 算法实现多目标跟踪

基于Kalman和KM算法的后端优化算法。
优点:

  • 卡尔曼滤波:基于检测目标的历史位置,根据上一时刻(k-1时刻)对下一时刻(k时刻)进出现位置行预测。
    卡尔曼滤波需要做的最重要的最核心的事就是融合预测和观测的结果,充分利用两者的不确定性来得到更加准确的估计。
  • KM算法:解决的是带权二分图的最优匹配问题,YOLO V3会输出权值,目标较少的时候,速度很快,不会产生多个最优解。
    KM算法,主要解决前后帧关联匹配的问题,创建目标跟踪链。

存在问题:

  • sort需要设定超参数(设置不合理,将会导致目标丢失或中断)
  1. max_age:最大生命周期,如果超过max_age次没有被检测到,则删除跟踪器
  2. min_hits:最小连续检测命中次数,如果多次被检测到,则创建跟踪器
  • yolo一旦目标丢失,那么将会删除卡尔曼滤波器对象。导致跟踪链丢失,从新创建目标。

  • sort算法没有api,需要自己实现。所以需要实现以下几个功能:

  1. 卡尔曼滤波器对象(每个跟踪目标需要创建一个)
  2. 数据关联(内含KM算法):遍历检测框和跟踪框,并进行匹配,匹配成功的将其保留,未成功的将其删除。
  3. sort算法管理多个卡尔曼滤波

sort 和deep sort区别
这个文章讲的很好 https://zhuanlan.zhihu.com/p/59148865

3.车流量计数

优点:

  • 利用虚拟线圈进行车辆计数,四点的向量相乘关系确认。可以识别任何方向的计数要求。

存在问题:

  • 虚拟线圈的位置很重要,如果选择不好,可能导致目标在线圈两遍尺寸大小差异较大,导致目标无法被YOLO检测到,导致计数失败的情况。
  • 通常情况下,线圈一般是垂直划线,目标左右移动,这样物体的大小几乎不会变化,追踪效果更好。

4.利用OpenCV进行图像处理

  1. 读取视频,遍历每帧图片
  2. 调用上面的功能集合,输出结果
  3. 将功能写入图片,并输出视频
  4. 【重要】【重要】【重要】释放资源

你可能感兴趣的:(计算机视觉CV,项目案例)