一、经典的RCNN存在的问题:
- 训练分多步骤
- 时间和空间开销大(在训练SVM和回归的时候需要用网络训练的特征作为输入,特征保存在磁盘上再读入的时间开销较大)
- 测试比较慢(每张图片的每个region proposal都要做卷积,重复操作太多)
二、网络模型
- 输入是224×224的固定大小图片
- 经过5个卷积层+2个降采样层(分别跟在第一和第二个卷积层后面)
- 进入ROIPooling层(其输入是conv5层的输出和region proposal,region proposal个数大约为2000个)
- 再经过两个output都为4096维的全连接层
分别经过output各为21和84维的全连接层(并列的,前者是分类输出,后者是回归输出) - 最后接上两个损失层(分类是softmax,回归是smoothL1)
1.ROI pooling layer
因为候选框的大小不同,导致各个候选框的feature map维度也不相同。ROI pooling layer的作用就是把特征向量维度归一化。
将region proposal的特征向量划分为HW大小的网格,对每个网格采用MaxPooling,即得到HW大小的feature map。
2 训练样本
训练过程中每个mini-batch包含2张图像和128个region proposal(即ROI,64个ROI/张),其中大约25%的ROI和ground truth的IOU值大于0.5(即正样本),且只通过随机水平翻转进行数据增强。
三、改进与不足
-
改进:
- 1、卷积不再是重复对每一个region proposal,而是对于整张图像先提取了泛化特征,这样子减少了大量的计算量
- 2、ROIPooling的提出,巧妙的解决了尺度放缩的问题
- 3、将regressor放进网络一起训练,同时用softmax代替SVM分类器,更加简单高效 不足:
- region proposal的提取仍然采用selective search,整个检测流程时间大多消耗在这上面(生成region proposal大约2~3s,而特征提取+分类只需要0.32s),之后的Faster RCNN的改进之一便是此点。