Object Detection Overview – 目标检测概述

目标检测概述

目的:在给定的图片中精确找到物体所在位置,并标注出物体的类别。

挑战:

  1. 输入图片的大小、分辨率不同。
  2. 图片中目标物体的大小,未知不确定。
  3. 物体的角度不同,物体也可能只部分可见。
  4. 待检测的物体种类,可能是多分类问题。

常见算法

经典算法

传统目标检测流程:
1)区域选择(穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高)
2)特征提取(SIFT、HOG、LBPs等;形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差)
3)分类器分类(主要有SVM、Adaboost等)

经典算法:

  1. Haar-Cascade
  2. HoG-SVM

传统目标检测的主要问题是:
1)基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余。
2)手工设计的特征(hand-crafted features)对于多样性的变化没有很好的鲁棒性。

深度学习算法

候选区域/窗 + 深度学习分类

通过提取候选区域,并对相应区域进行以深度学习方法为主的分类的方案

列表:

  1. R-CNN(Selective Search + CNN + SVM)
  2. SPP-net(ROI Pooling)
  3. Fast R-CNN(Selective Search + CNN + ROI)
  4. Faster R-CNN(RPN + CNN + ROI)
  5. R-FCN

相较传统目标检测的方法,我们可以预先找出图中目标可能出现的位置,即候选区域(Region Proposal)。利用图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的召回率(Recall)。

问题就转变成找出可能含有物体的区域/框(也就是候选区域/框,比如选2000个候选框),这些框之间是可以互相重叠互相包含的,这样我们就可以避免暴力枚举的所有框了。

选定候选框Region Proposal的方法有,比如Selective Search和EdgeBoxes。

2014年,RBG(Ross B. Girshick)使用Region Proposal + CNN代替传统目标检测使用的滑动窗口+手工设计特征,设计了R-CNN框架,使得目标检测取得巨大突破,并开启了基于深度学习目标检测的热潮。

总结一下各大算法的步骤:
RCNN
1.在图像中确定约1000-2000个候选框 (使用选择性搜索Selective Search)
2.每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取
3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4.对于属于某一类别的候选框,用回归器进一步调整其位置

Fast R-CNN
1.在图像中确定约1000-2000个候选框 (使用选择性搜索Selective Search)
2.对整张图片输进CNN,得到feature map
3.找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层
4.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
5.对于属于某一类别的候选框,用回归器进一步调整其位置

Faster R-CNN
1.对整张图片输进CNN,得到feature map
2.卷积特征输入到RPN,得到候选框的特征信息
3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类
4.对于属于某一类别的候选框,用回归器进一步调整其位置

基于深度学习的回归方法

列表:

  1. YOLO
  2. SSD

SSD结合了YOLO中的回归思想和Faster R-CNN中的anchor机制,使用全图各个位置的多尺度区域特征进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster R-CNN一样比较精准。

Non-maximum Suppression (NMS)

https://towardsdatascience.com/non-maximum-suppression-nms-93ce178e177c

TFLite 代码实现: https://github.com/tensorflow/tensorflow/blob/0146162cfe995bdf4e82101583216b0ca060fa2b/tensorflow/lite/kernels/detection_postprocess.cc 以及输入输出代表的含义: https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_on_mobile_tensorflowlite.md

模型评估 – Evaluation

https://medium.com/@jonathan_hui/map-mean-average-precision-for-object-detection-45c121a31173

参考文献

一文读懂目标检测: https://blog.csdn.net/v_july_v/article/details/80170182

实例分割模型Mask R-CNN详解: https://blog.csdn.net/jiongnima/article/details/79094159

Object Detection Algorithms: https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e