目标检测算法发展综述

目标检测算法

  • 一、目标检测算法
  • 二、目标检测算法存在的问题
  • 三、目标检测算法的基本流程
  • 四、传统的目标检测算法
    • 1.Viola-Jones(VJ人脸检测算法)
    • 2.HOG + SVM(行人检测,使用Opencv实现)
    • 3.DPM(物体检测)
    • 补充——NMS
  • 五、基于深度学习的目标检测算法
    • 1.Two-Stage算法(段到段)
    • 2.One-Stage算法(端到端)
    • 3.对比

一、目标检测算法

主流的目标检测算法大致分为one-stage与two-stage。
two-stage算法代表有R-CNN系列,one-stage算法代表有Yolo系列。自己理解,two-stage算法将步骤一与步骤二分开执行,输入图像先经过候选框生成网络(例如faster rcnn中的RPN网络),再经过分类网络,对候选框的内容进行分类;one-stage算法将步骤一与步骤二同时执行,输入图像只经过一个网络,生成的结果中同时包含位置与类别信息。two-stage与one-stage相比,精度高,但是计算量更大,所以运算较慢。
简单时间线:
目标检测算法发展综述_第1张图片

目标检测算法分类:
目标检测算法发展综述_第2张图片
目标检测算法发展综述_第3张图片

二、目标检测算法存在的问题

1.目标种类与数量问题:同一幅图下要识别的物体类别和数量可能同时存在多个,在要识别的目标密度非常大时就可能出现像相互遮挡的问题。
2.目标尺度问题:同一幅图下同一类别的物体可能因为透视原理的印象,变得有大有小。尤其是有时候目标的大小可能会变得非常小。
3.外在环境干扰问题:由于光照等问题引起的图片质量问题。
4.目标检测和目标分割:目标识别、目标检测、语义划分、实例检测
目标检测算法发展综述_第4张图片

三、目标检测算法的基本流程

候选框的选择是依靠滑动窗口来选择的。
目标检测算法发展综述_第5张图片

四、传统的目标检测算法

1.Viola-Jones(VJ人脸检测算法)

  • Haar特征抽取(Opencv中有这个特征提取包)
    目标检测算法发展综述_第6张图片
  • 训练人脸分类器(Adaboost算法)
    目标检测算法发展综述_第7张图片
  • 滑动窗口选取候选框

2.HOG + SVM(行人检测,使用Opencv实现)

  • 提取HOG特征
    目标检测算法发展综述_第8张图片
  • 训练SVM分类器
    这里的SVM是二分类分类法。(我们会使用现成的包就好,不一定需要自己去实现,最好自己手动写一下。)
    SVM又叫支持向量机,所谓支持向量正是图中所画的虚线上的点,他们对最后分类的结果影响较大。
    目标检测算法发展综述_第9张图片
  • 利用滑动窗口提取目标区域,进行分类判断
  • NMS
  • 输出检测结果

3.DPM(物体检测)

  • DPM特征提取
    目标检测算法发展综述_第10张图片
    目标检测算法发展综述_第11张图片
  • HOG的扩展
  • 使用SVM训练得到物体的梯度

补充——NMS

目标检测算法发展综述_第12张图片

五、基于深度学习的目标检测算法

1.Two-Stage算法(段到段)

目标检测算法发展综述_第13张图片

  • 使用各种CNN卷积神经网络作为backbone主干网络,进行特征提取
  • 然后进行一步粗分类(区分前景和后景)和粗定位(anchor),也就是说在上图的“产生候选区域CNN特征”之前还应该有一个框“使用RPN网络产生候选区CNN特征”
  • 段到段的目标检测
  • 准确度高但速度较one-stage慢
    目标检测算法发展综述_第14张图片

2.One-Stage算法(端到端)

  • 使用CNN卷积特征
  • 直接回归物体的类别概率和位置坐标值
  • 准确率低但速度快
    目标检测算法发展综述_第15张图片

3.对比

  • 双阶段精度高但速度慢,单精度速度快但精度稍逊。
  • 双阶段目标检测器采用了两段结构采样来处理类别不均衡的问题(意思就是在同一张图片中需要进行检测的目标太少,不需要检测的背景信息太多),一阶段中:rpn使正负样本更加均衡(先粗分类,区分前后景),再粗回归,使用Anchor来拟合bbox,然后再二阶段精调。
  • One stage detector 的一个通病就是既要做定位又要做classification。最后几层1x1 conv layer的loss混在一起,并没有什么专门做detection或者专门做bbox regression的参数,那每个参数的学习难度就大一点。
  • Two stage detector 的第一个stage相当于先拿一个one stage detector来做一次前景后景的classification + detection。这个任务比 one stage detector 的直接上手N class classification + detection要简单很多。有了前景后景,就可以选择性的挑选样本使得正负样本更加均衡,然后拿着一些参数重点训练classification。训练classification的难度也比直接做混合的classification和regression 简单很多。
  • 双阶段其实就是把一个复杂的大问题拆分成更为简单的小问题。各个参数有专攻,Two Stage Detector 在这个方面是有优势的。但one stage detector 里如果用了 focal loss 和 separate detection/classification head 那效果跟 two stage detector 应该是一样的。
    目标检测算法发展综述_第16张图片

你可能感兴趣的:(深度学习,目标识别检测,pytorch,深度学习,目标检测算法,最新目标检测算法)