【动手学深度学习】week 10 | R-CNN,SSD,YOLO

R-CNN

  • 使用启发式搜索算法来选择锚框
  • 使用预训练模型来对每个锚框抽取特征
  • 训练一个SVM来对类别分类
  • 训练一个线性回归模型来预测边缘框偏移

兴趣区域(RoI)池化层
把一个锚框分割为n×m块,输出每块里面的最大值,这样无论锚框多大,总是输出nm个值。RoI主要是为了解决锚框大小不同的问题,使得锚框可以被pooling成固定大小的,可以做一个batch的处理。

Faster RCNN

将图片变成一个特征图,再变成一个特征向量,在特征上对应锚框。这样的CNN不是对每个锚框抽取特征,而是对整个图片抽取特征,避免了上千次的锚框抽取特征。

  • 使用CNN对图片抽取特征
  • 使用RoI池化层对每个锚框生成固定长度的特征
    【动手学深度学习】week 10 | R-CNN,SSD,YOLO_第1张图片

Faster RCNN

  • 使用区域建议网络 RPN来替代启发式搜索算法来获得更好的锚框,RPN相当于是一个比较粗的目标检测,整体相当于有两个stage,速度相对还是比较慢。
  • Faster RCNN精度非常高,但是速度较慢
    【动手学深度学习】week 10 | R-CNN,SSD,YOLO_第2张图片

Mask R-CNN

  • 如果有像素级别的编号(语义分割),使用FCN全卷积神经网络来利用这些信息。
  • RoI变成了align,无法整除的就直接把像素切开
    【动手学深度学习】week 10 | R-CNN,SSD,YOLO_第3张图片

小总结
RCNN是最早、最有名的基于锚框的方法;Faster RCNN和Mask RCNN主要用在高精度场景下,Mask RCNN在无人车中用的比较多。

单发多框检测(SSD Single Shot Detection)

SSD是single stage的网络(和Faster RCNN区分)。

  • 首先使用一个基础网络来抽取特征,然后用多个卷积层来减半高宽
  • 每个阶段多尺度)都生成锚框(每个像素为中心生成多个锚框),底部的段用来拟合小物体,顶部的段用来拟合大物体
  • 对每个锚框都取预测类别和边缘框
    【动手学深度学习】week 10 | R-CNN,SSD,YOLO_第4张图片
    SSD速度相对比较快,但精度不够高,但是网络简单,启发了后续的一系列网络。

YOLO

YOLO从SSD发展而来,SSD中有大量锚框重叠,浪费了很多计算,YOLO把图片均匀分成S×S个锚框,每个锚框预测B个边缘框(解决一个框中有多个种类的物体的问题)。

YOLO V3的精度没有那么高,但是一些trick的使用可以提高它的精度。

你可能感兴趣的:(动手学深度学习,深度学习,cnn,r语言)