小目标检测综述-半成品

因为后续转三维重建了,所以只能写到一半了,如有需要可以找我要源文件

参考论文: Object Detection in 20 Years: A Survey

#总言

因为不是大神,所以都是摘自网络文章,如有错误欢迎评论

#目标检测

#传统目标检测

#Viola Jones Detector

论文:Rapid Object Detection using a Boosted Cascade of Simple Features 2001年提出,基于滑动窗口的目标检测算法,通过积分图像来加速对Haar-like特征的计算,使用如下方法来加速网络计算以及提高准确率。

#网络架构/使用方法
  • Integral image:解析
  • Feature selection:使用Adaboost对候选特征筛选,找到最有代表性的一小组特征
  • Detection cascades
    • image
#优缺点

优点:

  • 具有里程碑的意义

缺点:

  • 使用的Harr-like特征较简单,稳定性较低
  • 弱分类器采用简单的决策树,容易过拟合,对人脸的遮挡、光暗等因素处理效果不理想
  • 鲁棒性较差

参考博客:目标检测之 Viola-Jonesviola jones人脸检测原理

#HOG Detector

论文:Histograms of Oriented Gradients for Human Detection HOG(Histogram of Oriented Gridients的简写)特征检测算法,最早是由法国研究员Dalal等在CVPR-2005上提出来的,一种解决人体目标检测的图像描述子,是一种用于表征图像局部梯度方向和梯度强度分布特性的描述符。其主要思想是:在边缘具体位置未知的情况下,边缘方向的分布也可以很好的表示行人目标的外形轮廓。

#网络架构/使用方法
  1. 灰度化、颜色空间归一化:Gamma校正
  2. 计算图像中每个像素的梯度值和梯度方向
  3. 将图像划分成多个pixel×pixel cells,并计算每个cell的梯度直方图,即为描述子(descriptor)
    1. 梯度直方图的x为梯度方向的映射,y为梯度值的累加
  4. 将num个cells归一化后合并成一个block,最后会形成多个带重叠部分的block。每个block内为cells内的向量concat
    1. image
  5. 最后将所有block的向量再次串联,即HOG特征

示例: 图像大小为:64×128, block大小为16×16, block stride为8×8,cell size为8×8,bins=9(直方图等级数);

  • 块个数为:((64-16)/8+1) × ((128-16)/8 +1) = 105
    • 其中重叠部分就是因为16 > 8
    • (64-16)/8 计算除第一个block后还可以走多少步,然后加上第一次不动的次数+1
  • 每个块内cell个数; (16×16)/(8×8)=4
  • 每张图特征维度:105×4×9=3780

获取到每张图的特征维度后,再用线性SVM训练分类器即可。

#优缺点

优点:

  • 使用contrast-normalize the local response来使得局部几何和光学形变具有不变性
  • 容许行人有细微肢体动作,适合人体检测
  • 分块分单元的方法,使得图像局部像素点之间的关系得到很好地表征

缺点

  • 特征维度大,实时性差
  • 很难处理遮挡问题
  • 对噪点敏感

参考博客:【特征检测】HOG特征算法目标检测HOG特征解读HOG 特征提取算法(实践篇)HOG特征

#Deformable Part-based Model(DPM)

论文:Discriminatively trained deformable part models 由P. Felzenszwalb在2008提出,作为HOG的扩展版。DPM的设计理念是“divide and conquer”,训练时分解对象,推理时组合不同部件。DPM的本质就是弹簧形变模型。

DPM算法采用了改进后的HOG特征,SVM分类器和滑动窗口(Sliding Windows)检测思想,针对目标的多视角问题,采用了多组件(Component)的策略,针对目标本身的形变问题,采用了基于图结构(Pictorial Structure)的部件模型策略。此外,将样本的所属的模型类别,部件模型的位置等作为潜变量(Latent Variable),采用多示例学习(Multiple-instance Learning)来自动确定。

#网络架构/使用方法
  • 经典DPM由一个root-filter和多个part-filter组成。
  • LatentSVM:使得不用标出part框
  • 使用硬负样本挖掘:解决样本不平衡问题
  • 边界框回归
  • context priming:利用局部信息
  • 混合模型:学习多个模型来适应物体不同形变
  • 图像金字塔:适应形变
#优缺点

优点

  • 运算速度快,适应物体形变,方法直观简单
  • Although today's object detectors have far surpassed DPM in terms of the detection accuracy, many of them are still deeply influenced by its valuable insights

缺点

  • 性能一般
  • 无法适应大幅度旋转以及当图像中目标像素远小于root filter时无法检测
#解惑

