热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文献精读——(第十四篇)目标检测综述

引言

目标检测:

目标检测的目标是确定某张给定图像中是否存在给定类别(比如人、车、自行车、狗和猫)的目标实例;如果存在,就返回每个目标实例的空间位置和覆盖范围(比如返回一个边界框)。

目标检测的意义

作为图像理解和计算机视觉的基石,目标检测是解决分割、场景理解、目标追踪、图像描述、事件检测和活动识别等更复杂更高层次的视觉任务的基础。目标检测在人工智能和信息技术的许多领域都有广泛的应用,包括机器人视觉、消费电子产品、安保、自动驾驶、人机交互、基于内容的图像检索、智能视频监控和增强现实。

目标检测的过程:

传统的目标检测方法一般分为三个阶段:首先在给定的图像上选择一些候选区域,然后对这些区域提取特征,最后使用分类器进行分类。

目标检测面临的难点:

  • 高准确度(Loc acc.+Reg acc.)

    • 对类内形变的鲁棒性
      • 同类物体有很多不同的实例(不同纹理/颜色/材质等)
      • 目标实例的多样性(姿态/非刚性形变等)
      • 采样过程的条件和环境的影响(光照/尺度/遮挡/阴影/污迹/角度/背景)
      • 图像噪声(采样过程的噪声/滤波器影响/压缩的噪声等)
    • 高的可区分性
      • 类间的相似性
      • 目标物体类别多样
  • 高效性(时间、内存效率)

    • 实际中目标类别成千上万
    • 需要定位并辨别目标类别
    • 目标的可能定位数量太多
    • 图像/视频数据太多

目标检测发展:
文献精读——(第十四篇)目标检测综述
过去20年的进展:

文献精读——(第十四篇)目标检测综述
整体而言,这些检测器可以分为两大主要类别:

  • 两级式(2-stage):区域提议+检测(R-CNN系列),主要倾向于准

  • 单级式(1-stage):无区域提议框架,提议和检测是整体的(SSD,YOLO系列),主要倾向于快

1. R-CNN(2013)

R-CNN是利用卷积神经网络进行“目标检测”的开山之作,其意义深远

R-CNN流的发展过程:

R-CNN -> SPP Net -> Fast R-CNN -> Faster R-CNN -> Mask R-CNN
文献精读——(第十四篇)目标检测综述
实现步骤:
文献精读——(第十四篇)目标检测综述
1)Region Proposal+Crop/Wrap归一化:通过SS方法生成约2000个候选区域,并将候选区域resize成固定大小(227*227)

2)对每个框进行CNN特征提取:对每个候选区域提取卷积特征图,得到4096-d的向量

3)SVM分类+边界回归:将2000个特征向量送入SVM学习N个SVM分类器

  • 每个分类器用来对特定类别分类,预测出候选区域中所含物体属于每个类的概率值。由于负样本太多,采用hard negative mining的方法在负样本中选取有代表性的负样本。

  • 通过回归方法得到目标b-box

  • 定位精度:利用IoU来近似表示

  • 思路:假设得到的物体检测框与实际标注的物体边界框存在一个线性变化,则可以通过学习线性变换参数的方法实现位置精修。通过学习线性变换参数,从而得出使得loss函数最小的线性变换。

R-CNN的贡献:

1)使用ImageNet训练好的优质模型,在PASCAL VOC数据集上机芯微调,因为大数据集图像高达几百万,利用卷积网络充分学习了浅层特征,之后在小数据集上微调后进行特征提取,获得了好多特征提取效果。

2)使用b-box regression进行了目标包围框的修正

R-CNN的缺点:

1)SS耗时:每幅图像的SS需要花费2s

2)每个候选区域内的图像都要经过一次AlexNet,为所有的框提取特征大约花费47s,且每个特征都要存储下来,浪费空间。

3)三个模块(SS+特征提取+分类)是分别训练的,导致训练分类器时没有更新网络参数,且对存储空间消耗很大

4)所有的框都暴力归一化到统一大小227*227,造成图像内容损失,引起物体形变,影响精度。

R-CNN的主要特点有以下三点:

1)利用了selective search方法,即先通过实例分割将图像分割为若干小块,然后选择相似度较高的小块,把这些相似小块合并为一个大块,最后整个物体生成一个大的矩形框,通过这种方法大大提高候选区域的筛选速度。

2)用在ImageNet数据集上进行学习的参数对神经网络进行预处理,解决了在目标检测训练过程中标注数据不足的问题。

3)通过线性回归模型对边框进行校准,减少图像中的背景空白,得到更精确的定位。

4)该方法将PASCAL VOC上的检测率从35.1%提升到了53.7%,其意义与AlexNet在2012年取得分类任务的大突破是相当的,对目标检测领域影响深远。

