# 1. 目标检测与分割

# 1.1. 几种任务比较

  • 目标定位与识别最简单,只有一个目标
  • 目标检测与分割其次,因为它有多个目标,每一个都要识别
  • 语义分割最难,不仅有多个目标,还要明确标出分界线
  • 识别任务也就是分类问题,比目标定位与识别更简单,因为目标定位与识别不仅返回label,还要返回位置。

img

对于第二个和第三个任务,可以以某一个很小的方框依次扫描整个图,从每一个采集到的图像中,送到识别器中,看是否是想要的。然后把方框逐渐变大,再从头到尾扫描。

# 1.2. AdaBoost的应用

img

最巧妙的地方在特征提取器和积分图,只用加加减减就完成了特征提取。

img

img

比如第一个feature,3次加减法算白的,3次加减法算黑的,再用1次加减法算白减黑,共7次

分类器构造:取一些人脸(6000张左右)和一些非人脸(7万张)作为训练样本。总共特征,也就是f有20万。

img

img

img

对每一个特征构造一个分类器,也就是20万个弱分类器,然后用AdaBoost组合这些弱分类器

具体流程:

  1. 首先在数据集D中选取正确率最高的特征, 用F1表示。
  2. 将数据集D分为两类,{F1分对的数据}和{F1分错的数据}。
  3. 以较大概率取F1分错的数据,以较小概率去F1分对的数据,形成新的集合D2。
  4. 在D2中选取正确率最高的特征,用F2表示。
  5. 将D分为: {F1、F2都分对的数据},{F1分对而F2分错的数据,以及F1分错而F2分对的数据},{F1,F2都分错的数据}。
  6. 以最大概率取{F1,F2都分错的数据},以次大概率取{F1分对而F2分错的数据,以及F1分错而F2分对的数据}, 以最小概率取{F1、F2都分对的数据},得到数据集D3.
  7. 在D3中选取正确率最高的特征,用F3表示。循环,以此类推。
  8. 用各个特征的线性组合构建分类器。

# 1.2.1. 最能表征人脸的Haar特征:

img

第1个特征是,眼睛下面这一块减去眼睛的像素,说明这一块最能区别人脸和非人脸。第二个也差不多,第三个是面部中央减两边。

# 1.3. AdaBoost人脸检测流程

  1. 在图像中,对每一个24*24的格子遍历使用分类器,如果是人脸,则输出。
  2. 将图像缩小,长宽同时除以1.2,在用分类器遍历每一个24*24的格子。如果是人脸,将该处位置坐标乘以1.2, 等比例放大到原图。
  3. 重复2,直到图像长或宽小于24个像素为止

# 1.4. 目标识别与定位

img

  • multi-task,同时进行两个任务,分类和定位。
  • 单目标检测和多目标检测的区别在于目标的不确定性

# 1.5. 多目标检测

如何将卷积神经网络(CNN)用在目标检测上 ?

主要问题:

  • 用大大小小的方框遍历所有图像不现实,如何快速挑出可能有物体的区域(Region of Interest, ROI)
  • 我们需要一个计算量不那么大的算法,提出ROI的候选区域(Region of Proposals, or Proposals)

img

主要有三篇层层递进的文章。

# 1.5.1. 2014-R-CNN, a naïve deep detection model

Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." CVPR. 2014.

Basic Ideas:

  1. Use selective search to generate proposals
  2. Scale and resize proposals to fit the CNN
  3. SVM for final decisions

Main Problems:

  1. High cost to **perform Selective Search **(~5s per image)
  2. Too many passes to CNN (~2000 proposals per image)
  3. Lead to unacceptable test time (~50s per image)
  4. High space cost to train SVM (millions of 1024-d features)

流程图:

img

img

# 1.5.1.1. Region Proposals (Selective Search, SS)

给定一张图片,首先使用 Efficient Graph-BasedImage Segmentation 算法,将图片进行过分割 (Over-Segmentation)

img

