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

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

3天内不再提示

利用深度学习解决目标检测任务的简单方法

zhKF_jqr_AI 来源:未知 作者:李倩 2018-10-18 09:34 次阅读

每次丢了东西,我们都希望有一种方法能快速定位出失物。现在,目标检测算法或许能做到。目标检测的用途遍布多个行业,从安防监控,到智慧城市中的实时交通监测。简单来说,这些技术背后都是强大的深度学习算法。

在这篇文章中,我们会进一步地了解这些用在目标检测中的算法,首先要从RCNN家族开始,例如RCNN、Fast RCNN和Faster RCNN。在本系列接下来的文章中我们会谈到更高级的算法,例如YOLO、SSD等等。

1. 解决目标检测任务的简单方法(利用深度学习)

下图是描述目标检测算法如何工作的典型例子,图中的每个物体(不论是任务还是风筝),都能以一定的精确度被定位出来。

首先我们要说的就是在图像目标检测中用途最广、最简单的深度学习方法——卷积神经网络(CNN)。我要讲的是CNN的内部工作原理,首先让我们看看下面这张图片。

网络中输入一张图片,接着将它传递到多个卷积和池化层中。最后输出目标所属的类别,听上去非常直接。

对每张输入的图片,我们都有对应的输出类别,那么这一技术能检测图片中多种目标吗?答案是肯定的!下面就让我们看看如何用一个卷积神经网络解决通用的目标检测问题。

1.首先,我们把下面的图片用作输入:

2.之后,我们将图片分成多个区域:

3.将每个区域看作单独的图片。

4.把这些区域照片传递给CNN,将它们分到不同类别中。

5.当我们把每个区域都分到对应的类别后,再把它们结合在一起,完成对原始图像的目标检测:

使用这一方法的问题在于,图片中的物体可能有不同的长宽比和空间位置。例如,在有些情况下,目标物体可能占据了图片的大部分,或者非常小。目标物体的形状也可能不同。

有了这些考虑因素,我们就需要分割很多个区域,需要大量计算力。所以为了解决这一问题,减少区域的分割,我们可以使用基于区域的CNN,它可以进行区域选择。

2. 基于区域的卷积神经网络介绍

2.1 RCNN简介

和在大量区域上工作不同,RCNN算法提出在图像中创建多个边界框,检查这些边框中是否含有目标物体。RCNN使用选择性搜索来从一张图片中提取这些边框。

首先,让我们明确什么是选择性搜索,以及它是如何辨别不同区域的。组成目标物体通常有四个要素:变化尺度、颜色、结构(材质)、所占面积。选择性搜索会确定物体在图片中的这些特征,然后基于这些特征突出不同区域。下面是选择搜索的一个简单案例:

首先将一张图片作为输入:

之后,它会生成最初的sub-分割,将图片分成多个区域:

基于颜色、结构、尺寸、形状,将相似的区域合并成更大的区域:

最后,生成最终的目标物体位置(Region of Interest)。

用RCNN检测目标物体的步骤如下:

我们首先取一个预训练卷积神经网络。

根据需要检测的目标类别数量,训练网络的最后一层。

得到每张图片的感兴趣区域(Region of Interest),对这些区域重新改造,以让其符合CNN的输入尺寸要求。

得到这些区域后,我们训练支持向量机(SVM)来辨别目标物体和背景。对每个类别,我们都要训练一个二元SVM。

最后,我们训练一个线性回归模型,为每个辨识到的物体生成更精确的边界框。

下面我们就用具体的案例解释一下。

首先,将以下图片作为输入:

之后,我们会用上文中的选择性搜索得到感兴趣区域:

将这些区域输入到CNN中,并经过卷积网络:

CNN为每个区域提取特征,利用SVM将这些区域分成不同类别:

最后,用边界框回归预测每个区域的边界框位置:

这就是RCNN检测目标物体的方法。

2.2 RCNN的问题

现在,我们了解了RCNN能如何帮助进行目标检测,但是这一技术有自己的局限性。训练一个RCNN模型非常昂贵,并且步骤较多:

根据选择性搜索,要对每张图片提取2000个单独区域;

用CNN提取每个区域的特征。假设我们有N张图片,那么CNN特征就是N*2000;

用RCNN进行目标检测的整个过程有三个模型:

用于特征提取的CNN

用于目标物体辨别的线性SVM分类器

调整边界框的回归模型。

这些过程合并在一起,会让RCNN的速度变慢,通常每个新图片需要40—50秒的时间进行预测,基本上无法处理大型数据集。