2. SPPnet(空域金字塔池化,2014)

该方法提出的最初原因是为了解决全连接层的输入要求大小统一的问题,SPP层可以和R-CNN结合起来提升网络性能。R-CNN中采用暴力resize的方法将所有的框都归一化为227*227,但这会影响识别精度,于是SPPnet在CNN层与全连接层之间插入了空间金字塔池化层来解决该矛盾。

SPPnet(下)与普通网络(上)对比:
文献精读——(第十四篇)目标检测综述
SPP原理:

假定CNN层得到的特征图大小为a×a(比如13×13,随输入图片大小而变化),设定的金字塔尺度为n×n bins(对于不同大小图片是固定的),那么SPP层采用一种滑动窗口池化,窗口大小win_size=⌈a/n⌉,步长为stride=⌊a/n⌋,采用max pooling,本质上将特征图均分为n×n个子区域,然后对各个子区域max pooling,这样不论输入图片大小,经过SPP层之后得到是固定大小的特征。一般设置多个金字塔级别,文中使用了4×4,2×2和1×1三个尺度。

每个金字塔都得一个特征,将它们连接在一起送入后面的全连接层即可,这样就解决了变大小图片输入的问题了。SPP-net在ImageNet ILSVRC 2014图像分类大赛中夺得了第三名。

文献精读——(第十四篇)目标检测综述
空间金字塔池化过程:
文献精读——(第十四篇)目标检测综述
输入图像 →→ \tox分别表示预测框、锚框和真实框,这可以被认为是从锚框到邻近真实边界框的回归。

四步交替优化法,使得学习到RPN和CNN共享特征的统一网络

  • 训练RPN,使用ImageNet预训练模型进行初始化,对区域提议任务进行端到端的微调

    • 随机采样256个anchors,正负比1:1–不够用负样本填充;
    • μ=0,σ=0.01,学习率=0.001 or 0.0001,动量=0.9,衰减系数=0.0005
  • 使用由第一步RPN生成的提议,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet的预训练模型进行初始化。此时两个网络不共享卷积层。

  • 使用检测器网络来初始化RPN训练,但是我们修正共享的卷积层,并且只对RPN特有的层进行微调。现在这两个网络共享卷积层。

  • 保持共享卷积层的固定,对Fast R-CNN的独有层进行微调。

注意:

1)训练时忽略超过图像边界的anchor boxes(不收敛且误差难以纠正),测试时剪切跨边界的框。

2)一些RPN proposals相互高度重叠,为了减少冗余,根据cls分数采取非极大值抑制,阈值为0.7,NMS不会影响检测准确性,但会大大减少proposal的数量。在NMS之后使用前N个候选区域进行检测。

5. Mask R-CNN(2017)

R-CNN家族系统对比

从R-CNN,SPP-net,Fast R-CNN到Faster R-CNN,基于深度学习目标检测的流程变得更加精简、精度更高、速度更快,因此基于region proposal的R-CNN系列目标检测方法是当前目标最主要的一个分支。

Faster RCNN这种基于CNN的目标检测方法使得real-time检测成为可能,在这个方向上有老进一步的研究思路。

RCNN网络的演进如下:
文献精读——(第十四篇)目标检测综述

三者的比较:
文献精读——(第十四篇)目标检测综述

引言

目标检测:

目标检测的目标是确定某张给定图像中是否存在给定类别(比如人、车、自行车、狗和猫)的目标实例;如果存在,就返回每个目标实例的空间位置和覆盖范围(比如返回一个边界框)。

目标检测的意义

作为图像理解和计算机视觉的基石,目标检测是解决分割、场景理解、目标追踪、图像描述、事件检测和活动识别等更复杂更高层次的视觉任务的基础。目标检测在人工智能和信息技术的许多领域都有广泛的应用,包括机器人视觉、消费电子产品、安保、自动驾驶、人机交互、基于内容的图像检索、智能视频监控和增强现实。

目标检测的过程:

传统的目标检测方法一般分为三个阶段:首先在给定的图像上选择一些候选区域,然后对这些区域提取特征,最后使用分类器进行分类。

目标检测面临的难点:

  • 高准确度(Loc acc.+Reg acc.)

    • 对类内形变的鲁棒性
      • 同类物体有很多不同的实例(不同纹理/颜色/材质等)
      • 目标实例的多样性(姿态/非刚性形变等)
      • 采样过程的条件和环境的影响(光照/尺度/遮挡/阴影/污迹/角度/背景)
      • 图像噪声(采样过程的噪声/滤波器影响/压缩的噪声等)
    • 高的可区分性
      • 类间的相似性
      • 目标物体类别多样
  • 高效性(时间、内存效率)

    • 实际中目标类别成千上万
    • 需要定位并辨别目标类别
    • 目标的可能定位数量太多
    • 图像/视频数据太多

