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

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

3天内不再提示

深入了解目标检测深度学习算法的技术细节

颖脉Imgtec 2024-04-30 08:27 次阅读

来源:智能卫星研究院、机器视觉


本文将讨论目标检测的基本方法(穷尽搜索、R-CNN、Fast R-CNN和Faster R-CNN),并尝试理解每个模型的技术细节。为了让经验水平各不相同的读者都能够理解,文章不会使用任何公式来进行讲解。


开启目标检测的第一步

这是只鸟还是架飞机?—— 图像分类

目标检测(或识别)基于图像分类。图像分类是通过上图所示的像素网格,将图像分类为一个类类别。目标识别是对图像中的对象进行识别和分类的过程。

为了使模型能够学习图像中对象的类别和位置,目标必须是一个五维标签(类别,x, y,宽度,长度)。


对象检测方法的内部工作

一种费机器(奢侈计算)的方法:穷举搜索

最简单的目标检测方法是对图像的各个子部分使用图像分类器,让我们来逐个考虑:

首先,选择想要执行目标检测的图像。

然后将该图像分割成不同的部分,或者说“区域”。

把每个区域看作一个单独的图像。

使用经典的图像分类器对每幅图像进行分类。

最后,将检测到目标的区域的所有图像与预测标签结合。

这种方法存在一个问题,对象可能具有的不同纵横比和空间位置,这可能导致对大量区域进行不必要的昂贵计算。它在计算时间方面存在太大的瓶颈,从而无法用于解决实际问题。


区域提议方法和选择性搜索

最近有种方法是将问题分解为两个任务:首先检测感兴趣的区域,然后进行图像分类以确定每个对象的类别。

第一步通常是使用区域提议方法。这些方法输出可能包含感兴趣对象的边界框。如果在一个区域提议中正确地检测到目标对象,那么分类器也应该检测到了它。这就是为什么对这些方法而言,快速和高回应率非常重要。重要的是这两个方法不仅要是快速的,还要有着很高的回应率。

这两个方法还使用了一种聪明的体系结构,其中目标检测和分类任务的图像预处理部分相同,从而使其比简单地连接两个算法更快。选择性搜索是最常用的区域提议方法之一。

它的第一步是应用图像分割。

从图像分割输出中,选择性搜索将依次进行:

从分割部分创建边界框,然后将其添加到区域建议列表中。

根据四种相似度:颜色,纹理,大小和形状,将几个相邻的小片段合并为较大的片段。

返回到第一步,直到该部分覆盖了整个图像。

层次分组在了解了选择性搜索的工作原理后,接着看一些使用该法最常见的目标检测算法。


第一目标检测算法:R-CNN

Ross Girshick等人提出了区域CNN(R-CNN),允许选择性搜索与CNN结合使用。实际上,对于每个区域方案(如本文中的2000),一个正向传播会通过CNN生成一个输出向量。这个向量将被输入到one-vs-all分类器中。每个类别一个分类器,例如一个分类器设置为如果图像是狗,则标签=1,否则为0,另一个分类器设置为如果图像是猫,标签= 1,否则为0,以此类推。R-CNN使用的分类算法是SVM。

但如何将该地区标记为提议呢?当然,如果该区域完全匹配真值,可以将其标为1,如果给定的对象根本不存在,这个对象可以被标为0。

如果图像中存在对象的一部分怎么办?应该把这个区域标记为0还是1?为了确保训练分类器的区域是在预测一幅图像时可以实际获得的区域(不仅仅是那些完美匹配的区域),来看看选择性搜索和真值预测的框的并集(IoU)。

IoU是一个度量,用预测的框和真值框的重叠面积除以它们的并集面积来表示。它奖励成功的像素检测,惩罚误报,以防止算法选择整个图像。

6c4b31b0-0688-11ef-9118-92fbcf53809c.jpg

回到R-CNN方法,如果IoU低于给定的阈值(0.3),那么相对应的标签将是0。

在对所有区域建议运行分类器后,R-CNN提出使用一个特定类的边界框(bbox)回归量来优化边界框。bbox回归量可以微调边界框的边界位置。例如,如果选择性搜索已经检测到一只狗,但只选择了它的一半,而意识到狗有四条腿的bbox回归量,将确保狗的整个身体被选中。

