分类:通常图像分类并没有什么用处,只是得出一张图片里面有什么。

定位+分类:知道图片中有个什么,也把这个物体定位出来了,但是也没啥用,因为日常生活中一张图片中可能有多个物体。

物体检测:做到这一步在实际中就有用处了。

图像差异检测 深度学习 图像检测算法_召回率

IOU(交并比)

用于衡量定位的准确度, 一般IOU >= 0.5 可认为定位成功。

图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_02


上图中真实的由蓝框标记,红框为算法框出来的。

mAP(mean Average Precision 平均精度均值)

* 用于衡量模型在测试集检测精度的优劣程度。

  • 综合考虑召回率和精度,mAP越高表示检测结果越好。

mAP计算原理

  • 召回率/查全率(recall):选的N个样本中选对的k个正样本,占总的M个正样本的比例 k/M;
  • 精度/查准率(precision):选的N个样本中选对k个正样本的比例 k/N;

选择的样本N越多,召回率越高,查准率越低;

图像差异检测 深度学习 图像检测算法_相似度_03


置信度(阈值)越低,选中的样本越多,精度越低,召回率越高。

图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_04

mAP就是计算上图中折线图与坐标轴之间的面积。

Two-stage

R-CNN系列

R-CNN系列变化的主要特征是将越来越多的部分交給神经网络做。

  • R-CNN : Girshick R, Donahue J, Darrell T,et al. Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation[C].2014.
  • Fast R-CNN:Girshick R, Fast R-CNN[j].Computer Science, 2015
  • Faster R-CNN : Ren S, He Km Girshick R,et al. Faster R-CNN:towards real-time object detection with region proposal networks[C], 2015:91-99
R-CNN

R-CNN的主要步骤

  • 候选区域提取:使用Selective Search 从输入图片中提取2000个左右的候选区域
  • 特征提取: 首先将所有的候选区域裁剪缩放为固定大小,再用AlexNet(5conv + 2FC)提取图像的特征。
  • 线性分类: 用特定类别的线性SVMs 对每个候选区域做分类。
    * 边界框回归:用线性回归修正边界框的位置与大小,其中每个类别单独训练一个边界框回归器。

这里只有特征提取用到深度学习。

1.候选区域提取 步骤

图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_05

  • 层次化分组算法
    1)用基于图的图像分割方法创建初始区域。
    2)计算所有的相邻区域的相似度。
     3)每次合并相似度最高的两个相邻的图像区域,并计算合并后的区域与其相邻区域的相似度。重复改过程,直到所有的图像合并
    成一张完整的图像。
    (前面的三步是不是聚类的操作)
     4)提取所有图像区域的目标位置框,并按层级排序(覆盖整个图像的区域的层级为1)。
  • 在不同图像分割阈值、不同色彩空间、以及不同的相似度(综合考虑颜色、纹理、大小、重叠度)下。调用层次化分组算法,对所有合并策略下得到的位置框按层级*RND排序,去掉冗余框。
  • 取一定个数的候选区域作为后续卷积神经网络的输入。(R-CNN取2000个)。

NMS(非极大值抑制 Non-Maximum Suppression) 用于去掉冗余选框。

图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_06

分类与回归

图像差异检测 深度学习 图像检测算法_特征提取_07

2000个候选框得到4096个特征,然后每个类别有一个21个分类(包括一个背景分类器)得到20个类别,然后去掉冗余框,微调校准选框。

R-CNN缺点

重复计算:需要对两千候选框做CNN,计算量很大,而且有很多的重复计算。
SVM模型:在标注数据足够的时候不是最好的选择。
多个步骤:候选区域提取,特征提取,分类,回归都要单独训练,大量中间数据需要保存。
检测速度慢:GPU处理一张图片需要13秒,cpu上则需要53秒。

改进:能否避免候选框特征提取过程的重复的计算?

fast R-CNN

Fast R-CNN的主要步骤

  • 候选区域的提取: 通过Selective Search 从原始图片中提取2000个左右的区域候选框。(与R-CNN相比没有变化)。
  • 特征提取: 原始图像输入CNN网络,得到特征图。(与R-CNN相比,这里是将原始图片进行了一次特征提取)。
  • ROI-Pooling: 根据 映射关系,将 不同尺寸的候选框特征图上的对应区域 池化维度相同的特征图 (因为全连接层要求输入的尺寸固定)。
  • 全连接层:将维度相同的特征图转化为ROI特征向量(ROI feature vector)。
  • 分类与回归:经过全连接层,再使用softmax分类器进行识别,用回归器修正边界框的位置与大小,最后对每个区域做NMS.

图像差异检测 深度学习 图像检测算法_相似度_08

ROI Pooling

图像差异检测 深度学习 图像检测算法_召回率_09

Fast R-CNN改进之处
  • 直接对整张图片做卷积,不再对每个候选区域分别做卷积,从而减少大量的重复计算。
  • 用ROI pooling对不同的候选框做尺寸的归一化。
  • 将边界回归器放进网络一起训练,每个类别对应一个回归器。
  • 用softMax代替SVM分类器。
    Fast R-CNN缺点:
  • 候选区域的提取依旧使用Selective search,目标检测时间大多都消耗在这上面。(region proposal 2-3 s,而特征分类只需要0.32s)。
faster R-CNN

寻找更加高效的候选区域生成方法? 如何将所有的东西都用神经网络处理?

图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_10

faster R-CNN主要的步骤:

1. 卷积层:输入图片经过多层卷积神经网络(ZF,VGG),提取卷积特征图,供给RPN网络和Fast R-CNN使用,RPN网络和Fast R-CNN 共享

特征提取网络可减少计算时间。

2. RPN层:生成候选区域,并用softmax判断候选框是前景还是背景,从中选取前景候选框并利用bounding box regression调整候选框的位置,得到候选区域。

图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_11


图像差异检测 深度学习 图像检测算法_特征提取_12

3. ROIPooling层:同Fast R-CNN一样,将尺寸不同的候选框,在特征图上的对应的区域池化为维度相同的特征图。
4.分类与回归 :同fast R-CNN ,用softmax分类器判断图像的类别,同时用边界框回归修正边界框的位置和大小。

关于anchor box

图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_13


图像差异检测 深度学习 图像检测算法_特征提取_14

图像差异检测 深度学习 图像检测算法_召回率_15

One-stage

对输入的图像直接处理

yolo

图像差异检测 深度学习 图像检测算法_相似度_16


图像差异检测 深度学习 图像检测算法_召回率_17


图像差异检测 深度学习 图像检测算法_召回率_18


图像差异检测 深度学习 图像检测算法_特征提取_19


图像差异检测 深度学习 图像检测算法_相似度_20

ssd

图像差异检测 深度学习 图像检测算法_召回率_21


图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_22


图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_23

图像差异检测 深度学习 图像检测算法_特征提取_24

图像检测算法

图像差异检测 深度学习 图像检测算法_图像差异检测 深度学习_25

图像差异检测 深度学习 图像检测算法_特征提取_26

本文来自《智能计算系统》课程