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

    文章

    404

    浏览量

    18333
  • 自动驾驶
    +关注

    关注

    791

    文章

    14687

    浏览量

    176870
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于FD-SST 的无人机目标跟踪系统的设计与实现|技术集结

    应用实现功能1.本应用基于睿擎派,实现了对无人机目标实时跟踪,并将跟踪结果用于驱动两轴转台完成自动指向。主要功能包括:使用FD-SST算法在视频流中
    的头像 发表于 12-10 19:32 4962次阅读
    基于FD-SST 的无人机<b class='flag-5'>目标</b>跟踪系统的设计与<b class='flag-5'>实现</b>|技术集结

    新思科技亮相微软Ignite大会,展示数字孪生赋能的制造流程优化框架

    开源框架作为实现数字化转型的蓝图,集成了GPU原生的Ansys Fluent®流体仿真软件,其集成了英伟达Omniverse库和云计算,进而实现可扩展部署。 · 该解决方案已被Krones AG率先采用,通过物理精确的虚拟装配线
    的头像 发表于 12-01 14:41 236次阅读

    技术分享 | RK3588增加Xenomai3实时补丁

    Xenomai是一套为嵌入式系统设计的实时开发框架,通过“双内核”架构,让Linux既能处理复杂的通用任务,又能可靠地完成那些对响应时间有极端要求的任务,广泛用于工业自动化、机器人、航空航天等对实时性要求极高的场景。本篇文章以启
    的头像 发表于 11-27 17:29 1262次阅读
    技术分享 | RK3588增加Xenomai<b class='flag-5'>3</b><b class='flag-5'>实时</b>补丁

    订单实时状态查询接口技术实现

    、可靠的订单实时状态查询接口,涵盖接口设计、技术选型、代码实现和性能优化。我们将使用Python和Flask框架作为示例,确保内容真实可靠,适合开发人员参考。 1. 接口设计原则 订单实时
    的头像 发表于 10-21 17:58 484次阅读
    订单<b class='flag-5'>实时</b>状态查询接口技术<b class='flag-5'>实现</b>

    NVIDIA TensorRT LLM 1.0推理框架正式上线

    TensorRT LLM 作为 NVIDIA 为大规模 LLM 推理打造的推理框架,核心目标是突破 NVIDIA 平台上的推理性能瓶颈。为实现这一目标,其构建了多维度的核心
    的头像 发表于 10-21 11:04 808次阅读

    【机器视觉】睿擎平台支持NCNN AI 推理框架,轻松实现实时目标检测( 睿擎线下 Workshop 报名已开启)|产品动

    在工业4.0与边缘计算加速发展的背景下,嵌入式设备的实时目标检测能力已成为智能制造等领域的核心技术需求。然而,移动端设备受限于算力与能耗,传统深度学习框架难以兼顾效率与精度。为此,睿擎
    的头像 发表于 08-20 17:40 4865次阅读
    【机器视觉】睿擎平台支持NCNN AI 推理<b class='flag-5'>框架</b>,轻松<b class='flag-5'>实现实时</b><b class='flag-5'>目标</b><b class='flag-5'>检测</b>( 睿擎线下 Workshop 报名已开启)|产品动

    3D激光轮廓仪可实现在线3D测量和检测

    Z-Trak™ Express 1K5 系列专为实现经济高效的在线3D测量和检测而设计,具有高速检测能力和实时处理性能。
    的头像 发表于 08-08 17:17 796次阅读
    <b class='flag-5'>3</b>D激光轮廓仪可<b class='flag-5'>实现</b>在线<b class='flag-5'>3</b>D测量和<b class='flag-5'>检测</b>

    迅为八核高算力RK3576开发板摄像头实时推理测试 ppyoloe目标检测

    迅为八核高算力RK3576开发板摄像头实时推理测试 ppyoloe目标检测
    的头像 发表于 07-14 15:18 1106次阅读
    迅为八核高算力RK3576开发板摄像头<b class='flag-5'>实时</b>推理测试 ppyoloe<b class='flag-5'>目标</b><b class='flag-5'>检测</b>

    基于LockAI视觉识别模块:C++目标检测

    的基本概念,并提供了详细的API文档说明,帮助开发者理解和实现目标检测与可视化功能。通过上述流程,可以构建高效的实时目标检测系统,满足多种
    发表于 06-06 14:43

    堆焊过程熔池相机实时缺陷检测技术

    在现代工业制造中,堆焊技术广泛应用于机械、能源、化工、航空航天等领域,用于修复磨损部件或增强工件表面性能。然而,传统堆焊过程的质量控制主要依赖人工经验或焊后检测,难以实现实时监控,导致缺陷发现滞后
    的头像 发表于 05-15 17:34 584次阅读
    堆焊过程熔池相机<b class='flag-5'>实时</b>缺陷<b class='flag-5'>检测</b>技术

    一种实时多线程VSLAM框架vS-Graphs介绍

    ,vSGraphs优于当前最先进的VSLAM方法,在真实数据上平均降低3.38%的轨迹误差,最大降幅达9.58%。同时,所提出的框架还具有良好的可扩展性,能够处理大规模场景。此外,仅通过视觉特征,本框架实现的语义实体
    的头像 发表于 04-19 14:07 751次阅读
    一种<b class='flag-5'>实时</b>多线程VSLAM<b class='flag-5'>框架</b>vS-Graphs介绍

    RV1126 实现人脸检测方案

    基于RV1126开发板实现人脸检测方案,充分体现了电子方面的实践经验和目标检测技术。
    的头像 发表于 04-14 09:25 703次阅读
    RV1126 <b class='flag-5'>实现</b>人脸<b class='flag-5'>检测</b>方案

    在英特尔AIPC上利用LabVIEW与YOLOv11实现目标检测

    Toolkit for OpenVINO for LabVIEW(以下简称AIVT-OV),在 intel AIPC 设备上部署YOLO11模型,并实现实时目标检测。 1 前言 1.  intel AIPC简介
    的头像 发表于 02-17 10:01 1747次阅读
    在英特尔AIPC上利用LabVIEW与YOLOv11<b class='flag-5'>实现目标</b><b class='flag-5'>检测</b>

    采用华为云 Flexus 云服务器 X 实例部署 YOLOv3 算法完成目标检测

    YOLOv3 在图像识别和目标检测领域展现出了卓越的性能。为了满足日益增长的数据处理需求,本项目利用华为云最新推出的 Flexus 云服务器 X 实例的强大计算能力,部署 YOLOv3
    的头像 发表于 01-02 12:00 1040次阅读
    采用华为云 Flexus 云服务器 X 实例部署 YOLOv<b class='flag-5'>3</b> 算法完成<b class='flag-5'>目标</b><b class='flag-5'>检测</b>

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    广泛的应用,然而,在移动端工业领域的实际应用中,对目标检测算法提出了更为苛刻的要求:需要实现高速度、高精度、小体积、易部署等特性。为应对这一挑战,百度于2021年末发布了一篇关于移动端性能卓越的
    发表于 12-19 14:33