目标检测发展:
文献精读——(第十四篇)目标检测综述
过去20年的进展:

文献精读——(第十四篇)目标检测综述
整体而言,这些检测器可以分为两大主要类别:

  • 两级式(2-stage):区域提议+检测(R-CNN系列),主要倾向于准

  • 单级式(1-stage):无区域提议框架,提议和检测是整体的(SSD,YOLO系列),主要倾向于快

1. R-CNN(2013)

R-CNN是利用卷积神经网络进行“目标检测”的开山之作,其意义深远

R-CNN流的发展过程:

R-CNN -> SPP Net -> Fast R-CNN -> Faster R-CNN -> Mask R-CNN
文献精读——(第十四篇)目标检测综述
实现步骤:
文献精读——(第十四篇)目标检测综述
1)Region Proposal+Crop/Wrap归一化:通过SS方法生成约2000个候选区域,并将候选区域resize成固定大小(227*227)

2)对每个框进行CNN特征提取:对每个候选区域提取卷积特征图,得到4096-d的向量

3)SVM分类+边界回归:将2000个特征向量送入SVM学习N个SVM分类器

  • 每个分类器用来对特定类别分类,预测出候选区域中所含物体属于每个类的概率值。由于负样本太多,采用hard negative mining的方法在负样本中选取有代表性的负样本。

  • 通过回归方法得到目标b-box

  • 定位精度:利用IoU来近似表示

  • 思路:假设得到的物体检测框与实际标注的物体边界框存在一个线性变化,则可以通过学习线性变换参数的方法实现位置精修。通过学习线性变换参数,从而得出使得loss函数最小的线性变换。

R-CNN的贡献:

1)使用ImageNet训练好的优质模型,在PASCAL VOC数据集上机芯微调,因为大数据集图像高达几百万,利用卷积网络充分学习了浅层特征,之后在小数据集上微调后进行特征提取,获得了好多特征提取效果。

2)使用b-box regression进行了目标包围框的修正

R-CNN的缺点:

1)SS耗时:每幅图像的SS需要花费2s

2)每个候选区域内的图像都要经过一次AlexNet,为所有的框提取特征大约花费47s,且每个特征都要存储下来,浪费空间。

3)三个模块(SS+特征提取+分类)是分别训练的,导致训练分类器时没有更新网络参数,且对存储空间消耗很大

4)所有的框都暴力归一化到统一大小227*227,造成图像内容损失,引起物体形变,影响精度。

R-CNN的主要特点有以下三点:

1)利用了selective search方法,即先通过实例分割将图像分割为若干小块,然后选择相似度较高的小块,把这些相似小块合并为一个大块,最后整个物体生成一个大的矩形框,通过这种方法大大提高候选区域的筛选速度。

2)用在ImageNet数据集上进行学习的参数对神经网络进行预处理,解决了在目标检测训练过程中标注数据不足的问题。

3)通过线性回归模型对边框进行校准,减少图像中的背景空白,得到更精确的定位。

4)该方法将PASCAL VOC上的检测率从35.1%提升到了53.7%,其意义与AlexNet在2012年取得分类任务的大突破是相当的,对目标检测领域影响深远。

2. SPPnet(空域金字塔池化,2014)

该方法提出的最初原因是为了解决全连接层的输入要求大小统一的问题,SPP层可以和R-CNN结合起来提升网络性能。R-CNN中采用暴力resize的方法将所有的框都归一化为227*227,但这会影响识别精度,于是SPPnet在CNN层与全连接层之间插入了空间金字塔池化层来解决该矛盾。

SPPnet(下)与普通网络(上)对比:
文献精读——(第十四篇)目标检测综述
SPP原理:

假定CNN层得到的特征图大小为a×a(比如13×13,随输入图片大小而变化),设定的金字塔尺度为n×n bins(对于不同大小图片是固定的),那么SPP层采用一种滑动窗口池化,窗口大小win_size=⌈a/n⌉,步长为stride=⌊a/n⌋,采用max pooling,本质上将特征图均分为n×n个子区域,然后对各个子区域max pooling,这样不论输入图片大小,经过SPP层之后得到是固定大小的特征。一般设置多个金字塔级别,文中使用了4×4,2×2和1×1三个尺度。

每个金字塔都得一个特征,将它们连接在一起送入后面的全连接层即可,这样就解决了变大小图片输入的问题了。SPP-net在ImageNet ILSVRC 2014图像分类大赛中夺得了第三名。