image DPM首先采用的是HOG进行特征的提取,但是又有别于HOG,DPM中,只保留了HOG中的Cell。如上图所示,假设,一个88的Cell,将该细胞单元与其对角线临域的4个细胞单元做归一化操作。 提取有符号的HOG梯度,0-360度将产生18个梯度向量,提取无符号的HOG梯度,0-180度将产生9个梯度向量。因此,一个88的细胞单元将会产生,(18+9)4=108 (其中的4是4个相对邻域,这里看的时候没看懂),维度有点高,Felzenszwalb大神给出了其优化思想。 首先,只提取无符号的HOG梯度,将会产生49=36维特征,将其看成一个4*9的矩阵,分别将行和列分别相加,最终将生成4+9=13个特征向量,为了进一步提高精度,将提取的18维有符号的梯度特征也加进来,这样,一共产生13+18=31维梯度特征(另一个解释)。实现了很好的目标检测。


参考博客:DPM(Deformable Part Model)原理详解DPM(Deformable Parts Model)--原理(一)DPM目标检测算法(毕业论文节选)多个博客的组合体什么是latent SVM?DPM模型传统目标检测算法之DPM

#总结

基于手工提取特征的传统目标检测算法主要有以下三个缺点:

  1. 识别效果不够好,准确率不高
  2. 计算量较大,运算速度慢
  3. 可能产生多个正确识别的结果

#深度学习检测

#two-stage detection

总结性博客:RCNN系列总结目标检测:R-CNN、SPP,Fast R-CNN、Faster R-CNNFaster RCNN系列算法原理目标检测-RCNN系列小哲AI专栏文章分类索引 咱也不知道RCNN家族有多少,这里只好列举了RCNN→SPPnet→Fast RCNN→Faster RCNN→FPN→MaskRCNN→Cascade RCNN 另外二阶段检测所包含的这些网络如有误,欢迎评论 二阶段:1,先产生高质量框,2. 对框进行微调 coarse to fine 一阶段:一步到位

#RCNN(提出数据稀少的解决方案)

论文:Rich feature hierarchies for accurate object detection and semantic segmentation 最近几年,物体检测陷入停滞,表现最好的检测系统是复杂的将多低层级的图像特征与高层级的物体检测器环境与场景识别相结合。我们取得这个性能主要通过两个方面:第一是应用了自底向上的候选框训练的高容量的卷积神经网络进行定位和分割物体。另外一个是使用在标签数据匮乏的情况下训练大规模神经网络的一个方法。

#网络架构/使用方法
  1. 目标检测:
    1. 产生候选区域:Selective Search 选出2k个候选区域
    2. 对每个候选区域进行特征提取:CNN → 2000×4096 dim特征向量
    3. 候选区域类别判断:SVM 4096×N(20类别+1背景)+NMS
    4. 使用回归对其候选框调整:regression
  2. Selective Search → CNN→ SVM→ regressionimage

分析网络采用Hoiem等人的定位分析工具:Diagnosing error in object detectors,看到进化版分析工具:A General Toolbox for Identifying Object Detection Errors

#优缺点

优点:

  • 使用CNN来提取特征,减少人工操作
  • 使用迁移学习来提高性能
  • 当带标签的训练数据不足时,先针对辅助数据集进行有监督方式的预训练,再进行特定小数据集的调优,就可以产生明显的性能提升。(迁移学习)

缺点:

  • 速度慢,存在大量重复计算
  • 训练步骤繁琐

参考博客:R-CNN论文详解(论文翻译)RCNN 论文阅读记录 还介绍了一些方法

#SPPnet

论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 普遍的CNN需要固定输入图片大小,原因是卷积层后的全连接层需要固定长度的输入。SPP是Bag-of-words模型的扩展,是视觉最成功的方法之一。它将图像划分为从精细到粗糙空间,并聚合其中的局部特征。

#网络架构/使用方法

网络架构: image

  1. 目标检测
    1. 提取2000个候选框
    2. 对整张图片通过CNN进行特征提取
    3. 将候选框映射到最终的feature maps上,进行空间金字塔池化,得到固定长度的特征向量
    4. SVM分类器来检测
#优缺点

优点:

  • 输入任意大小的图片,防止剪裁、放缩降低精度 (优化RCNN)
  • 使用CNN共享参数后,映射候选框加速计算(优化RCNN)
  • 可应用在许多网络上
  • multi-scale feature extraction 可以提高精度

