0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SlimYOLOv3框架如何实现实时目标检测

汽车玩家 来源:人工智能遇见磐创 作者:人工智能遇见磐创 2020-05-04 09:58 次阅读

1. 介绍

人类可以在几毫秒内在我们的视线中挑选出物体。事实上,你现在就环顾四周,你将观察到周围环境并快速检测到存在的物体,并且把目光回到我们这篇文章来。大概需要多长时间?

这就是实时目标检测。如果我们能让机器做到这一点有多酷?开心的是现在我们就可以做到!主要由于最近在深度学习计算机视觉方面的突破,我们不仅可以依靠目标检测算法来检测图像中的物体,而且还可以以人类的速度和准确度来实现。

我们将首先看看目标检测的各种细微差别(包括你可能面临的潜在挑战)。然后,我将介绍SlimYOLOv3框架并深入探讨它如何工作以实时检测目标。

2. 什么是目标检测?

在我们深入研究如何实时检测目标之前,让我们首先介绍一下基础知识。如果你是计算机视觉领域初学者,这一点尤为重要。

目标检测是我们用于识别图像中目标位置的技术。如果图像中有单个目标,并且我们想要检测该目标,则称为图像定位。如果图像中有多个目标怎么办?嗯,这就是目标检测!让我用一个例子解释一下:

左侧的图像具有单个目标(狗),因此检测该目标将是图像定位问题。右边的图像有两个目标(一只猫和一只狗)。检测这两个目标则是目标检测问题。

现在,你可能想知道为什么需要目标检测?更重要的是,为什么我们需要执行实时目标检测?我们将在下一节回答这些问题。

3. 目标检测的应用

目标检测现在正在业界广泛使用。任何从事计算机视觉工作的人都应该清楚地了解这些应用。

目标检测的使用范围从个人安全到自动车辆系统。让我们讨论一些当前和无处不在的应用。

3.1. 自动驾驶

这是目标检测最有趣和最新的应用之一。

自动驾驶汽车是能够在很少或没有人为引导的情况下自行移动的车辆。现在,为了让汽车决定它的行动,即要么向前移动,要么停车,要么转弯,它必须知道它周围所有物体的位置。使用目标检测技术,汽车可以检测其他汽车,行人,交通信号等物体。

3.2. 人脸检测与人脸识别

人脸检测和识别可能是计算机视觉中应用最广泛的应用。每次在Facebook,Instagram或Google相册上传图片时,它都会自动检测图像中的人物。

3.3. 行为识别

你会喜欢这个,目的是识别一个或多个图像系列的活动或动作。目标检测是其背后的核心概念,它检测行为然后识别操作。这是一个很酷的例子:

3.4. 目标计数

我们可以使用目标检测算法来计算图像中的目标数量,甚至是实时视频中的目标数量。计算目标的数量有很多方面,包括分析存储表现或估计人群中的人数。

而大多数应用程序需要实时分析。我们行业的动态性质倾向于即时结果,而这正是实时目标检测的结果。

4. 为什么要进行实时目标检测?

我们以自动驾驶汽车为例。考虑到我们已经训练了一个目标检测模型,它需要几秒钟(比如每个图像2秒)来检测图像中的物体,我们最终将这个模型部署在自动驾驶汽车中。

你觉得这个模型会好吗?汽车能够检测到它前面的物体并采取相应的措施吗?

当然不是!这里的推理时间太多了。汽车将花费大量时间做出可能导致事故等严重情况的决策。因此,在这种情况下,我们需要一个能够为我们提供实时结果的模型。该模型应该能够检测目标并在几微秒内进行推断。

用于目标检测的一些常用算法包括RCNN,Fast RCNN,Faster RCNN和YOLO。

SlimYOLOv3框架如何实现实时目标检测