也多亏了新的bbox回归预测,我们可以使用非最大抑制(NMS)舍弃重叠建议。这里的想法是识别并删除相同对象的重叠框。NMS根据分类分数对每个类的建议进行排序,并计算具有最高概率分数的预测框与所有其他预测框(于同一类)的IoU。如果IoU高于给定的阈值(例如0.5),它就会放弃这些建议。然后对下一个最佳概率重复这一步。

6ca34076-0688-11ef-9118-92fbcf53809c.jpg

综上所述,R-CNN遵循以下步骤:

根据选择性搜索创建区域建议(即,对图像中可能包含对象的部分进行预测)。

将这些地区带入到pre-trained模型,然后运用支持向量机分类子图像。通过预先训练的模型运行这些区域,然后通过SVM(支持向量机)对子图像进行分类。

通过边界框预测来运行正向预测,从而获得更好的边界框精度。

在预测过程中使用NMS去除重叠的建议。

6cc1142a-0688-11ef-9118-92fbcf53809c.jpg

R-CNN 网络不过,R-CNN也有一些问题:

  • 该方法仍然需要分类所有地区建议,可能导致达到计算瓶颈——不可能将其用于实时用例。
  • 在选择性搜索阶段不会学习,可能导致针对某些类型的数据集会提出糟糕的区域建议。

小小的改进:Fast R-CNN(快速R-CNN)

Fast R-CNN,顾名思义,比R-CNN快。它基于R-CNN,但有两点不同:

不再向CNN提供对每个地区的提议,通过对CNN提供整幅图像来生成一个卷积特性映射(使用一个过滤器将矢量的像素转换成另一个矢量,能得到一个卷积特性映射)。接下来,建议区域被识别与选择性搜索,然后利用区域兴趣池(RoI pooling)层将它们重塑成固定大小,从而能够作为全连接层的输入。

Fast-RCNN使用更快,精度更高的softmax层而不是SVM来进行区域建议分类。

以下是该网络的架构:

如下所示,Fast R-CNN在训练和测试方面比R-CNN要快得多。但是,受选择性搜索方法的影响,该方法仍然存在瓶颈。

6cf694c4-0688-11ef-9118-92fbcf53809c.jpg


Faster R-CNN(更快的R-CNN)

虽然Fast R-CNN比R-CNN快得多,但其瓶颈仍然是选择性搜索,因为它非常耗时。因此,任少卿等人设计了更快R-CNN来解决这个问题,并提出用一个非常小的卷积网络区域提议网Region Proposal network(RPN)代替选择性搜索来寻找感兴趣的区域。

简而言之,RPN是一个直接寻找区域建议的小型网络。一种简单的方法是创建一个深度学习模型,输出x_min、y_min、x_max和x_max来获得一个区域建议的边界框(如果我们想要2000个区域,那么就需要8000个输出)。然而,有两个基本问题:

图像的大小和比例可能各不相同,所以很难创建一个能正确地预测原始坐标的模型。

在预测中有一些坐标排序约束(x_min < x_max, y_min < y_max)。

为了克服这个问题,我们将使用锚:锚是在图像上预设好不同比例和比例的框。(锚点是预定义的框,它们具有不同的比例,并在整个图像上缩放。)

例如,对于给定的中心点,通常从三组大小(例如,64px, 128px, 256px)和三种不同的宽高比(1/1,1/2,2/1)开始。在本例中,对于图像的给定像素(方框的中心),最终会有9个不同的方框。

6d2cd32c-0688-11ef-9118-92fbcf53809c.jpg锚-比例和缩放

那么一张图片总共有多少个锚点呢?

我们不打算在原始图像上创建锚点,而是在最后一个卷积层的输出特征图上创建锚点,这一点非常重要。例如,对于一个1000*600的输入图像,由于每个像素有一个锚点,所以有1000 *600*9=5400000个锚点,这是错误的。确实,因为要在特征图谱上创建它们,所以需要考虑子采样比率,即由于卷积层的大步移动,输入和输出维度之间的因子减少。