所以,这里我们介绍另一种能突破这些限制的目标检测技术。

3. Fast RCNN

3.1 Fast RCNN简介

想要减少RCNN算法的计算时间,可以用什么方法?我们可不可以在每张图片上只使用一次CNN即可得到全部的重点关注区域呢,而不是运行2000次。

RCNN的作者Ross Girshick提出了一种想法,在每张照片上只运行一次CNN,然后找到一种方法在2000个区域中进行计算。在Fast RCNN中,我们将图片输入到CNN中,会相应地生成传统特征映射。利用这些映射,就能提取出感兴趣区域。之后,我们使用一个Rol池化层将所有提出的区域重新修正到合适的尺寸,以输入到完全连接的网络中。

简单地说,这一过程含有以下步骤:

输入图片。

输入到卷积网络中,它生成感兴趣区域。

利用Rol池化层对这些区域重新调整,将其输入到完全连接网络中。

在网络的顶层用softmax层输出类别。同样使用一个线性回归层,输出相对应的边界框。

所以,和RCNN所需要的三个模型不同,Fast RCNN只用了一个模型就同时实现了区域的特征提取、分类、边界框生成。

同样,我们还用上面的图像作为案例,进行更直观的讲解。

首先,输入图像:

图像被传递到卷积网络中,返回感兴趣区域:

之后,在区域上应用Rol池化层,保证每个区域的尺寸相同:

最后,这些区域被传递到一个完全连接的网络中进行分类,并用softmax和线性回归层同时返回边界框:

3.2 Fast RCNN的问题

但是即使这样,Fast RCNN也有某些局限性。它同样用的是选择性搜索作为寻找感兴趣区域的,这一过程通常较慢。与RCNN不同的是,Fast RCNN处理一张图片大约需要2秒。但是在大型真实数据集上,这种速度仍然不够理想。

4.Faster RCNN

4.1 Faster RCNN简介

Faster RCNN是Fast RCNN的优化版本,二者主要的不同在于感兴趣区域的生成方法,Fast RCNN使用的是选择性搜索,而Faster RCNN用的是Region Proposal网络(RPN)。RPN将图像特征映射作为输入,生成一系列object proposals,每个都带有相应的分数。

下面是Faster RCNN工作的大致过程:

输入图像到卷积网络中,生成该图像的特征映射。

在特征映射上应用Region Proposal Network,返回object proposals和相应分数。

应用Rol池化层,将所有proposals修正到同样尺寸。

最后,将proposals传递到完全连接层,生成目标物体的边界框。

那么Region Proposal Network具体是如何工作的呢?首先,将CNN中得来的特征映射输入到Faster RCNN中,然后将其传递到Region Proposal Network中。RPN会在这些特征映射上使用一个滑动窗口,每个窗口会生成具有不同形状和尺寸的k个anchor box:

Anchor boxes是固定尺寸的边界框,它们有不同的形状和大小。对每个anchor,RPN都会预测两点:

首先是anchor就是目标物体的概率(不考虑类别)

第二个就是anchor经过调整能更合适目标物体的边界框回归量

现在我们有了不同形状、尺寸的边界框,将它们传递到Rol池化层中。经过RPN的处理,proposals可能没有所述的类别。我们可以对每个proposal进行切割,让它们都含有目标物体。这就是Rol池化层的作用。它为每个anchor提取固定尺寸的特征映射:

之后,这些特征映射会传递到完全连接层,对目标进行分类并预测边界框。

4.2 Faster RCNN的问题

目前为止,我们所讨论的所有目标检测算法都用区域来辨别目标物体。网络并非一次性浏览所有图像,而是关注图像的多个部分。这就会出现两个问题:

算法需要让图像经过多个步骤才能提取出所有目标

由于有多个步骤嵌套,系统的表现常常取决于前面步骤的表现水平

5. 上述算法总结

下表对本文中提到的算法做了总结:

目标检测是很有趣的领域,在商业中也大有前景。得益于现代硬件和计算资源的发展,才能让这一技术有重要的突破。

本文只是目标检测算法的开门介绍,在下一篇文章中,我们会讲解YOLO、RetinaNet这样更流行的算法,请继续关注!

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

    关注

    42

    文章

    4562

    浏览量

    98646
  • 算法
    +关注

    关注

    23

    文章

    4448

    浏览量

    90721
  • 深度学习
    +关注

    关注

    73

    文章

    5224

    浏览量

    119866

