其他分享
首页 > 其他分享> > 目标检测学习总结(1)----R-CNN/SPP-Net/Fast R-CNN/Faster R-CNN

目标检测学习总结(1)----R-CNN/SPP-Net/Fast R-CNN/Faster R-CNN

作者:互联网

这几天学习了目标检测/R-CNN/SPP-Net/Fast R-CNN/Faster-R CNN这几个框架,
想做点笔记加深印象,如有理解错误,请指出,Thanks!

目标检测主要有两个任务:
(1)定位图片中的物体
(2)识别物体的类别
故目标检测是一个定位 + 分类的任务,比图像分类更有难度。

传统的目标检测大体流程可以表示如下:
在这里插入图片描述
随着深度学习的兴起,以及CNN所表现出的强大的视觉处理性能,目标检测也有传统方法想深度学习方向进化。

R-CNN

在这里插入图片描述
1.首先是原图,然后在原图上使用一定的方法产生一些感兴趣的区域,也就是可能含有目标的区域(region proposals),有2k个左右。
其中R-CNN 产生region proposals 的方法是ss 方法,步骤如下:
(1)按照一定的规则生成区域集R
(2)计算区域集R中每个相邻区域的相似度S={s1, s2, …}
(3)找出相似度最高的两个区域,将其合并并添加进R
(4)从S中移除所有与3中有关的子集
(5)计算新集与所有子集的相似度
(6)跳至3,直至S为空。
(个人觉得这部分不重要,虽然这个算法会伴随着后面几个模型,自己也没太看懂。。。)

2.将产生的候选区域resize到一个固定大小。至于原因,是为了后面能输入固定尺寸的feature map给全连接层,这也是后面可以改进的一个地方。

3.将resize后的图像输入到一个CNN网络(这个网络可以是现成的模型,比如VGG、AlexNet,然后微调即可,原文使用的是AlexNet),CNN网络会提取出固定维度的特征向量(图片经过AlexNet,缩放比例是固定的,而输入图片大小也是固定的,所以输出当然也是固定的了。。刚好满足全连接层固定大小输入的需求。。)

4.再将提取到的特征输入给预先训练好的一组SVM分类器(一共有k个,k即是类别总数,每个都是二分类器),识别出区域中的目标是什么,随后做box regression,修正物体的box位置。
其中要注意用于分类和回归是两套不同的特征,分类的特征来源于fc7层,回归的特征来源于cov5层,这里的fc7层和cov5层都是AlexNet中的层。

给出R-CNN具体的结构如下图:

R-CNN架构
图中看出,选取2000个region proposals并warp/crop后,需要对每个region proposal 进行特征提取,这就需要2000次CNN,这是很耗费时间的(后面有改进)。

R-CNN的微调
在这里插入图片描述
M - 在ImageNet上对CNN模型进行pre-train(比如AlexNet、VGG,现成的可以直接拿来用)
M’ - 在SS生成的所有区域对M进行fine-tune(目的是为了后面分类,使模型分类性能在该目标检测下有较好的泛化能力,毕竟AlexNet是现成训练好的,而这种在图片里面识别物体比较特殊,AlexNet对此不一定有很好的泛化能力,所以需要fine-tune)
fine-tune注意:

  1. softmax层改为(N+1) - way,其余不变,N+1是类别数目,包括一个背景类。原文中所谓的特定任务是PASCAL VOC,使用了PASCAL VOC 2010的数据集,其中只需要区分20个类别。
  2. 正样本-N类:跟Grounth-truth重合IOU>=0.5;负样本-1类:IOU < 0.5。

R-CNN的分类部分

训练流程:
在M’的fc7特征上训练线性SVM分类器。
其中

R-CNN的回归部分
在M’的fc7特征上训练Bounding box回归模型
一、每个类别(N类)训练一个回归模型。

  1. 将SS提供的Bounding box重重新映射P-> G

  2. 训练输入。
    在这里插入图片描述

  3. P的IOU > 0.6

  4. Squared loss
    在这里插入图片描述

二、测试阶段

  1. 参数w已经训练好。

R-CNN的测试阶段

  1. SS算法提取~2000区域/图片
  2. 将所有区域warp/crop到227 * 227大小
  3. 使用fine-tune过的AlexNet计算两套特征,一套来源于fc7,用于SVM分类,一套来源于cov5,用于box-regression

R-CNN的缺点:
速度很慢
卷积特征重复计算量太大-每张图片的~2000区域都会计算CNN特征

SPP-Net

对比R-CNN的改进:

