在SPPNet中,实际特征提取和区域分类是两个分离的步骤,利用ROI池化层来提取每个区域的特征,然后利用传统的SVM作为分类器对这些区域进行分类。
Fast R-CNN相比SPPNet更进一步,不再使用SVM作为分类器,而是使用神经网络进行分类,这样就能同时训练特征提取网络和分类网络,比SPPNet取得更高准确度。Fast R-CNN网络结构如下图:
对于原始图中的候选区域框,和SPPNet做饭一样,都是将它映射到卷积特征对应区域(对应图中的是ROI projection这个步骤),然后使用ROI池化层(ROI pooling layer)对卷积层上的这个区域提取特征。在这之后SPPNet是使用SVM对特征进行分类的,而Fast R-CNN 则是直接使用全连接层(FCs)。全连接层有两个输出,一个输出负责分类(图中FC 后接的Softmax),一个输出负责框的回归(图中bbox regressor)。
分类,若我们要检测K类物体,那么最后输出应该是K+1个数(其中一类是背景类),每个数都代表该区域为某类别的概率,表征该区域有无目标物的情况。
框回归,该步骤实际是对原始检测框做一定层度“校准”。因为用Selective Search获取的框有时存在一定偏差。假设用SS获取的初始框包含四个参数(x,y,w,h),其中(x,y)表示框左上角的位置,而(w,h)表示框的宽度和高度。而真正的框的位置用(x',y',w',h')表示,框回归就是要学习参数 其中,两个数表示与尺度无关的平移量,而 两个数表示的是和尺度无关的缩放量。
Fast R-CNN 使用一个网络就能同时完成了提取特征,判别类别和框回归三项任务。