在示例中,如果我们将这个比率设为16(像在VGG16中那样),那么特征图谱的每个空间位置将有9个锚,因此“只有”大约20000个锚(5400000/ 16^2)。这意味着输出特征中的两个连续像素对应于输入图像中相距16像素的两个点。注意,这个下降采样比率是Faster R-CNN的一个可调参数

锚点中心现在剩下的问题是如何从那20000个锚到2000个区域建议(与之前的区域建议数量相同),这是RPN的目标。


如何训练区域建议网络

要实现这一点,需要RPN告知框包含的是对象还是背景,以及对象的精确坐标。输出预测有作为背景的概率,作为前景的概率,以及增量Dx, Dy, Dw, Dh,它们是锚点和最终建议之间的差异。

1. 第一,我们将删除跨边界锚(即因为图像边界而被减去的锚点),这给我们留下了约6000张图像。

2. 如果存在以下两个条件中的任一,我们需要标签锚为正:

在所有锚中,该锚具有最高的IoU,并带有真值框。

锚点至少有0.7的IoU,并带有真值框。

3. 如果锚的IoU在所有真值框中小于0.3,需要标签其为负。

4. 舍弃所有剩下的锚。

5. 训练二进制分类和边界框回归调整。

最后,关于实施的几点说明:

希望正锚和负锚的数量在小批处理中能够平衡。

因为想尽量减少损失而使用了多任务损失,这是有意义的——损失有错误预测前景或背景的错误,以及方框的准确性的错误。

使用预先训练好的模型中的权值来初始化卷积层。

如何使用区域建议网络

所有锚(20000)计入后得到新的边界框和成为所有边界框的前景(即成为对象)的概率。

使用non-maximum抑制。

建议选择:最后,仅保留按分数排序的前N个建议(当N=2000,回到2000个区域建议)。

像之前的方法一样,最终获得了2000个方案。尽管看起来更复杂,这个预测步骤比以前的方法更快更准确。

下一步是使用RPN代替选择性搜索,创建一个与Fast R-CNN相似的模型(即RoI pooling和一个分类器+bbox回归器)。然而,不像之前那样,把这2000个建议进行裁剪,然后通过一个预先训练好的基础网络进行传递。而是重用现有的卷积特征图。实际上,使用RPN作为提案生成器的一个好处是在RPN和主检测器网络之间共享权值和CNN。

使用预先训练好的网络对RPN进行训练,然后进行微调。

使用预先训练好的网络对检测器网络进行训练,然后进行微调。使用来自RPN的建议区域。

使用来自第二个模型的权重对RPN进行初始化,然后进行微调——这将是最终的RPN模型)。

最后,对检测器网络进行微调(RPN权值固定)。CNN的特色图将在两个网络之间共享,请参见下图。

6d68882c-0688-11ef-9118-92fbcf53809c.jpgFaster R-CNN网络

综上所述,Faster R-CNN比之前的方法更准确,比Fast-R-CNN快10倍左右,这是一个很大的进步,也是实时评分的开始。

6d85a2e0-0688-11ef-9118-92fbcf53809c.jpg

即便如此,区域建议检测模型对于嵌入式系统来说还是不够,因为这些模型太笨重,而且对于大多数实时评分案例来说速度也不够快——最后一例是大约每秒检测5张图像。

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

    关注

    0

    文章

    90

    浏览量

    11905
  • 目标检测
    +关注

    关注

    0

    文章

    204

    浏览量

    15589
  • 深度学习
    +关注

    关注

    73

    文章

    5492

    浏览量

    120964
