深度学习时代目标检测的一般指南

主要内容:

  • 图像分类和目标检测的区别
  • 深度学习目标检测器的组成(不同目标检测架构的区别和基本模型之间的区别)
  • 如何使用预训练模型进行深度学习目标检测
  • 如何从一个深度学习模型中过滤或者忽略一些预测类别
  • 向深度神经网络增加类别或从中删除类别时常见的误区和误解

图像分类和目标检测的区别


图像分类:
  • 一个图像的类别标签输出
目标检测
  • 输出一个边界框列表,或者一幅图像中每个对象的(x,y)坐标
  • 与每个边界框关联的类别标签
  • 与每个边界框和类别标签关联的概率或者置信度得分
根本区别:
  • 在进行图像分类时,我们输入一张图像,得到一个输出类别
  • 在进行目标检测时,我们输入一张图像,得到多个边界框以及类别标签的输出


已训练的分类网络用于目标检测

  • 应用基于计算机视觉的标准目标检测方法,例如滑动窗口和图像金字塔等方法,通常被用在 HOG+基于线性 SVM 的目标检测器。
  • 深度学习方法,采用预训练的网络,并将其作为深度学习目标检测架构的基本网络(例如 Faster R-CNN, SSD, YOLO)。

传统技术路线:

1. 固定尺寸的滑动窗口,从左到右,自上而下滑动,来定位不同位置的对象。

2. 图像金字塔,用来检测不同尺度的对象。

3. 一个预训练(分类)的 CNN 来分类。

    在滑动窗和对应图像金字塔每一次停留的时候,我们会提取 ROI(感兴趣区域),将其输入到 CNN 中,得到对 ROI 的分类。

    如果标签 L 的分类概率比某个阈值 T 高,我们就将这个 ROI 的边界框标记为该标签(L)。对滑动窗和图像金字塔的每次停留都重复这个过程,我们就得到了目标检测器的输出。最终,我们对边界框应用非极大值抑制(NMS),得到最终输出的检测结果。

NMS:由于滑动窗口,每一个目标可能有多个框,我们需要非极大值抑制,来抑制冗余的框。

(1)将所有框的得分排序,选中最高分及其对应的框;

(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。

(3)从未处理的框中继续选一个得分最高的,重复上述过程。

    传统方法可以将任意图像分类网络转换为一个目标检测器,而不需要显式地训练一个端到端的深度学习目标检测器。这个方法可以节省大量的时间和精力,且效率的高低具体取决于你的用例。

深度学习目标检测:

将一个预训练的分类网络作为深度学习目标检测架构(例如 Faster R-CNN、SSD 或者 YOLO)的基本网络。

好处:你可以创建一个基于深度学习的复杂端到端目标检测器。


深度学习目标检测器的模块


基本网络(分类CNN):

  • VGGNet
  • ResNet
  • MobileNet
  • DenseNet
目标检测框架由很多组成部分和子模块构成。例如,Faster R-CNN 框架包括:
  • 候选区域网络(RPN)
  • 一组锚点
  • ROI池化模块
  • 基于区域的卷积神经网络

SSD(单步检测器,single shot detectors)组成部分:

  • 多框(MultiBox)
  • 先验(Priors)
  • 固定先验(Fixed priors)

    基本网络只是整个深度学习目标检测框架的众多组件之一,上文图 4 描述了 SSD 框架内部的 VGG-16 网络。通常,我们需要在基本网络上进行「网络手术」。这种修改:

  • 让它变成全卷积的形式,并接受任意输入维度。
  • 剪除了基本网络中更深层的卷积和池化层,将它们以一系列新层(SSD)、新模块(Faster R-CNN),或者这两者的一些组合代替。

   「网络手术」是移除基本网络中的一些原始卷积层,将它们用新层替代。网络手术也是讲究策略的,我们移除一些不需要的部分,然后用一组新的部分来替代它们。然后,当我们开始训练我们的框架进行目标检测时,(1)新层、模块和(2)基本网络的权重都被修改了。


深度学习目标检测器的准确度

  • 交并比(IoU)


    任何一个以预测边界框作(以及可选择的标签)为输出的算法都可以用 IoU 来评价。更一般的地,为了使用 IoU 来评价任意一个目标检测器,我们需要:

1. 真实的边界框(也就是测试集中表明我们的目标在图像的哪个位置的人工标签)

2. 模型预测到的边界框

3. 如果你想一起计算召回率和精度,那么还需要真实类别标签和预测类别标签

    仔细检查这个方程你会发现,IoU 就是一个比值。在分子项中,我们计算了真实边界框和预测边界框重叠的区域。分母是一个并集,或者更简单地说,是由预测边界框和真实边界框所包括的区域。两者相除就得到了最终弄的得分:交并比。

  • 平均精度均值(MAP)

    通常我们使用 mAP@0.5,表示测试集中要被标记为「正检测」的目标必须具备的条件,真值不小于 0.5 的 IoU(并可以被正确地标记)。这里的 0.5 是可以调整的,但是在所有的目标检测数据集和挑战中,0.5 是一个相对标准的数值。


添加或删除深度学习目标检测器的类别

1.从零开始训练通常会比较耗时间,是一个代价昂贵的操作,所以我们尽可能避免,但是在一些情况下是无法避免的。

2.另一个选择就是进行微调微调是一种迁移学习的形式,它是这样的过程:

  • 删除负责分类/打标签的全连接层
  • 并用全新的、随机初始化的全连接层替代

我们也可以选择性地修改网络中的其它层(包括在训练过程中冻结一些层的权重,以及解冻它们)。


原文链接:

https://www.pyimagesearch.com/2018/05/14/a-gentle-guide-to-deep-learning-object-detection/

阅读更多
文章标签: 目标检
个人分类: 目标检测
上一篇(一)数据挖掘基础
下一篇综述:深度学习时代的目标检测算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