如图所示,过分割后的每个region非常小,以此为基础,对相邻的region进行相似度判断并融合,形成不同尺度下的region。每个region对应一个bounding

selective search,位置比较相近、纹理灰度等特征相似的划分为一个区域。2014年的这篇文章中,一幅图像给出2000个左右的region proposal。

# 1.5.1.2. Region Proposals

img

问题:

  • 非常缓慢
  • 做了很多重复工作,比如一个大的框放进CNN做了卷积,包含了里面的小的方框,它也被放进CNN,也做了卷积。

# 1.5.2. 2015-fast R-CNN, ROI pooling

Girshick, Ross. "Fast r-cnn." CVPR. 2015.

Basic Ideas:

  • Reduce the computation redundancy caused by overlaps

Main Contributions:

  1. ROI pooling layer
  2. Replace SVM with softmax inside CNN
  3. Use SVD to accelerate fully connected layer

Main Problems:

  • SS costs too much time (~2s for a fast version)

img

img

# 1.5.2.1. ROI Pooling

img

ROI pooling,对于不同大小的region proposal,在中间的某一层把它们归一化成统一的形状。也就是对整个图像做卷积,在后面的层中将其大大小小分开。

现在生成selective search还是很慢,每张图片需要5s,

# 1.5.3. 2015-faster R-CNN, RPN

Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." NIPS. 2015.

Basic Ideas:

  • Reduce the time of generating region proposals

Main Contributions:

  1. Region Proposal Network (RPN)
  2. An end to end model finally!

img

对于特征图某个固定点,ANCHOR 生成9个矩形,共有3种形状,长宽比为大约为:width:height = [1:1, 1:2, 2:1]三种,实际上通过anchors就引入了检测中常用到的多尺度方法

img

把任意大小的输入图像reshape成800x600(即图2中的M=800,N=600)。再回头来看anchors的大小,anchors中长宽1:2中最大为352x704,长宽2:1中最大736x384,基本是cover了800x600的各个尺度和形状。

img

img

Faster R-CNN检测结果

img

运行时间对比

img

在PASCAL VOC上的性能对比

# 1.6. MTCNN

目标检测 – 以人脸检测为例

Zhang K, Zhang Z, Li Z, et al. Joint Face Detection and Alignment Using Multitask Cascaded Convolutional Networks.

Multitask:

  1. Face detection
  2. Facial landmarks localization

img

# 1.6.1. P-Net (Proposal Network )

该网络主要是检测图中人脸,产生多个人脸候选框和回归向量,再用回归向量对候选窗口进行校准,最后通过非极大值抑制NMS来合并高度重叠的候选框。

# 1.6.2. R-Net (Refine Network )

该网络同样输出候选框置信度(根据置信度削减候选框数量)和回归向量,通过边界框回归和NMS精调候选框的位置。

# 1.6.3. O-Net (Output Network )

比R-Net层又多了一层卷积层,处理结果更加精细,作用和R-Net层作用一样(削减框数量同时精调回归框)。再者,该层对人脸区域进行了更多的监督,最后输出5个人脸关键点坐标

img

# 1.7. 全卷积网络(Fully Convolutional Networks)

# 1.7.1. 目标检测 – 语义分割

Long, Shelhamer and Darreli, Fully Convolutional Networks for Semantic Segmentation, CVPR 2015

img

全卷积网络完全对称,并且先训练降采样部分,然后固定前面,再训练升采样部分

# 1.7.2. Pooling 层的上采样(Upsampling)

(a) Average pooling

img

(b) Max pooling

img

降采样中,最大池化时,需要记住最大值的位置。然后升采样中,把非最大值位置全赋0。

卷积层的上采样(Upsampling),也叫反卷积(Deconvolution)或 转置卷积(Transpose Convolution)

考虑如下一个卷积层,输入特征图44,卷积核33,步长1,卷积后获得特征图维度为2*2,卷积流程:

img

# 1.7.3. 反卷积流程

img

全卷积网络还可以用在边缘提取、视频场景人数估计上

img