matlab实现RCNN(一)

RCNN

RCNN(Regions with Convolutional Neural Network Features)算法思想来自于2014年国际计算机视觉与模式识别会议(CVPR)上的经典paper《Rich feature hierarchies for Accurate Object Detection and Segmentation》,其在物体检测领域达到国际最先进水平(state-of-art)。

RCNN的算法流程

matlab实现RCNN(一)_第1张图片
其大致过程为:输入图像–>候选框搜索–>CNN特征提取–>分类
首先输入一幅图像,使用SS(Selective Search)算法先定位出很多候选框(论文中为2000),之后使用CNN提取所有候选框的特征向量,最后利用SVM对每个候选框进行分类识别。

Selective Search算法

候选框搜索使用的是传统文献《search for object recognition》的算法,其算法过程如下图。
matlab实现RCNN(一)_第2张图片

1.获得一些初始化的区域R={r1,….rn}
2.计算出每个相邻区域的相似性s(ri,rj)
3.找出相似性最大的区域max(S)={ri,rj}
4.合并rt=ri∪rj
5.从S集合中,移走所有与ri,rj相关的数据
6.计算新集合rt与所有与它相邻区域的相似性s(rt,r*)
7.S=S∪St
8.R=R∪rt
直到S集合为空,重复3~7。

图片的缩放

在进行CNN特征提取的时候,由于CNN对于输入图片的大小是固定的,所以需要对候选框中的图片进行缩放。

(1)各向异性缩放
不管图片的长宽比例,是否扭曲,全部缩放到CNN输入的大小227*227(论文中CNN的结构),如下图(D)所示;

(2)各向同性缩放
A、直接在原始图片中,把bounding box的边界进行扩展延伸成正方形,然后再进行裁剪;如果已经延伸到了原始图片的外边界,那么就用bounding box中的颜色均值填充;如下图(B)所示;
B、先把bounding box图片裁剪出来,然后用固定的背景颜色填充成正方形图片(背景颜色也是采用bounding box的像素颜色均值),如下图(C)所示;

图中第1、3行就是结合了padding=0,第2、4行结果图采用padding=16的结果。论文证明采用各向异性缩放、padding=16的精度最高。
matlab实现RCNN(一)_第3张图片

IOU

在物体检测中,用IOU来作为定位精度的评价公式。
matlab实现RCNN(一)_第4张图片
矩形框A、B的一个重合度IOU计算公式为:

IOU=(A∩B)/(A∪B)

就是矩形框A、B的重叠面积占A、B并集的面积比例:

SI=A∩B

IOU=SI/(SA+SB-SI)

非极大值抑制

候选框搜索会得到很多预选框,CNN提取特征后,使用SVM进行分类会得到物体类别的概率值,也就是打分score,这时就需要使用非极大值抑制(Non-maximum suppression, NMS)来排除没用的、不需要的框。
matlab实现RCNN(一)_第5张图片
matlab实现RCNN(一)_第6张图片
先假设有6个矩形框,根据分类器score做排序,从小到大分别属于车辆的score分别为A、B、C、D、E、F。

(1)从score最高的矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;

(2)假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。

(3)从剩下的矩形框A、C、E中,选择score最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是保留下来的第二个矩形框。

就这样一直重复,找到所有被保留下来的矩形框。

最后排除score低于阈值的矩形框,即为最后检测到的目标。

特别说明:本文为本人学习所做笔记。
具体参考:http://blog.csdn.net/hjimce/article/details/50187029

你可能感兴趣的:(计算机视觉笔记)