本文的目的不是深入研究这些技术,而是了解用于实时目标检测的SlimYOLOv3架构。当我们不需要实时检测时,这些技术非常有效。不幸的是,当面对实时分析时,他们往往不是很好。让我们来看看在尝试构建自己的实时目标检测模型时可能遇到的一些挑战。

5. 实时目标检测的挑战

实时目标检测模型应该能够感知环境,解析场景并最终做出相应的反应。模型应该能够识别场景中存在的所有类型的目标。一旦识别出目标的类型,模型应该通过在每个目标周围定义边界框来定位这些目标的位置。

所以,这里有两个功能。首先,对图像中的目标进行分类(图像分类),然后使用边界框(目标检测)定位目标。

当我们处理实时问题时,我们可能面临多重挑战:

我们如何处理变化?变化可能与物体形状,亮度等有所不同。

部署目标检测模型。这通常需要大量的内存和计算能力,特别是在我们每天使用的机器上

最后,我们还必须在检测性能和实时要求之间保持平衡。通常,如果满足实时要求,我们会看到性能会有所下降,反之亦然。因此,平衡这两个方面也是一个挑战

那么我们如何克服这些挑战呢?好吧,这是文章的关键所在--SlimYOLOv3框架!SlimYOLOv3旨在处理这些限制并以令人难以置信的精度执行实时目标检测。

让我们首先了解SlimYOLOv3是什么,然后我们将介绍架构细节以更好地理解框架。

6. SlimYOLOv3介绍

你能猜出深度学习管道是如何工作的吗?以下是典型流程的基本摘要:

首先,我们设计模型结构

微调该模型的超参数

训练模型

最后评估模型

模型中有多个组件或连接。经过几次迭代后,其中一些连接变得多余,因此我们可以从模型中删除这些连接。删除这些连接称为剪枝。

剪枝不会显着影响模型的性能,并且计算要求将显着降低。因此,在SlimYOLOv3中,在卷积层上执行剪枝。我们将在下一部分中了解有关如何完成此剪枝的更多信息

剪枝后,我们对模型进行微调以补偿模型性能的下降。

与原始YOLOv3相比,剪枝后的模型导致较少的训练参数和较低的计算要求,因此对于实时目标检测更方便。

现在让我们讨论一下SlimYOLOv3的结构,以便更好,更清楚地理解这个框架底层的工作原理

7. 了解SlimYOLOv3的结构

下图说明了SlimYOLOv3的工作原理:

SlimYOLOv3框架如何实现实时目标检测

SlimYOLOv3是YOLOv3的修改版本。YOLOv3的卷积层被剪枝以实现小和更快的版本。但是等等, 为什么我们首先使用YOLOv3?为什么不用RCNN,Faster RCNN等其他目标检测算法呢?

7.1. 为什么是YOLOv3?

SlimYOLOv3框架如何实现实时目标检测

基本上有两种类型深度目标检测模型:

Two-stage detectors

属于RCNN系列的探测器属于Two-stage detectors。该过程包含两个阶段。首先,我们提取候选区域,然后对每个候选区域进行分类并预测边界框。这些探测器通常可以提供良好的探测精度,但这些探测器对于候选区域的推断时间需要大量的计算和实时存储

Single-stage detectors

属于YOLO系列的探测器属于Single-stage detectors。这是一个单阶段的过程。这些模型利用预定义的锚点来覆盖图像中的空间位置,比例和纵横比。因此,我们不需要额外的分支来提取候选区域。由于所有计算都在单个网络中,因此它们比Single-stage detectors更可能运行得更快。YOLOv3也是Single-stage detectors,目前是目标检测的最先进技术

7.2. 稀疏训练(Sparsity training)

下一步是YOLOv3模型的稀疏训练:

SlimYOLOv3框架如何实现实时目标检测

在这里,我们使用以下步骤剪枝YOLOv3模型:

首先,我们评估YOLOv3模型的每个组件的重要性。我将简要讨论如何确定这些组件的重要性的细节

一旦评估了重要性,我们就会删除不太重要的组件

