深度学习——RCNN(fastRCNN)

67 阅读3分钟

Overfeat

  • 移动窗⼝法: 用一个固定大小的“窗口”在图像上滑动,对每个窗口进行分类,从而判断窗口内是否包含目标以及目标类别。(类似:用放大镜在图片上逐格扫描找目标

本质是暴力穷举,比较消耗算力

RCNN

  • 候选区域法:创建⽬标检测的区域来完成⽬标检测的任务,R-CNN是以深度神经⽹络为基础的⽬标检测的模型 ,以R-CNN为基点,后续的Fast R-CNN、Faster R-CNN模型都延续了这种⽬标检测思路。

  • 流程

  1. 候选区域⽣成:使⽤选择性搜索(Selective Search)的⽅法找出图⽚中可能存在⽬标的侯选区域。
    • 需要注意的是这些候选区域的⻓宽不固定
  2. CNN⽹络提取特征:选取预训练卷积神经⽹⽹络(AlexNet或VGG)⽤于进⾏特征提取。
  3. ⽬标分类:训练⽀持向量机(SVM)来辨别⽬标物体和背景,对每个类别,都要训练⼀个⼆元SVM。
  4. ⽬标定位:训练⼀个线性回归模型,为每个辨识到的物体⽣成更精确的边界框。

fastRCNN⽬标检测的思想

  • 相⽐于R-CNN, Fast RCNN主要在以下三个⽅⾯进⾏了改进:
  1. 提⾼训练和预测的速度
    • 将整张图输⼊到CNN中提取特征,将候选区域映射到特征图上,这样就避免了对图像区域进⾏重复处理,提⾼效率减少时间。
  2. 不需要额外的空间保存CNN⽹络提取的特征向量
  3. 不在直接对候选区域进⾏缩放

RCNN中需要对候选区域进⾏缩放送⼊CNN中进⾏特征提取,在Fast-RCNN中使⽤ROIpooling的⽅法进⾏尺⼨的调整。

步骤是:

1、候选区域⽣成:使⽤选择性搜索(Selective Search)的⽅法找出图⽚中可能存在⽬标的侯选区域,只需要候选区域的位置信息。

2、CNN⽹络特征提取:将整张图像输⼊到CNN⽹络中,得到整副图的特征图,并将上⼀步获取的候选区域位置从原图映射到该特征图上。

3、ROIPooling: 对于每个特征图上候选框,RoI pooling层从特征图中提取固定⻓度的特征向量每个特征向量被送⼊⼀系列全连接(fc)层中。

4、⽬标检测:分两部分完成,⼀个输出各类别加上1个背景类别的Softmax概率估计,另⼀个为各类别的每⼀个类别输出四个实数值,来确定⽬标的位置信息。

多任务损失

Fast-RCNN中提出的多任务损失:将分类和回归的损失函数联合训练⽹络

通俗来说

多任务损失就是 “一个模型同时干多件事,每件事的损失加起来算总账”

比如:既要分类(是不是猫?),又要定位(猫在哪?),模型会同时计算两个任务的误差,合并后一起优化。

反向传播

反向传播的核心:反向传播是利用链式法则,从输出层损失函数开始,反向计算损失对网络中每个参数的偏导数(梯度) 。这些梯度量化了每个参数对总错误的‘贡献程度’,指导参数更新以减少损失