R-CNN
R-CNN是第一个成功将深度学习应用到目标检测上的算法,R-CNN遵从传统目标检测的思路,先使用穷举法列出所有可能出现目标的框,再对每个框提取特征,然后对图像分类,最后采取非极大值抑制的方法进行目标检测。
我们知道通过图像分类的方法能够使得候选框中产生一个得分值,但是由于我们使用的是穷举法,所以会有非常多的框重叠,产生大量的冗余,这个时候就需要用到非极大值抑制,顾名思义就是对那些得分值不是最大值的框进行抑制,这里又要使用一个新的概念IOU,因此下面我对IOU和非极大值抑制(NMS)进行一个大致的总结。
有了上面的流程之后,又有一个新的问题来了,候选框是出来的呢?如果使用暴力穷举法算法复杂度实在是太高了,所以我们使用一种基于图像分割和区域生长的策略来选定候选框,简单来说就是先将图像分割成若干个小块儿,然后通过一些特征(颜色,纹理,形状)等来对一些相邻区域的小块儿进行合并,这就是区域增长,直到最终没有满足条件阈值条件(相似度)时,所有的候选框诞生,我们再将这些候选框中的图片经过分类器得到分值,再使用非极大值抑制的方法来产生最终的预测框。
IOU
IOU全名交并比(Intersection over Union),听名字就知道IOU的值计算方法是“预测的边框”与“真实的边框”的交集和并集的比值。如上面所讲,我们会通过例如“穷举法”等,满足一定分类得分值的边框,我们称之为“预测的边框”,而实际目标物体的边框我们称之为“真实的边框”。
用下图来表示IOU的计算方法(图来自网络)
IOU
一个很直观的感受就是IOU就是表示两个框之间的重叠程度的,例如当两个框重叠程度很低的时候交集面积就很小,并集面积就很大,因此IOU值很小;当两个框重叠程度很高的时候,交集面积很大,并集面积很小,因此IOU值很大,IOU的取值范围为[0,1],越大代表重叠程度越高。
至于程序是怎么计算的,之前在很多编程题中就已经碰到了,交集部分左下角的点横坐标为两个框左下角横坐标的较大者,纵坐标也为较大者,同理右上角的横纵坐标都为较小者。
非极大值抑制(NMS)
有了IOU的概念之后我们就可以很明确的我们的算法流程了,就是不断通过分值和IOU值来去除冗余的图像,假设我们有6个满足分类要求的框,得分值从小到大排列分别为A,B,C,D,E,F然后我们设置一个IOU阈值,例如0.6,我们取出A,B,C,D,E分别于F做IOU计算,如果IOU值高于0.6那么我们就认为这个图像是冗余的,因为和得分值最高的F重叠的程度大于了我们的承受程度,那么可以认为这些框里的一些重要信息在我们的F中都有,然后把F加入我们的结果中,再把F和不满足阈值的框全部去除,然后再对剩下的框做相同的计算,直到最后得到所有的矩形框。
SPP
SPP在另一篇文章里面有过介绍了,主要是解决输入图像尺寸不固定的问题,这里SPP是Faster-Rcnn的前置知识。
SPP
SPP-NET就是在普通的CNN网络中加入了一层ROI池化层,连接在全连接层之前,可以将任意输入大小的图像最终变为固定尺寸的特征向量。
Faster R-cnn
说了SPP Net目的就是与RCNN中不同,不再对每个候选框使用缩放的方式达到相同尺寸的大小,而是直接经过ROI层直接获得同尺寸的特征向量。
而Faster R-cnn又与SPP Net有什么区别呢?就是SPP Net得到最终的特征向量之后是使用传统分类器SVM进行分类,而Faster R-cnn直接使用神经网络做分类。
Faster R-cnn有两个输出,一个是分类,例如我们要做K分类,那么分类器就应该有K+1个数,因为背景图是那不包含任何待检测物体的第K+1个数。另一个负责框回归。
Faster R-cnn算法框架
使用一个Faster R-cnn网络就完成了特征提取,物体检测,框回归三项工作,但是如果使用上面讲到的Selective Search速度还是太慢了,很有可能大部分时间不是花在神经网络的计算上而是花在提取框上面,因此Faster R-cnn提出了一个叫做RPN网络的东西,诶这样看起来才像是完整的神经网络了嘛。
RPN
RPN网络结构如下图所示
RPN网络结构










网友评论