注意需要对~2000区域的feature map做SPP,一张图片经过Spp后就得到2000 * 固定尺寸的特征矩阵。图片conv5的feature map中的某个区域做SPP如下,跟上图差不多。。
在这里插入图片描述
在cov5 feature map上怎么找到原始图像中~2000区域的在feature map上的对应区域呢
对卷积层发现:输入图片的某个位置的特征反应在feature map上也是在相同位置,基于此,对于某个RIO区域的特征提取只需要在特征图上的相应位置提取就可以了。

SPP-Net的训练流程

  1. M - 在ImageNet上对CNN模型进行pre-train

  2. F - 计算所有SS区域的SPP特征(来源于cov5)

  3. M’ - 使用F特征fine tune 新的fc6 -> fc7 -> fc8层
    这里要注意跟R-CNN的区别:
    (1)SPP特征 - Pool5特征
    (2)只fine-tune全连接层(为什么呢?R-CNN fine-tune所有层?

  4. F’ - 计算M’的fc7特征

  5. C - 使用F’特征训练SVM分类器

  6. R - 使用F特征训练Boundig box回归模型

SPP-Net缺点:

继承R-CNN的问题:

  1. 依然需要存储大量特征
  2. 复杂的多阶段训练
  3. 速度慢
    带来新问题:
  4. SPP层之前的所有卷积层参数不能fine-tune(为什么?)

Fast R-CNN网络

改进

  1. 实现end - to - end的单阶段训练(region proposals的产生还是用的selective search)
  2. 所有层的参数都可以fine-tune
  3. 网络同时输出类别判断和回归建议(同级输出),不在分开训练SVM和回归器(故会引入多任务损失函数)
  4. 引入ROI pooling layer(单尺度),代替SPP层(多尺度)
    在这里插入图片描述
    Fast R-CNN架构
    在这里插入图片描述
    感兴趣区域池化RoI pooling
  5. Fast R-CNN中对金字塔池化进行改进,使用了其特例(只使用了一层),变成了ROI pooling,它的输入维度不定h * w,输出维度固定H * W
  6. 将RoI区域的卷积特征拆分成H * W网格(VGG 是7 * 7)
  7. 将每个Bin内的所有特征进行Max pooling

在这里插入图片描述
多任务损失(Multi-task loss)
从网络结构可以看出,网路有两个同级输出:分类和回归,这样举不需要分开训练分类器和回归器,但是也涉及到了多任务训练,两个任务需要共享输入和底层参数,在根据各自任务进行不同的输出。
网络的损失函数包含分类器损失和回归L1 loss。
在这里插入图片描述
在这里插入图片描述
Fast R-CNN的训练

1.预训练,与R-CNN一样,使用大的数据集训练一个大的网络,或者实现现成的CNN模型,比如VGG
2.在预训练模型上做finetune。
(1)先改变网络结构:1)将最后一个池化层改为ROI Pooling;2)将输出层改为两个同级输出,一个用于分类,一个用于回归。(挖坑:新加入的节点参数如何设置??)
(2)构造数据集,使用Mini-batch sampling抽样方法。
Batch尺寸(128) = 每个batch的图片数量(2) * 每个图片的RoI数量(64)
这个batch设置应该可变。

全连接层加速计算
就Fast R-CNN而言,RoI池化层后的全连接层需要进行约2k次,因此在Fast R-CNN中可以采用SVD分解加速全连接层的计算。

设全连接层输入是X,输出数据为Y,全连接层权值矩阵为W,尺寸为u * v,那么全连接层的计算为Y = W * X。
其中
在这里插入图片描述
SVD分解如下:
在这里插入图片描述

Faster R-CNN

改进:
Faster R-CNN = Fast R-CNN + RPN
前面的Fast R-CNN的region proposals依然是SS算法产生的,跑在CPU上,消耗大量的时间。故Faster R-CNN使用神经网络的方式生成region proposals,使其都能能跑在GPU上。Faster R-CNN引入RPN网络产生region proposals。
Faster R-CNN的结构图如下:
在这里插入图片描述
红色框部分是RPN网络。
Region Proposal Network(RPN)网络

Anchor box
Anchor box 类型 k = 9
包含:

Faster R-CNN的训练流程

参考:
https://www.zhihu.com/people/lhc-90-53/posts
https://zhuanlan.zhihu.com/qianxiaosi

标签:Faster,训练,区域,SPP,卷积,特征,CNN
来源: https://blog.csdn.net/c2250645962/article/details/99949344