单目相机测距-车辆检测

2.车辆检测

使用单目相机对车辆进行测距流程主要流程如下图所示

实现基于单目相机的距离检测系统,通过拍摄视频或照片,对场景中的车辆进行检测,并计算其与相机的距离。系统流程包括相机标定、车辆检测、数据预处理、模型训练、图像处理和距离检测等环节。

车辆检测:使用YoLo检测算法对图像中的车辆进行检测。通过训练模型,提高检测的准确性和鲁棒性。

1.yolo检测原理

YOLO 是一种使用全卷积神经网络的实时目标检测算法,它是 You Only Look Once的缩写。 与其他目标检测的算法相比,YOLO在一个网络模型中完成对图像中所有对象边界框和类别预测,避免了花费大量时间生成候选区域。它的强项是检测速度和识别能力,而不是完美地定位对象。

与目标识别算法不同,目标检测算法不仅需要预测目标的类标签,而且需要提供检测目标的位置。YOLO 算法对整个图像使用全卷积神经网络,将图像划分为多个网格区域,并预测每个区域目标的边界框和概率,而目标预测的概率则会随即用来对边界框的精确度加权,从而获得准确的边界框位置和尺寸。

现实生活中存在大量如封面街道图中的场景,无人驾驶汽车必须实时检测到周围所有对象的位置,才能让系统做出正确的决策和控制。 YOLO 算法能够快速定位并分类不同的对象,并且让每个对象周围都有一个边界框和相应的分类标签。

  • 目标检测原理: 图像网格化(Grid cell),生成对象边界框(Bounding box),删除重叠边界框,交并比 IoU (Intersection over Union),非最大值抑制(non-maximum suppression),预测重叠对象(overlapping object),先验框(anchor box)
  • 全卷积网络结构: 特征提取器Darknet-53,多尺度目标分类器,边界框回归(Regression),上采样(up-sampling),残差块(Resnet block),残差连接(skip connections)。
  • 代码实现:载入预训练模型,执行目标检测

其算法流程为:

1.将图片resize到448*448大小。
2.将图片放到网络里面进行处理。
3.进行非极大值抑制处理得到结果。

由于算法原理复杂,详细可看:

图解目标检测 之 YOLO 算法 最全原理详解_yolo算法原理-CSDN博客

目标检测|YOLO原理与实现 - 知乎 (zhihu.com)

2.检测参数

(1)车辆检测数据集
目前收集了约10W+的车辆检测数据集:UA-DETRAC车辆检测数据集+Vehicle-Dataset车辆检测数据集+BITVehicle车辆检测数据集:

关于车辆检测数据集使用说明和下载,详见另一篇博客说明:《UA-DETRAC BITVehicle车辆检测数据集(含下载地址)_ua-detrac数据集-CSDN博客

(2)自定义数据集
如果需要增/删类别数据进行训练,或者需要自定数据集进行训练,可参考如下步骤:

  1. 采集图片,建议不少于200张图片
  2. 使用Labelme等标注工具,对目标进行拉框标注:labelme工具:项目首页 - labelme - GitCode
  3. 将标注格式转换为VOC数据格式,参考工具:labelme/examples/bbox_detection/labelme2voc.py at main · labelmeai/labelme · GitHub
  4. 生成训练集train.txt和验证集val.txt文件列表
  5. 修改engine/configs/voc_local.yaml的train和val的数据路径
  6. 重新开始训练

本项目使用yolov5,使用参数权重为yolov5n,如果有需要,可以在官方网址下载不同的权重文件,进行更改。需要说明,不同权重文件的准确和精度不同,因此训练时间相差很大,可按照需求使用。安装环境不做过多介绍,可以通过作者提供的requirements.txt 文件进行快速安装。

参考博客:

yolov5参数解析_yolov5参数详解-CSDN博客

手把手带你调参YOLOv5 (v5.0-v7.0)(推理)_yolov5调参-CSDN博客

 

posted @ 2024-05-10 10:59  heyrro  阅读(20)  评论(0编辑  收藏  举报