缺点:

  1. 同R-CNN一样分开训练CNN和SVM、BB回归器,训练SVM的特征需要提前保存在磁盘需要巨大的存储空间;多段训练实现较复杂
  • CNN和SVM的训练独立导致SVM的训练Loss无法更新SPP-Layer之前的卷积层参数,因此即使采用更深的CNN网络进行特征提取,也无法保证SVMs分类器的准确率一定能够提升
  • (1)spp layer有multi-scale的pooling,正向还好,反向传播开销大。 (2)sppnet后,fast-rcnn的roi pooling 本质上就是一层的spp pooling, 这篇paper表明, 运算成本更低的 roi pooling(即 single-scale spp)并不比运算开销更大的multi-scale的spp 要差。这里的一层spp 池化指的应该是只有一层池化而不是像金字塔一样有多层池化。 (3)粘自 评论

参考博客:SPP优缺点空间金字塔池化网络SPPNet详解RCNN学习笔记(3)ROI详解英文原版

#Fast-RCNN

论文:Fast R-CNN

#网络架构/使用方法

网络结构: image 目标检测:

  1. 产生候选区域:同RCNN一致
  2. 提取整张图片的特征生成特征图,并将候选区域映射到特征图上:同SPPnet一致
  3. 候选区域分类+BBox回归:对每个候选区域使用ROI Pooling,然后进行softmax分类+回归
#优缺点

优点:

  • 加入多任务损失,使得模型由多阶段转为单阶段,实现端到端(除SS Region Proposal阶段)(创新点)
  • 删除SVM后,可以一次更新所有层的参数,并且不需要存储到硬盘 (优化SPPnet)

缺点:

  • 使用的selective search只能在CPU上跑,速度慢
#一些结论
  • 多任务比多阶段训练好
  • 发现SPPnet的多尺度训练并不比单尺度训练好,因为尺度不变性,所以使用ROI 池化
  • 训练数据当然越多越好
  • softmax比SVM略好
  • 候选框越多,mAP呈现先声后降的趋势

参考博客:物体检测之Fast R-CNNRCNN 系列详解目标检测算法之Fast R-CNN算法详解

#Faster-RCNN

论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

#网络架构/使用方法

网络结构: image

  1. 特征提取:全卷积层
  2. 候选框生成+候选框调整:RPN网络
  3. 生成固定长度向量:Roi 池化
  4. 分类+微调:softamx+回归
#优缺点

优点:

  • 端到端网络(改进Fast)
  • 使用RPN替代选择性搜索,提高速度(改进Fast)
  • 共享RPN和Fast R-CNN特征(改进Fast)
  • RCNN集大成之作(改进Fast)

缺点:

参考博客:一文读懂Faster RCNN(完善)Faster R-CNN:详解目标检测的实现过程

#FPN+Faster RCNN

论文:Feature Pyramid Networks for Object Detection 融合深浅层特征,解决不同尺寸目标预测

#网络架构/使用方法

FPN网络思想image

  1. 图片输入resnet,构建自底向上网络
  2. 构建对应自顶向下网络,每层进行RPN操作,然后进行ROI池化
  3. 将得到的ROI分别进行分类和回归
  4. FPN构建Faster R-CNN检测器
#优缺点

优点:

  • 结合深浅层和多分辨率特征进行融合
  • 主干网络,可以适配很多模型
#trick:
  • 使用3×3卷积降低上采样影响
  • 使用1×1卷积匹配输入的维度

参考博客:Feature Pyramid Network 详解特征金字塔网络FPN的来龙去脉【目标检测】FPN(Feature Pyramid Network)

#Mask-RCNN(RoI Align)

论文:Mask R-CNN 加入mask和RoI Align使得可以进行分割任务

#网络架构/使用方法

image RoI Align: RoIPooling和RoIAlign的学习和理解

#优缺点
  1. 将RoI池化修改为更适合分割任务的RoI Align

参考博客:图片出处Mask R-CNN网络详解

#Cascade RCNN

论文:Cascade R-CNN: Delving into High Quality Object Detection 主要解决在目标检测中,检测框不是特别准,容易出现噪声干扰的问题

#网络架构/使用方法

image 通过级联的R-CNN网络,每个级联的R-CNN设置不同的IOU阈值,这样每个网络输出的准确度提升一点,用作下一个更高精度的网络的输入,逐步将网络输出的准确度进一步提高。

#优缺点

优点:

  • 避免因IoU增大而导致训练过拟合
  • 缓解mismatch问题
  • 适用任何二阶段算法

缺点:

  • 特征提取部分耗时较大,不能实时

参考博客:【论文笔记】Cascade R-CNN 详细解读(介绍实验部分)、RCNN系列文章之Cascade RCNN详解(介绍实验部分)

#one-stage detection

#网络架构/使用方法
#优缺点

优点:

缺点: