R-CNN
训练阶段:
????????CNN训练是在imagenet上预训练好的,迁移进行fine-tuning训练,将最后一层替换为N类+1背景类输出,fine-tuning时正负样本选择:将与ground-truth的IoU≥0.5的proposal作为正样本,不分类别,剩下作为负样本,每个batch中正负样本比例是1:3。
????????N个SVM训练时正负样本选择:正样本是ground-truth,负样本是IoU<0.3的proposal,忽略>0.3的proposal,采用hard negative mining method加快训练。
????????Bounding box regression训练,输入是IoU>0.6的proposal,label是ground-truth,预测的是dx(P),dy(P),dw(P)和dh(P)这四个缩放因子,损失函数如式(2)所示。P对应的是候选框的中心坐标以及框的高宽,G对应的是最终预测的边界框的中心坐标以及宽高。
测试阶段:
????????输入一张图像,采用Selective Search方法生成约2k个候选框region proposal,将proposal缩放到统一大小,输入到CNN中提取proposal的feature,再采用SVM对feature进行分类,判别feature所属类别的置信度,采用非极大值抑制(NMS,non-maximum suppression)方法剔除重复预测的proposal,然后将剩下的proposal的feature输入至linear regression来修正候选框的位置,得到预测框bouding box。
Fast-RCNN
训练阶段:
? ? ? Fast-RCNN实现了端到端训练。采用Selective Search算法在一张图像上生成约2k个proposal,然后经过正负样本采样获得合适的proposal,将图像输入网络得到feature map,将图像上的proposal投影到feature map获得对应的特征矩阵,特征矩阵通过ROI pooling层,ROI pooling层是将输入的proposal划分为7x7大小的块,在每个块中进行maxpooling,这样可以不限制输入图像的尺寸。然后经过一系列的FC层,通过softmax进行分类,类别为N+1,bbox regression修正候选框的位置,输出为N个类别分别对应的回归参数,共4N个。
????????正负样本采样:在每个batch中包含2张图像和128个proposal,每张图像有64个proposal,挑选batch中25%的proposal作为正样本,这些proposal的IoU>0.5。
????????式(3)是模型的整体损失。式(4)是分类损失,也是交叉熵损失。式(5)是bbox regression损失,[u≥1]代表如果是正样本,u=1,如果是负样本,u=0
测试阶段:
????????通过SS在图像上生成2K个proposal,图像输入网络得到feature map,proposal映射到feature map得到对应的特征矩阵,再通过ROI pooling和一系列FC得到预测的类别和回归修正值,然后通过NMS得到对proposal进行筛选,得到bounding box。
Faster-RCNN
????????Faster-RCNN和Fast-RCNN的区别就在于proposal的选取,Faster-RCNN用RPN来代替SS算法选取proposal。Faster-RCNN的训练过程是先将图像输入网络得到feature map,使用RPN生成proposal,将proposal投影到feature map获得对应的特征矩阵,特征矩阵通过ROI pooling层,ROI pooling层是将输入的proposal划分为7x7大小的块,在每个块中进行maxpooling,这样可以不限制输入图像的尺寸。然后经过一系列的FC层,通过softmax进行分类,类别为N+1,bbox regression修正候选框的位置,输出为N个类别分别对应的回归参数,共4N个。
????????RPN是先以feature map每个像素对应的原图上的像素为中心得到3x3个不同的anchor,通过正负样本采样,一个图像得到k个anchor,通过CNN与feature map卷积得到大小不变通道数减少的特征向量,每个向量长度是通道个数,将所有特征向量经过FC层,再通过cls layer(1x1的2k个卷积)得到k个anchor对应的前景背景的置信率,一共是2k个,再通过reg layer(1x1的4k个卷积)得到每个anchor的4个回归偏置,损失函数如式(6),根据偏置调整后的anchor是得到的proposal。在测试部分,通过NMS再进一步筛选proposal。
????????正负样本采样:每张图片采样256个anchor,正负样本比例是1:1,与ground-truth的IoU最大的anchor和IoU>0.7的anchor是正样本, IoU<0.3的anchor是负样本,剩下的忽略。
Mask-RCNN
????????Mask-RCNN是在Faster-RCNN上的改进,增加了一个mask分支,mask部分采用的是FCN网络做分割。但是mask部分的输出是K个binary mask,二分类采用的是sigmoid函数,并不预测所属类别,所属类别的预测是依赖于Faster RCNN的分类部分。损失函数如下式。
????????模型采用的是FPN架构,可以识别多尺度的物体。论文采用了RoIAlign是因为RoIpooling会出现misalignment, RoIAlign通过双线性插值可以得到准确的空间定位。
|