目标检测
检测图片中所有物体的类别标签位置
与其他任务的区别
区域卷积神经网络R-CNN
模型结构 : 按分类问题对待。模块一:提取物体区域(Region Proposal),不同位置,不同尺寸,数量很多。模块二:对区域进行分类识别(Classification),CNN分类器,计算量大。
传统方法->RCNN
RCNN
selective search
- 按一定规则生成区域集R
- 计算区域集R里的每个相邻区域的相似度S={s1,s2…}
- 找出相似度最高的两个区域,将其合并为新集,添加进R
- 从S中移除所有与3中有关的子集
- 计算新集与所有子集的相似度
- 跳至3,直至S为空
优先合并四种区域:颜色相近的;纹理相近的;合并后总面积小的;合并后,总面积在其BBOX中所占比例大的。
warp
- 在原始区域目标周围取一块区域进行等比缩放到CNN需要的图片的大小。
- 去除原始目标区域然后对目标区域进行填充,在等比缩放到CNN需要图片的大小
- 直接将原始目标区域非等比缩放到CNN需要的图片大小
RCNN的架构
微调(fine tuning)
M:在ImageNet上对CNN模型进行Pre-train M’:在SS生成的所有区域上对M进行fine-tune
- 当数据量较小时,运用深度学习很可能会出现严重的过拟合现象
- 可用AlexNet,VGG等网络在ImageNet等训练集上预训练模型,然后只对于网络最后面的几层进行重新训练
- 对于神经网络的底层,因为它充分的在大数据集上进行了基础特征的提取如:颜色,边框等,依旧可以在小数据集上进行运用
分类部分
RCNN训练流程: C:在M’ 的Fc7特征上训练线性SVMs分类器
SVM训练完成后,如果完全分类正确,所有正样本的输出概率都大于0.5,而所有负样本的输出概率都小于0.5。 但常见的情况是有一部分的负样本的输出概率也大于0.5的,这些样本就称之为“False Positives”。 如果把这些“False Positives"收集起来,对SVM进行二次训练,经过二次训练的SVM的分类准确度一般会有一定的提升。
回归部分
C:在M’ 的Fc7特征上训练线性Bounding box回归模型
测试
Selective Search(fast mode)提取2000区域图片,将所有区域膨胀+缩放到277X277,使用fine-tune过的AlexNet计算2套特征。
性能测试
True Positive区域: IoU >= 0.5 False Positive区域: IoU < 0.5 False Negative区域:遗漏的Ground truth区域
准确率precision 召回率recall
第C类的平均精度(AP),PR曲线之下的面积,是Precision对于Recall的积分 mAP:所有类别的平均精度求和除以所有类别,即数据集中 所有类的平均精度的平均值。
SPP-Net
RCNN速度慢的原因之一: 卷积特征重复计算量太大,每张图片的2000区域都会计算CNN特征 对RCNN的两大改进: 直接输入整图,所有区域共享卷积计算(一遍),在Conv5层输出上提取所有区域的特征。引进空间金字塔池化(Spatial Pyramid Pooling),为不同尺寸的区域,在Conv5输出上提取特征,映射到尺寸固定的全连接层上。 使用SPP技术实现了共享计算,可以适应不同尺寸 :卷积层和池化层的输出层都是和输入尺寸相关的,它们的输入时不需要固定图片尺寸的,真正需要固定尺寸的是最后的全连接层。
空间金字塔池化: 替换Conv5的Pooling层,3个level和21个Bin,1X1,2X2,4X4。Bin内使用Max pooling
对卷积层可视化发现:输入图片的某个位置的特征反应在特征图上也是在相同的位置。基于此,对某个ROI区域的特征提取只需要在特征图上的响应位置提取就可以了
SPP-Net训练流程
- 在ImageNet上对CNN模型进行pre-train
- 计算所有SS区域的SPP特征
- 使用2特征fine tune新fc6->fc7->fc8
- 计算3的fc7特征
- 使用4特征训练线性SVM分类器
- 使用2特征训练的Bounding box回归模型
SPP-Net问题
继承了RCNN的剩余问题,需要存储大量特征,复杂的多阶段训练,训练时间长。同时也带来了新问题,SSP层之前的所有卷积层参数不能fine tune
Fast RCNN网络
改进:比R-CNN,SPP-Net更快的trainng/test更高的mAP,实现end-to-end(端对端)单阶段训练(多任务损失函数(Multi-task loss))。所有层的参数都可以fine tune不需要离线存储特征文件。
在SPPNet的基础上引进2个新技术: 感兴趣区域池化(ROI Pooling layer),多任务损失函数(Multi-task loss)
感兴趣区域池化(RoI pooling)
空间金字塔池化(SPP Pooling)的单层特例。 将ROI区域的卷积特征拆分成HXW网格。 每个Bin内的所有特征进行Max pooling
非重叠区域:类似Max pooling 重叠区域:多个区域的偏导之和
Fast R-CNN网络
绿色框为飞机的GroundTruth(GT),红色为提取的foreground anchors,那么即便红色的框被分类器识别为飞机,但由于红色的框定位不准,这张图相当于没有正确的检测出飞机。所以要采用一种方法对红色的框进行微调,使得foreground anchors和GT更加接近。
训练: 在pre-trained模型上做finetune Mini-batch sampling抽样: 分级抽样法(Hierarchical sampling),RoI分类基于与Ground truth的重叠
**在目标检测任务中,要处理的RoI数量比较多,几乎一平的前间计算时间被用于全连接层。就Fast R-CNN而言,RoI池化层后的全连接层需要进行约2k次,因此在Fast R-CNN中可以采用SVD分解加速全连接层计算; 全连接层输入数据为X,输出数据为Y,全连接层权值矩阵为W,尺寸为u xv,那么该层全连接计算为:Y=W ×X。 **
Faster RCNN
集成Region Proposal Network(RPN)网络
Faster R-CNN = Fast R-CNN + RPN 取代离线Selective Search模块,解决性能瓶颈 进一步共享卷积层计算 基于Attention注意机制,引导Fast R-CNN关注领域 Region proposals量少质优,高precision,高recall
4步训练流程
- 训练RPN网络
- 训练Fast RCNN网络
- 调优RPN
- 调优Fast RCNN
|