移除的组件可以是单独的神经连接或网络结构。为了定义每个组件的重要性,我们根据它们的贡献对网络的每个神经元进行排序。有多种方法可以做到:

我们可以采用L1 / L2正则化神经元权重的平均值

每个神经元的平均激活

神经元输出不为零的次数

在SlimYOLOv3中,基于被认为是缩放因子的L1正则化神经元权重的平均值来计算重要性。这些缩放因子的绝对值是通道的重要性。为了加速收敛并改进YOLOv3模型的泛化,在每个卷积层之后使用批量归一化层。

7.3. SlimYOLOv3

然后我们定义一个全局阈值,比如说ŷ,并丢弃任何缩放因子小于此阈值的通道。通过这种方式,我们修剪了YOLOv3架构并获得了SlimYOLOv3架构:

SlimYOLOv3框架如何实现实时目标检测

在评估缩放因子时,尚未考虑YOLOv3架构的最大池化层和上采样层。

7.4. Fine-tuning

SlimYOLOv3框架如何实现实时目标检测

我们现在有SlimYOLOv3模型,那么下一步是什么?我们对其进行微调以补偿性能下降,并最终评估微调模型以确定修剪后的模型是否适合部署。

稀疏训练实际上在减小比例因子方面非常有效,因此使得卷积层的特征通道稀疏。以较大的惩罚因子α= 0.01训练会导致比例因子衰减,并且模型开始过度拟合。

在SlimYOLOv3中,惩罚因子α= 0.0001用于执行通道修建。

8. 结语

我们在本文中介绍了很多内容。我们看到了不同的目标检测算法,如RCNN,Fast RCNN,Faster RCNN,以及目前最先进的目标检测YOLO。

然后,我们介绍了SlimYOLOv3架构,它是YOLO的修改版本,可用于实时目标检测。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 框架
    +关注

    关注

    0

    文章

    297

    浏览量

    17038
  • 自动驾驶
    +关注

    关注

    773

    文章

    12991

    浏览量

    163110
