SSD(单次多盒检测)用于实时物体检测

简介: Fast-RCNN、Faster-RCNN 等算法为目标检测提供了更准确的结果,但它们对于实时检测来说显得有点慢,于是 SSD 就在这个时候应运而生。

雷锋网(公众号:雷锋网) AI 研习社按:本文为雷锋网字幕组编译的技术博客,原标题 SSD(Single Shot Multi-Box Detection) for real time object detection,作者 Rabin Poudyal。

翻译 | 陶玉龙    校对 | 佟金广     整理 |  孔令双

卷积神经网络在检测图像中的物体时优于其他神经网络结构。很快,研究人员改进了 CNN 来进行对象定位与检测,并称这种结构为 R-CNN(Region-CNN)。R-CNN 的输出是具有矩形框和分类的图像,矩形框围绕着图像中的对象。以下是 R-CNN 的工作步骤:

使用我们称为选择性搜索的算法扫描输入图像,进而查找可能的对象,生成大约 2000 个候选区域, 

在每个候选区域上运行 CNN,

获取每个 CNN 的输出并将其输入:

SVM 来区域进行分类

线性回归器来收紧对象的边界框,如果对象存在

TB1ihnrGv1TBuNjy0FjXXajyXXa.jpg

R-CNN 运用于目标检测

虽然与传统的 CNN 相比,R-CNN 在目标定位,检测和分类方面都取得了很大进步,但在实现目标实时检测方面依旧存在问题。以下是其中的一些问题:     

     1、训练数据很难处理,而且耗时很长

     2、训练分为两个阶段进行(即:候选区域的选择和分类)

     3、网络在推理阶段很慢(处理非训练数据时)

为了改进 R-CNN,研究人员们相继提出了其他算法,如 Fast-RCNN,Faster-RCNN 等。 这些算法为目标检测提供了更准确的结果。 但它们对于实时检测来说显得有点慢。SSD 就在这个时候应运而生,它在准确性和计算速度方面具有良好的平衡。

SSD(单发多边框检测器)的含义 

单发:目标定位和分类在网络的单个前向传递中完成 : 

多框:边界框回归的技术

检测器:对检测到的对象进行分类

结构

TB15b6Qx4uTBuNkHFNRXXc9qpXa.jpg

SSD 结构

SSD 的结构建立在 VGG-16 的基础上。但在这里对 VGG-16 进行了一些微小调整,从 Conv6 层开始,我们用一系列辅助卷积层来代替原先全连接层。因为 VGG-16 可以提供高质量的图像分类和迁移学习来改善结果, 我们将其作为 SSD 的基础网络。通过使用辅助卷积层,我们可以提取图像多个尺度的特征,并逐步减小每个卷积层的尺寸。我已在下一节讨论了它的工作原理。您可以看到 VGG-16 架构的以下图像, 它包含全连接层。

TB1oPjrXjfguuRjSszcXXbb7FXa.jpg

VGG-16 结构

工作机制

TB1ds9tGuySBuNjy1zdXXXPxFXa.jpg

为了训练我们的算法,我们需要一个包含带有对象的图像的训练集,这些对象必须在它们上面有边界框。 通过这种方式学习,算法学习如何在对象上放置矩形框以及放置在何处。 我们通过调参使预测出的边界框和实际的边界框之间的误差最小,从而优化我们的模型以正确地检测对象。与 CNN 不同,我们不仅预测图像中是否存在物体,还需要预测物体在图像中的位置。在训练期间,算法也要学习调整对象边界框中的高度和宽度。 

TB10qYsXjbguuRkHFrdXXb.LFXa.jpg

上图是我们用于目标检测的训练数据集的示例。 这些数据集必须包含在图像中标记类别的对象。 更多默认框会有更准确的检测,但会以速度牺牲作为代价。

Pascal VOC 和 COCO 数据集对初学者而言是一个很好的入门。

处理尺度问题

TB1m6nrXjfguuRjSszcXXbb7FXa.jpg