收藏 人收藏

    评论

    相关推荐

    专家开讲:深入了解电池技术 ──Part 1

    。笔者不会一一详细介绍所有的电池技术,只选择一些常见或是值得认识的;而在接下来的专栏里,笔者将开始介绍电池分类、常见规格以及专业术语,如果你有特别想知道的电池技术,欢迎留言!扩展阅读:专家开讲:深入了解
    发表于 08-18 09:33

    专家开讲:深入了解电池技术──Part 3

    资深工程师 Ivan Cowie 的「深入了解电池技术」专栏Part 3来啰!这次要介绍的是铅酸电池(lead-acidbatteries)技术。铅酸电池是在1859年由法国物理学家Gaston
    发表于 08-18 09:37

    【HarmonyOS HiSpark AI Camera】基于深度学习目标检测系统设计

    项目名称:基于深度学习目标检测系统设计试用计划:尝试在硬件平台实现对Yolo卷积神经网络的加速运算,期望提出的方法能够使目标
    发表于 09-25 10:11

    如何使用深度学习进行视频行人目标检测

    近年来,随着深度学习在计算机视觉领域的广泛应用,基于深度学习的视频运动目标检测受到广大学者的青睐
    发表于 11-19 16:01 22次下载
    如何使用<b class='flag-5'>深度</b><b class='flag-5'>学习</b>进行视频行人<b class='flag-5'>目标</b><b class='flag-5'>检测</b>

    如何深入了解目标检测,掌握模型框架的基本操作?

    目标检测这一基本任务仍然是非常具有挑战性的课题,存在很大的提升潜力和空间。从RCNN到Fast RCNN,再到Faster RCNN,一直都有效率上的提升,那么如何深入了解目标
    的头像 发表于 12-28 11:46 1764次阅读

    基于深度学习目标检测算法

    整体框架 目标检测算法主要包括:【两阶段】目标检测算法、【多阶段】目标检测算法、【单阶段】
    的头像 发表于 04-30 10:22 1w次阅读
    基于<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的<b class='flag-5'>目标</b><b class='flag-5'>检测算法</b>

    迅速了解目标检测的基本方法并尝试理解每个模型的技术细节

    本文将讨论目标检测的基本方法(穷尽搜索、R-CNN、Fast R-CNN和Faster R-CNN),并尝试理解每个模型的技术细节。为了让经验水平各不相同的读者都能够理解,文章不会使用任何公式来进行
    的头像 发表于 08-26 15:08 3066次阅读

    基于深度学习目标检测研究综述

    的研究背景、意义及难点,接着对基于深度学习目标检测算法的两大类进行综述,即基于候选区域和基于回归算法.对于第一类
    发表于 01-06 09:14 2118次阅读
    基于<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的<b class='flag-5'>目标</b><b class='flag-5'>检测</b>研究综述

    深度学习目标检测中的应用

    R-CNN 算法在 2014 年提出,可以说是历史性的算法,将深度学习应用于目标检测领域,相较于
    的头像 发表于 10-31 10:08 1715次阅读

    深入了解目标检测深度学习算法技术细节

    本文将讨论目标检测的基本方法(穷尽搜索、R-CNN、Fast R-CNN和Faster R-CNN),并尝试理解每个模型的技术细节。为了让经验水平各不相同的读者都能够理解,文章不会使用任何公式来进行讲解。
    发表于 01-05 16:27 416次阅读

    简述深度学习的基准目标检测及其衍生算法

    基于深度学习目标检测方法根据有无区域提案阶段划分为区域提案检测模型和单阶段检测模型
    的头像 发表于 02-27 15:31 1274次阅读
    简述<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的基准<b class='flag-5'>目标</b><b class='flag-5'>检测</b>及其衍生<b class='flag-5'>算法</b>

    基于强化学习目标检测算法案例

    摘要:基于强化学习目标检测算法检测过程中通常采用预定义搜索行为,其产生的候选区域形状和尺寸变化单一,导致目标
    发表于 07-19 14:35 0次下载

    深入了解 GaN 技术

    深入了解 GaN 技术
    的头像 发表于 12-06 17:28 6056次阅读
    <b class='flag-5'>深入了解</b> GaN <b class='flag-5'>技术</b>

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

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

    深入解析Zephyr RTOS的技术细节

    ,Zephyr OS在嵌入式开发中的知名度逐渐增加,新的微控制器和开发板都支持Zephyr。本文将深入讨论Zephyr RTOS的技术细节
    的头像 发表于 10-22 16:47 288次阅读
    <b class='flag-5'>深入</b>解析Zephyr RTOS的<b class='flag-5'>技术细节</b>