引言

目标检测:

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

目标检测的意义

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

目标检测的过程:

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

目标检测面临的难点:

  • 高准确度(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图像分类大赛中夺得了第三名。


空间金字塔池化过程:

输入图像 → → → →→ \to →→→x∗分别表示预测框、锚框和真实框,这可以被认为是从锚框到邻近真实边界框的回归。

四步交替优化法,使得学习到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网络的演进如下:

三者的比较:

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

  1. JavaCV的摄像头实战之十四:口罩检测

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<JavaCV的摄像头实战> ...

  2. 第七十四篇:机器学习优化方法及超参数设置综述

    第七十四篇:机器学习优化方法及超参数设置综述 置顶 2019-08-25 23:03:44 廖佳才 阅读数 207更多 分类专栏: 深度学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...

  3. Python之路【第十四篇】:AngularJS --暂无内容-待更新

    Python之路[第十四篇]:AngularJS --暂无内容-待更新 转载于:https://www.cnblogs.com/weiman3389/p/6224181.html

  4. 一文看尽10篇目标检测最新论文(SpineNet/AugFPN/LRF-Net/SABL/DSFPN等)

    点击上方"CVer",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 一周前 Amusi 整理了 目标检测(Object Detec ...

  5. CCIE-LAB-第十四篇-PIM Sparst+IGMP

    CCIE-LAB-第十四篇-PIM Sparst+IGMP 实际中,思科只会给你5个小时去做下面的全部配置 这个是CCIE-LAB的拓扑图 问题 翻译 FABD2正准备在其网络中启用PIM稀疏模式的中 ...

  6. CCNP-第十四篇-BGP综合实验

    CCNP-第十四篇-BGP综合实验 大家好呀,学了那么长时间的BGP,又是一个巨大分水岭,那怎么能没综合实验呢? 答案以及个人录制视屏(数字那个视频因为录制软件的问题看不到命令行可以直接看后面的,不喜 ...

  7. CCNA-第十四篇-NAT-下+链路聚合(LACP)+DHCP

    CCNA-第十四篇-NAT-下 这一篇是是针对一下华为设备的nat,然后讲讲链路聚合 下一篇来一个DHCP+一点点的SDN的介绍 **然后讲完SDN就基本上CCNA结束了哦** 华为的链路聚合叫Eth ...

  8. python原创第十四篇~判断,循环实战训练+答案

    2017-12-07 09:23:55 December Thursday the 49 week, the 341 day #原创第十四篇~判断,循环实战训练 题目:一个整数,它加上100后是一个完 ...

  9. python学习[第十四篇] 文件的输入与输出

    python学习[第十四篇] 文件的输入与输出 标准文件类型 一般来说只要程序一执行,就会访问3个文件: 标准输入(键盘) stdin 标准输出(显示器缓冲区) stdout 默认输出到屏幕 标准错误 ...

  10. JUC并发编程第十四篇,StampedLock(邮戳锁)为什么比ReentrantReadWriteLock(读写锁)更快!

    JUC并发编程第十四篇,StampedLock(邮戳锁)为什么比ReentrantReadWriteLock(读写锁)更快! 一.ReentrantReadWriteLock(读写锁) 1.读写锁存在 ...

最新文章

  1. MySQL排错工具perror
  2. PowerEdge M915 – 戴尔打出的又一记虚拟化重拳
  3. Layui layedate 弹窗插件,弹出就隐藏, 无法选择
  4. PE文件感染和内存驻留
  5. CreateProcess的使用方法
  6. dz论坛连接mysql数据库_dz论坛搬家后连接数据库等教程
  7. 使用docker搭建FastDFS文件系统
  8. 《精通自动化测试框架设计》—第2章 2.6节使用数据库
  9. Cocos2d-x 坐标系及其坐标转换
  10. Linux中如何调整pe的大小,关于LVM PE大小影响VG容量
  11. PAT甲级1001 字符串处理
  12. svn图标没有显示的解决办法
  13. 快捷指令通知运行html,快捷指令怎样运行这段,一个书签
  14. 【解决方案】云看大熊猫,动物园直播解决方案EasyNVR+EasyNVS如何玩转动物IP
  15. "Selenium + Firefox"如何使用带用户名密码认证的HTTP代理
  16. ubuntu:下载ubuntu内核
  17. golang bilibili直播弹幕姬
  18. 怎么设置指定号码打不进来_如何屏蔽某个电话号码,让它永远打不进来??
  19. 厉害了,我的中国造@主动发力还是借力打力?——思华科技18年自主创新经验谈(上篇)...
  20. 老子《道德经》第六十五章

热门文章

  1. 数据中心运维从零开始
  2. 北大同宿舍三人毕业后分别去外企、国企、创业,10年后都后悔什么
  3. 【CTF杂项】常用的一些加密解密工具网站集合(收藏用)
  4. python3 gb2312转utf8_python2和python3字符编码 unicode,utf-8,gb2312相互转换encode,decode...
  5. 十二生肖/星座中英文对照表
  6. 《基于剪切波变换的人脸表情识别》笔记
  7. 高速不按规定车道行驶_提醒!这些车辆不按规定车道行驶将被记3分,还会抓拍曝光...
  8. 【3】用户注册账户,如果注册的名字存在,提示已经存在,不能使用该名字注册,如果没有,则显示注册成功
  9. C++读取带逗号分隔符的数据文件
  10. countif函数比较两列不同_Excel中COUNTIF函数的五种必学使用技巧