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

    文章

    401

    浏览量

    17464
  • 自动驾驶
    +关注

    关注

    784

    文章

    13757

    浏览量

    166302
收藏 人收藏

    评论

    相关推荐

    手把手教你如何自制目标检测框架

    今天,给大家分享一篇来自知乎的一篇关于目标检测相关的一些内容, 本文基于Pytorch进行编写。
    的头像 发表于 11-14 16:39 175次阅读
    手把手教你如何自制<b class='flag-5'>目标</b><b class='flag-5'>检测</b><b class='flag-5'>框架</b>

    使用OpenVINO C# API部署YOLO-World实现实时开放词汇对象检测

    YOLO-World是一个融合了实时目标检测与增强现实(AR)技术的创新平台,旨在将现实世界与数字世界无缝对接。该平台以YOLO(You O
    的头像 发表于 08-30 16:27 597次阅读
    使用OpenVINO C# API部署YOLO-World<b class='flag-5'>实现实时</b>开放词汇对象<b class='flag-5'>检测</b>

    目标检测与识别技术有哪些

    目标检测与识别技术是计算机视觉领域的重要研究方向,广泛应用于安全监控、自动驾驶、医疗诊断、工业自动化等领域。 目标检测与识别技术的基本概念 目标
    的头像 发表于 07-17 09:40 575次阅读

    目标检测识别主要应用于哪些方面

    介绍目标检测识别的应用领域,以及其在各个领域的具体应用情况。 安全监控 安全监控是目标检测识别应用最广泛的领域之一。在安全监控系统中,目标
    的头像 发表于 07-17 09:34 1004次阅读

    基于深度学习的小目标检测

    在计算机视觉领域,目标检测一直是研究的热点和难点之一。特别是在小目标检测方面,由于小目标在图像中所占比例小、特征不明显,使得
    的头像 发表于 07-04 17:25 827次阅读

    英码科技EA500I基于昇腾Mind SDK实现实时人体关键点检测

    在教育、体育、安防、交通、医疗等领域中,实时人体关键点检测应用发挥着至关重要的作用,比如在体育训练时,实时人体关键点检测可以精确、实时地捕捉
    的头像 发表于 04-21 17:44 987次阅读
    英码科技EA500I基于昇腾Mind SDK<b class='flag-5'>实现实时</b>人体关键点<b class='flag-5'>检测</b>

    英码科技EA500I基于昇腾Mind SDK实现实时人体关键点检测

    在教育、体育、安防、交通、医疗等领域中,实时人体关键点检测应用发挥着至关重要的作用,比如在体育训练时,实时人体关键点检测可以精确、实时地捕捉
    的头像 发表于 04-20 08:25 543次阅读
    英码科技EA500I基于昇腾Mind SDK<b class='flag-5'>实现实时</b>人体关键点<b class='flag-5'>检测</b>

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

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

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

    YOLOv9引入了可编程梯度信息 (PGI) 和广义高效层聚合网络 (GELAN) 等开创性技术,不仅增强了模型的学习能力,还确保了在整个检测过程中保留关键信息,从而实现了卓越的准确性和性能。
    的头像 发表于 03-18 11:38 1173次阅读
    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 1481次阅读
    百度开源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 678次阅读
    在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

    如何搞定自动驾驶3D目标检测

    可用于自动驾驶场景下基于图像的3D目标检测的数据集总结。其中一些数据集包括多个任务,这里只报告了3D检测基准(例如KITTI
    发表于 01-05 10:43 569次阅读
    如何搞定自动驾驶<b class='flag-5'>3</b>D<b class='flag-5'>目标</b><b class='flag-5'>检测</b>!