YOLOv3物体检测

本文介绍了YOLOv3物体检测算法的工作流程,包括图像划分、预测bounding box和非最大抑制等步骤,并提供了预训练模型的加载和神经网络前向传播的详细过程,旨在实现对图像中车辆等物体的准确检测。
摘要由CSDN通过智能技术生成

Camera系列文章

传感器融合是将多个传感器采集的数据进行融合处理,以更好感知周围环境;这里首先介绍Camera的相关内容,包括摄像头及图像知识基本介绍,OpenCV图像识别(特征提取,目标分类等),融合激光点云和图像进行TTC估计。

系列文章目录
1. 摄像头基础及校准
2. Lidar TTC估计
3. Camera TTC估计
4. OpenCV图像特征提取
5. 常见特征检测算法介绍
6. 常见特征描述符介绍
7. YOLOv3物体检测



前言

截止目前我们已经实现2D图像特征跟踪,3D激光点云测距和激光点云投影至图像上。为稳定的获取TTC估计,我们还需要聚类投影的同一车辆上的激光点云,去除非关联点云(如地面反射点云),这里我们需要可靠识别图像上的车辆,使用边界框(bounding box)框出车辆位置。因此,我们本节将介绍深度学习算法YOLO (“You Only Look Once”) ,YOLO可以检测很多雷达的物体,包括车辆,行人等;
在使用特征点检测及跟踪实现Camera TTC计算过程中,通过物体识别(Object Detection)框出车辆轮廓,我们可以分离出位于前车的特征点,减小特征点的错误匹配,获取稳定的TTC估计。
激光雷达测距中也可以获取类似的效果。通常,我们使用的是PCL (Point Cloud Library)点云聚类算法实现点云聚类,本节将介绍另一种算法。我们已经知道将激光点云投影到图像平面。获取bounding box后,我们可以通过简单的判断投影在图像的点云是否在bounding box中来判断是否为某个特定物体的反射点。


提示:以下是本篇文章正文内容,下面案例可供参考

YOLO简介

YOLO通过将整张图像作为神经网络的输入,直接输出bounding box的位置及其所属的类别。目前已有很多相关的介绍,这里暂不深入学习,主要目的是利用YOLO快速的实现物体检测,得到我们所需的bounding box和物体属性,结果如下图所示。
在这里插入图片描述
传统的物体检测算法是基于HOG(histograms of oriented gradients)和SVM(support vector machines)。其他的物体检测方法是使用深度学习框架,比如TensorFlow或Caffe,这里主要介绍并利用YOLO这种简单快速的物体检测算法。YOLO中,将整张图像作为神经网络的输入,然后,神经网络将图像划分成不同大小的图像块,预测每个图像块为bounding box概率。
在这里插入图片描述
本章中我们将使用YOLO3,以及预先训练好的权重。他可以识别80中不同的物体,基于COCO数据集训练。因此,我们可以直接使用YOLO3实现较好精度的物体检测。

YOLOv3 Workflow

YOLO的算法流程

  1. 将图像划分成13×13网格大小的单元。根据不同输入图像大小,这些单元大小各异。
  2. 每个单元用于预测一系列的bounding box。对于每个bounding box,神经网络会预测bounding box内包含特定物体的置信度,以及属于每个特定类别的概率。
  3. 最后,使用非最大抑制去除低置信度的,以及包含同一物体的冗余bounding box。

YOLO3算法处理流程及其代码

1. 初始化参数
YOLO3预测的每个bounding box对应一个置信度值,参数’confThreshold’用于去除所有的低置信度bounding box。
同时,需要对剩余的bounding box进行NMS(non-maximum suppression)非最大抑制,对重叠的bounding box进行合并重组,选取有效区域,使用参数“nmsThreshold”。
另外,输入图像大小[inpWidth, inpHeight]为416×416。

2. 准备预训练好的模型
"yolov3.weights"中包含了作者提供的预训练神经网络的权重,“yolov3.cfg”中包含神经网络的配置信息。“coco.names”包含预训练模型可以分类的80中类别名称。

以下代码用于加载模型权重和相关的模型配置。

    // load image from file
    cv::Mat img = cv::imread("./images/img1.png");

    // load class names from file
    string yoloBasePath = "./dat/yolo/";
    string yoloClassesFile = yoloBasePath + "coco.names";
    string yoloModelConfiguration = yoloBasePath + "yolov3.cfg";
    string yoloModelWeights = yoloBasePath + "yolov3.weights"; 

    v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值