文献精读——(第十四篇)目标检测综述
空间金字塔池化过程:
文献精读——(第十四篇)目标检测综述
输入图像 →→ \tox分别表示预测框、锚框和真实框,这可以被认为是从锚框到邻近真实边界框的回归。

四步交替优化法,使得学习到RPN和CNN共享特征的统一网络

  • 训练RPN,使用ImageNet预训练模型进行初始化,对区域提议任务进行端到端的微调

    • 随机采样256个anchors,正负比1:1–不够用负样本填充;
    • μ=0,σ=0.01,学习率=0.001 or 0.0001,动量=0.9,衰减系数=0.0005
  • 使用由第一步RPN生成的提议,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet的预训练模型进行初始化。此时两个网络不共享卷积层。

  • 使用检测器网络来初始化RPN训练,但是我们修正共享的卷积层,并且只对RPN特有的层进行微调。现在这两个网络共享卷积层。

  • 保持共享卷积层的固定,对Fast R-CNN的独有层进行微调。

注意:

1)训练时忽略超过图像边界的anchor boxes(不收敛且误差难以纠正),测试时剪切跨边界的框。

2)一些RPN proposals相互高度重叠,为了减少冗余,根据cls分数采取非极大值抑制,阈值为0.7,NMS不会影响检测准确性,但会大大减少proposal的数量。在NMS之后使用前N个候选区域进行检测。

5. Mask R-CNN(2017)

R-CNN家族系统对比

从R-CNN,SPP-net,Fast R-CNN到Faster R-CNN,基于深度学习目标检测的流程变得更加精简、精度更高、速度更快,因此基于region proposal的R-CNN系列目标检测方法是当前目标最主要的一个分支。

Faster RCNN这种基于CNN的目标检测方法使得real-time检测成为可能,在这个方向上有老进一步的研究思路。

RCNN网络的演进如下:
文献精读——(第十四篇)目标检测综述

三者的比较:
文献精读——(第十四篇)目标检测综述


推荐阅读
  • 本文探讨了图像标签的多种分类场景及其在以图搜图技术中的应用,涵盖了从基础理论到实际项目实施的全面解析。 ... [详细]
  • 卷积神经网络(CNN)基础理论与架构解析
    本文介绍了卷积神经网络(CNN)的基本概念、常见结构及其各层的功能。重点讨论了LeNet-5、AlexNet、ZFNet、VGGNet和ResNet等经典模型,并详细解释了输入层、卷积层、激活层、池化层和全连接层的工作原理及优化方法。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 大数据时代的机器学习:人工特征工程与线性模型的局限
    本文探讨了在大数据背景下,人工特征工程与线性模型的应用及其局限性。随着数据量的激增和技术的进步,传统的特征工程方法面临挑战,文章提出了未来发展的可能方向。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 2017年人工智能领域的十大里程碑事件回顾
    随着2018年的临近,我们一同回顾过去一年中人工智能领域的重要进展。这一年,无论是政策层面的支持,还是技术上的突破,都显示了人工智能发展的迅猛势头。以下是精选的2017年人工智能领域最具影响力的事件。 ... [详细]
  • 利用Java与Tesseract-OCR实现数字识别
    本文深入探讨了如何利用Java语言结合Tesseract-OCR技术来实现图像中的数字识别功能,旨在为开发者提供详细的指导和实践案例。 ... [详细]
  • 吴恩达推出TensorFlow实践课程,Python基础即可入门,四个月掌握核心技能
    量子位报道,deeplearning.ai最新发布了TensorFlow实践课程,适合希望使用TensorFlow开发AI应用的学习者。该课程涵盖机器学习模型构建、图像识别、自然语言处理及时间序列预测等多个方面。 ... [详细]
  • 本文详细记录了作者从7月份的提前批到9、10月份正式批的秋招经历,包括各公司的面试流程、技术问题及HR面的常见问题。通过这次秋招,作者深刻体会到了技术积累和面试准备的重要性。 ... [详细]
  • 如何用GPU服务器运行Python
    如何用GPU服务器运行Python-目录前言一、服务器登录1.1下载安装putty1.2putty远程登录 1.3查看GPU、显卡常用命令1.4Linux常用命令二、 ... [详细]
  • 本文详细介绍了 TensorFlow 的入门实践,特别是使用 MNIST 数据集进行数字识别的项目。文章首先解析了项目文件结构,并解释了各部分的作用,随后逐步讲解了如何通过 TensorFlow 实现基本的神经网络模型。 ... [详细]
  • 本文介绍了一个使用Keras框架构建的卷积神经网络(CNN)实例,主要利用了Keras提供的MNIST数据集以及相关的层,如Dense、Dropout、Activation等,构建了一个具有两层卷积和两层全连接层的CNN模型。 ... [详细]
author-avatar
幻灵风
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有