目标检测: Faster R-CNN原理
Faster R-CNN论文地址: https://arxiv.org/pdf/1506.01497.pdf
1 概述:
Fast R-CNN仍然使用selective search, 会存在一些问题:
1 使用selective search获取候选框, 这是在CPU上运算的, 会出现性能瓶颈, 没有充分利用GPU加速;
2 统一的一套候选框并未对特定数据集进行优化, 因此会导致训练速度慢和精度提升困难
因此衍生的新思路就是使用CNN训练一个RPN, 用此来提取候选框, RPN网络是一个全卷积神经网络,通过共享卷积层特征可以实现proposal的提取,由于使用了GPU加速,
RPN提取一幅像的proposal只需要10ms.
Faster R-CNN结构:
网络结构图 (https://sevenold.github.io/2019/06/object-detection-FasterRCNN/):
1 RPN. 是全卷积网络, 目的就是提取候选框, 取代selective search
2 Fast R-CNN. 使用RPN提取的候选框进行检测定位
2 步骤
1 预训练一个分类CNN
2 训练CNN+RPN. 使用预训练的CNN, 输出特征图, 微调RPN, 当IoU>0.7为正例, <0.3为负例
2.1 以特征图每个像素为中心, 以滑窗形式计算Anchor box(3种尺寸,3种宽高比, 每个像素点9个box)
2.2 一个分支为分类(是背景/不是背景), 一个分支为回归xywh(以中心点为基准)
3 固定RPN, 训练CNN+Fast R-CNN. 使用最初预训练的CNN, 输出特征图, 使用RPN输出的候选框, 训练CNN+Fast R-CNN
4 固定CNN+Fast R-CNN, 训练RPN, 此时共享第三步的CNN
5 固定CNN+RPN, 训练Fast R-CNN, 此时共享第三步的CNN
6 重复4和5步
3 损失理解
4 性能比对