在左边是一张有几匹马的图像。我们将输入图像划分为网格集。 然后我们围绕这些网格制作几个不同宽高比的矩形框。 我们在这些框中应用卷积来研究这些网格中是否存在对象。这里的一匹黑马在图像中更靠近摄像头。因此,我们绘制的边界框无法识别是否是马,因为边界框没有任何可以识别马匹的特征。

TB1shU6x8mWBuNkSndVXXcsApXa.jpg

如果我们看上述 SSD 的架构,我们可以看到在 conv6 层之后的每个步骤中图像的大小在显著减小。 我们讨论的关于划分网格和在这些网格上查找对象的每个操作都适用于从网络的后面到前面的卷积的每个步骤。 分类器也应用在每个步骤中来检测对象。 因此,由于物体在每个步骤中变得更小,它很容易识别。

SSD 算法还知道如何从一个卷积操作返回到另一个卷积操作。 它不仅会前向运算而且会后向运算。 例如,如果它在 conv4 中看到马,那么它可以返回到 conv6 并且将在马周围绘制矩形框。

原文链接:

https://medium.com/@rabinpoudyal1995/ssd-single-shot-multi-box-detection-for-real-time-object-detection-5f2a06e33a4a

雷锋网 AI 研习社编译。

号外号外~

一个专注于

AI技术发展和AI工程师成长的求知求职社区

诞生啦!

欢迎大家访问以下链接或者扫码体验

https://club.leiphone.com/page/home

TB1HslvGqmWBuNjy1XaXXXCbXXa.jpg TB1hGbsXjrguuRjy0FeXXXcbFXa.jpg
目录
相关文章
|
3月前
|
机器学习/深度学习 算法 开发工具
【YOLOv8量化】普通CPU上加速推理可达100+FPS
【YOLOv8量化】普通CPU上加速推理可达100+FPS
392 0
|
15天前
|
机器学习/深度学习 PyTorch API
ONNX 与实时应用:延迟敏感场景下的部署策略
【8月更文第27天】在实时应用中,如自动驾驶汽车、视频分析系统等,快速响应和高吞吐量是至关重要的。Open Neural Network Exchange (ONNX) 提供了一种标准化的方法来部署机器学习模型,使其能够在不同的硬件和平台上高效运行。本文将探讨如何利用 ONNX 在延迟敏感的应用场景中部署模型,并提供一些策略和示例代码来确保低延迟和高吞吐量。
35 4
|
1月前
|
小程序 API 调度
消费级显卡,17G显存,玩转图像生成模型FLUX.1!
近期stable diffusion的部分核心开发同学,推出了全新的图像生成模型FLUX.1。
|
10月前
|
算法 数据库 异构计算
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!
Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!
|
机器学习/深度学习 编解码 算法
|
机器学习/深度学习 存储 编解码
在消费级GPU调试LLM的三种方法:梯度检查点,LoRA和量化
LLM的问题就是权重参数太大,无法在我们本地消费级GPU上进行调试,所以我们将介绍3种在训练过程中减少内存消耗,节省大量时间的方法:梯度检查点,LoRA和量化。
551 0
|
tengine 数据可视化 API
YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)(二)
YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)(二)
368 0
|
机器学习/深度学习 缓存 算法
YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)(一)
YOLOv5-Lite 树莓派实时 | 更少的参数、更高的精度、更快的检测速度(C++部署分享)(一)
366 0
|
机器学习/深度学习 传感器 算法
单GPU实现20Hz在线决策,最新基于序列生成模型的高效轨迹规划方法解读
单GPU实现20Hz在线决策,最新基于序列生成模型的高效轨迹规划方法解读
137 0
|
数据挖掘 API 开发者
【手机在网状态查询】实时更新,超高准确率
如果你需要实行一个需要查询身份证归属地信息的相关功能,那么身份证归属地查询API是必不可少的。它可以通过调用API接口实现快速、自动地查询身份证归属地信息,而且准确度高,效率高。
183 0
【手机在网状态查询】实时更新,超高准确率