原文标题:基础目标检测算法介绍(一):CNN、RCNN、Fast RCNN和Faster RCNN

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深度学习在植物病害目标检测研究进展

    关注。 中国农业科学院农业信息研究所/农业农村部农业大数据重点实验室联手甘肃农业大学机电工程学院,组成科研团队,针对深度学习在植物叶部病害检测与识别展开研究, 植物病害目标
    的头像 发表于 11-20 17:19 276次阅读

    基于深度学习的道路小目标检测优化方法

    在使用卷积神经网络进行特征提取时,不同的网络深度对应不同层次的特征。低层特征的分辨率更高,像素更丰富,包含更多的细节信息和位置信息,对于目标的定位有极大帮助,但包含的语义信息较少。
    发表于 11-07 12:33 364次阅读
    基于<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>

    深度学习在工业缺陷检测中的应用

    工业制造领域中,产品质量的保证是至关重要的任务之一。然而,人工的检测方法不仅费时费力,而且容易受到主观因素的影响,从而降低了检测的准确性和一致性。近年来,基于
    的头像 发表于 10-24 09:29 592次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>在工业缺陷<b class='flag-5'>检测</b>中的应用

    MATLAB的行人目标检测方法有哪些?

    MATLAB的行人目标检测方法有哪些,就是主要的方法,基于背景的,基于目标的,还有其他的。都有哪些?
    发表于 08-23 16:30

    深度学习框架和深度学习算法教程

    了基于神经网络的机器学习方法深度学习算法可以分为两大类:监督学习和无监督学习。监督学习的基本
    的头像 发表于 08-17 16:11 698次阅读

    深度学习框架的作用是什么

    深度学习框架的作用是什么 深度学习是一种计算机技术,它利用人工神经网络来模拟人类的学习过程。由于
    的头像 发表于 08-17 16:10 1138次阅读

    基于深度学习的点云分割的方法介绍

      摘 要:点云分割是点云数据理解中的一个关键技术,但传统算法无法进行实时语义分割。近年来深度学习被应用在点云分割上并取得了重要进展。综述了近四年来基于深度学习的点云分割的最新工作,按
    发表于 07-20 15:23 0次下载

    目标检测EDA方法有哪些 eda和pcb的区别

    目标检测(Object Detection)是计算机视觉领域中的重要任务,用于在图像或视频中定位和识别出多个感兴趣的对象。EDA(Enhancement, Detection, and Augmentation)
    发表于 07-20 14:43 893次阅读

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

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

    添加全彩LCD显示屏的最简单方法

    电子发烧友网站提供《添加全彩LCD显示屏的最简单方法.zip》资料免费下载
    发表于 06-30 14:45 0次下载
    添加全彩LCD显示屏的最<b class='flag-5'>简单方法</b>

    用Arduino控制伺服电机的超级简单方法

    电子发烧友网站提供《用Arduino控制伺服电机的超级简单方法.zip》资料免费下载
    发表于 06-28 09:51 0次下载
    用Arduino控制伺服电机的超级<b class='flag-5'>简单方法</b>

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

    ,也是近年来理论研究的热点。作为计算机视觉中的基础算法,目标检测对后续的人脸识别、目标跟踪、实例分割等任务都起着至关重要的作用。 基于深度
    的头像 发表于 06-25 10:37 389次阅读
    如何<b class='flag-5'>学习</b>基于Tansformer的<b class='flag-5'>目标</b><b class='flag-5'>检测</b>算法

    自动驾驶深度多模态目标检测和语义分割:数据集、方法和挑战

    了许多解决深度多模态感知问题的方法。 然而,对于网络架构的设计,并没有通用的指导方针,关于“融合什么”、“何时融合”和“如何融合”的问题仍然没有定论。本文系统地总结了自动驾驶 中深度多模态
    发表于 06-06 10:37 0次下载
    自动驾驶<b class='flag-5'>深度</b>多模态<b class='flag-5'>目标</b><b class='flag-5'>检测</b>和语义分割:数据集、<b class='flag-5'>方法</b>和挑战

    PyTorch教程-12.1. 优化和深度学习

    目标上的标志。 12.1.1。优化目标¶ 尽管优化为深度学习提供了一种最小化损失函数的方法,但从本质上讲,优化和
    的头像 发表于 06-05 15:44 351次阅读
    PyTorch教程-12.1. 优化和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>

    如何在OpenCV中使用基于深度学习的边缘检测

    在这篇文章中,我们将学习如何在OpenCV中使用基于深度学习的边缘检测,它比目前流行的canny边缘检测器更精确。
    的头像 发表于 05-19 09:52 1657次阅读
    如何在OpenCV中使用基于<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的边缘<b class='flag-5'>检测</b>?