pytorch入门(八)物体检测算法

R-CNN

  • 使用启发式搜索算法来选择锚框
  • 使用预训练模型对每个锚框抽取特征
  • 使用一个SVM来对类别分类
  • 训练一个线性回归模型来预测边缘框
输入的图片
CNN
Categroy prediction
Bounding box prediction

锚框大小不一致,怎么使得这些锚框变为一个批量?
解决:RoI
兴趣区域(RoI)池化层

  • 给定一个锚框,均匀分割成n×m块,输出每块里的最大值
  • 不管锚框多大,总是输出nm个值
    pytorch入门(八)物体检测算法_第1张图片

Fast RCNN

  • 使用CNN对图片抽取特征
  • 使用RoI池化层对每个锚框生成固定长度特征
  • 不需要SVM
输入的图片
CNN
RoI pooling
Dense layer
Categroy prediction
Bounding box prediction

Faster R-CNN

  • 使用一个区域提议网络来替代启发式搜索来获得更好的锚框
    pytorch入门(八)物体检测算法_第2张图片

Mask R-CNN

  • 如果有像素级别的标号,使用FCN来利用这些信息
    pytorch入门(八)物体检测算法_第3张图片

总结

  • R-CNN是最早的,也是最有名的一类基于锚框和CNN的目标检测算法
  • Fast/Faster R-CNN持续提升性能
  • Faster R-CNN和Mask R-CNN是在最要求高精度的场景下常用算法

SSD(单发多框检测)

生成锚框

  • 对每一个像素为中心生成锚框
  • 给定n个大小s1,s2,……,和m个高宽比,那么生成n+m-1个锚框,其大小和高宽比为:
    (s1,r1),(s2,r1),……,(sn,r1),(s1,r2),……,(s1,rm)

SSD模型

  • 一个基础网络来抽取特征,然后多个卷积层来减半高宽
  • 在每段都生成锚框
    • 底部段来拟合小物体,顶部段来拟合大物体
  • 对每个锚框预测类别和边缘检测
    pytorch入门(八)物体检测算法_第4张图片

总结

  • SSD通过单神经网络来检测模型
  • 以每个像素为中心的产生多个锚框
  • 在多个段的输出上进行多尺度的检测

YOLO

  • SSD中锚框大量重叠,因此浪费了很多计算
  • YOLO将图片均匀分成S×S个锚框(锚框没有重叠)
  • 每个锚框预测B个边缘框
  • 后续版本有持续改进

参考李沐深度学习:跟李沐学AI

你可能感兴趣的:(torch,算法,深度学习,计算机视觉,机器学习,神经网络)