FasterRCNN
概述
论文地址:Faster R-CNN
基础过程
Anchor
每个feature map对应9个锚点,对应每个点取128x128、256x256、512x512三种尺寸,按1:1、1:2、2:1三种比例设定框,也就是9个框。
Backbone
一般用vgg16或者resnet50等CNN网络做backbone。这里假定用vgg16,13个conv + 4个pooling。其中Conv不会改变feature map尺寸,只有pool会是尺寸缩小到1/2。
假定输入为[1, 3, 640, 640]
,那么输出尺寸是[1, 512, 40, 40]
RPN
Region Proposal Network, 寻找预选框网络,分为2部分:
- 1x1卷积提取9x2维的每个像素点进行score预测。卷积Kernel为[18, 512, 1, 1],得到[1, 18, 40, 40]。然后按[1, 2, 9x40, 40],对2做softmax做判断。
- 1x1卷积提取9x4的平移和缩放参数,对9个anchor做调整
然后根据2组信息做proposal。proposal过程如下:
1)根据score排序,根据得到前N的anchor;
2)将anchor的尺寸进行还原配置
3)使用NM得到最终的预选框
ROIPooling
将指定区域pooling成指定尺寸。对[1, 512, 40, 40]做roi pooling,pooling成7x7,最终得到[N, 512, 7, 7]。如下图:
Classification
用全连接层做分类,结合softmax得到分类概率;再利用bounding box回归得到每个proposal位置的偏移量,得到更精确的检测框。
其他
Roi Pooling与Roi Align区别
Roi Align是对指定区域做Resize linear操作。Roi Pooling是做边界取整后取最大值。