收藏 人收藏

    评论

    相关推荐

    在控道AI盒子上基于YOLOv9实现实时目标检测实战

    随着计算机视觉技术的不断进步,目标检测已经成为许多应用的核心组件,如自动驾驶、视频监控、智能安防等。
    的头像 发表于 04-12 14:30 193次阅读
    在控道AI盒子上基于YOLOv9<b class='flag-5'>实现实时</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b>实战

    如何使用Rd-03E雷达实现实时监测目标距离呢?

    Rd-03E基于STM32F103C8T6平台以UART为抓手实现监测目标距离可视化,通过GPIO赋能LED、Buzzer进一步强化视觉、听觉感知。
    的头像 发表于 03-25 14:44 170次阅读
    如何使用Rd-03E雷达<b class='flag-5'>实现实时</b>监测<b class='flag-5'>目标</b>距离呢?

    OpenVINO™ Java API应用RT-DETR做目标检测器实战

    本文将从零开始详细介绍环境搭建的完整步骤,我们基于英特尔开发套件AIxBoard为硬件基础实现了Java在Ubuntu 22.04系统上成功使用OpenVINO™ Java API,并且成功运行了RT-DETR实现实时端到端目标
    的头像 发表于 03-18 15:04 172次阅读
    OpenVINO™ Java API应用RT-DETR做<b class='flag-5'>目标</b><b class='flag-5'>检测</b>器实战

    OpenVINO工具包部署YOLO9模型实现实时目标检测

    YOLOv9引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,不仅增强了模型的学习能力,还确保了在整个检测过程中保留关键信息,从而实现了卓越的准确性和性能。
    的头像 发表于 03-18 11:38 323次阅读
    OpenVINO工具包部署YOLO9模型<b class='flag-5'>实现实时</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b>

    使用STM32H7的AD进行了7M频率的采集信号,采集进去后可以实现实时处理吗?

    使用STM32H7的AD进行了7M频率的采集信号,采集进去后可以实现实时处理吗?
    发表于 03-08 08:10

    百度开源DETRs在实时目标检测中胜过YOLOs

    这篇论文介绍了一种名为RT-DETR的实时检测Transformer,是第一个实时端到端目标检测器。
    的头像 发表于 03-06 09:24 273次阅读
    百度开源DETRs在<b class='flag-5'>实时</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b>中胜过YOLOs

    在ELF 1 开发板上实现读取摄像头视频进行目标检测

    深度学习模型的项目,该项目能够实时读取摄像头视频流并实现对画面中的物体进行精准的目标检测。项目所需的硬件设备:1、基于NXP(恩智浦)i.MX6ULL的ELF1开
    的头像 发表于 01-24 10:38 263次阅读
    在ELF 1 开发板上<b class='flag-5'>实现</b>读取摄像头视频进行<b class='flag-5'>目标</b><b class='flag-5'>检测</b>

    【EASY EAI Nano】RV1126实时读取摄像头并进行yolo检测显示

    实现了三个并行模块,分别是 摄像头读取,使用opencv转换到适合大小 yolo检测 托管到Qt进行现实 检测的DEMO从每帧10次改到每帧2次,可以看到还是具备一定
    发表于 01-14 18:53

    ROS机器人如何使用Navigation导航包实现实时定位

    本篇文章主要分析,常规的ROS机器人是如何使用Navigation导航包实现实时定位的,定位精度的决定性因素等内容,结构上分为详细介绍、概括总结、深入思考三大部分。
    的头像 发表于 12-03 11:00 1278次阅读
    ROS机器人如何使用Navigation导航包<b class='flag-5'>实现实时</b>定位

    基于紫光同创FPGA的多路视频采集与AI轻量化加速的实时目标检测系统

    基于紫光同创FPGA的多路视频采集与AI轻量化加速的实时目标检测系统#2023集创赛#紫光同创#小眼睛科技助力紫光同创高校生态建设@小眼睛科技 获奖作品展示:华南理工大学+CR8_Pro队
    发表于 11-02 17:51

    什么情况下对极几何约束会不成立?

    目标检测的结果可以和场景流估计结合,可以通过多任务框架将两个任务统一到一个网络框架中。例如,一种方法是使用"PillarFlowNet",它同时进行LiDAR场景流估计和
    的头像 发表于 07-29 16:27 336次阅读
    什么情况下对极几何约束会不成立?

    如何学习基于Tansformer的目标检测算法

    视觉感知算法的核心在于精准实时地感知周围环境,以便下游更好地进行决策规划,而 目标检测任务 就是视觉感知的 基础 。不仅在自动驾驶领域,在机器人导航、工业检测、视频监控等领域,
    的头像 发表于 06-25 10:37 386次阅读
    如何学习基于Tansformer的<b class='flag-5'>目标</b><b class='flag-5'>检测</b>算法

    基于FPGA的实时图像边缘检测系统设计(附代码)

    接口实时显示检测得到的图像边缘信息。 1.3.2 系统的设计流程 本课题基于FPGA实现,主要涉及到以下内容:1、摄像头接口的驱动;2、图像数据的实时捕获;
    发表于 06-21 18:47

    基于 FPGA 的目标检测网络加速电路设计

    CNN 更容易满足实际应用场景中 的低功耗、实时性要求。而且目标检测算法发展迅速,针对 CNN 的硬件加速研究也大有可 为。所以本项目计划使用 PYNQ-Z2 开发板设计一个硬件电路来加速
    发表于 06-20 19:45

    ​使用旭日X3派实现手势检测

    本篇博客通过旭日X3搭载手势识别算法,实现实时检测,同时测试其运行性能。
    的头像 发表于 06-02 17:36 549次阅读
    ​使用旭日X3派<b class='flag-5'>实现</b>手势<b class='flag-5'>检测</b>