学习
实践
活动
专区
工具
TVP
写文章

物体检测的前世今生(二)

RCNN系列

1、RCNN(Regions with Convolutional Neural Network)是使用深度学习处理检测问题的开山之作,以行人检测为例,下图是RCNN做检测的完整流程。

之前我们说到,传统的物体检测需要用滑动窗口的方式扫描图像,并对每一个框做分类判别。而对于RCNN算法,它首先采用其它方法(论文中使用Selective-Search的方法),得到图像中所有可能是物体的大小不同的检测框,此时一张图像中框的数目是在数千个的量级。然后对于其中的每一个框,用卷积网络对它们进行特征提取,并将提取出来的特征数据存盘,之后使用存盘的所有特征数据训练分类器,做检测框中是否是物体的最终判别。依托于神经网络强悍的分类能力,RCNN算法可以对这些框得到很好的分类性能,从而实现很高的检测准确度,减少误判。

2、Fast-RCNN(Fast Region-based Convolutional Networks)

看到这里,聪明的你自然会有疑问,我们对一张图像提取了数千个框,那么这些框肯定会有被彼此相互覆盖的部分啊。在RCNN算法里依据每一个框的位置,把这些框中的图像块从原图中抠出来,然后用卷积网络去对这些框来抽取特征,存盘,最后在训练分类器。无论怎么看,这个流程都太复杂了。

我们能不能直接对输入的全图去做一次卷积特征提取,然后把开始时原图中对应的物体框映射到最终的卷积图像上,并从最终的卷积图像上去抠每一个框对应的特征图呢?如果采用这样的方式,不就可以很好地解决覆盖区域重复计算的问题,同时中间抽取的特征数据又始终保持在内存,减少了存盘操作,省时省力多好啊。于是Fast-RCNN便诞生了,完整过程见下图。

Fast-RCNN算法和RCNN算法的关键区别就在于,RCNN是拿到原图和检测框之后,从原图中先抠图,然后对每一个抠出来的小图输入网络来提特征。而Fast-RCNN之所以Fast就是先将原图(大图)输入卷积网络做特征提取,得到卷积特征图像,然后再在特征图中去抠图,仅仅只是在做法上先后顺序调整一下,就让整个流程的速度刷刷的飘上去了。

3、Faster-RCNN

看到这里,你会觉得Fast-RCNN快是快了,但是还是有点麻烦。总体上这个算法之所以好是因为神经网络对特征的表示能力强,并且整个算法是站在巨人的肩膀上做学习(框由其他算法提供,首先就保证了一定的准确度)。

要是万一别人给过来的框不好,或者相应的物体就压根没有框到,那么后续怎么做都是白瞎。此时的关键在于还有对别人所提供框的依赖,于是RGB大神(Faster-RCNN作者)就想,要不把检测框也囊括到算法里一并提取了吧,来个真正的端到端训练,于是Faster-RCNN便诞生了。下图是Faster-RCNN的算法过程。

这个算法中的关键点在,在原来的流程中加入了一个RPN(Region proposal network)网络来提取物体检测框,真正做到端到端的训练物体检测模型。

好了,到此RCNN派系的检测算法告一个段落,我们再来聊一聊另一个派系SSD

SSD算法

在传统的检测算法中,需要对全图用不同大小的框对图像做一次滑动扫描。到RCNN算法系列里,发展为这些框或是由其他算法得到,或是自己生成,然后对每一个正样本框做类别判定,基本上是沿袭了对一个检测算法自然思考的发展逻辑,先找到物体在哪里,然后再用分类给出这个物体的类别。而SSD算法的做法则有所不同。

它的基本思路是我先用一个密集的网格铺满图像(见上图b)。例如我们用8x8的网格划分原图像,网格中每一个点就对应原图中不同位置的中心点。然后再在这个网格里面的每个点,放上几个比例/大小不同的框。此时有了中心点,有了框,我们就可以对这里面的每一个框直接判定类别(总共n+1个类),这时多出来的一个类是背景,而不是像RCNN系列那样只对正样本分类。由于少了先判断它是不是含有感兴趣物体的一步,SSD的检测速度相比RCNN系列来说,就又上了一个台阶。

另外,在SSD算法中,会用几个处于不同网络层的特征图去预测其中存在的物体,从而保证对不同尺寸大小的物体均有良好的检测性能。SSD整个算法的网络示意图如下。

好了,对于深度学习做物体检测的介绍大致就是这样,希望对你有所帮助。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612G0FR8T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券