2.1 目标检测简介

2023-11-17

2.1 目标检测简介1

目标检测是另一项非常重要的计算机视觉任务,图像分类的目的是辨别图片中所包含的主体对象是什么,而目标检测的目标是检测图像中某对象的位置所在。简单的说,图像分类任务解决的是 What 问题,而目标检测的任务是 What + Where,这是一项非常基础且具有很大挑战性的计算机视觉任务,也是实例分割、图像解说、目标跟踪等许多下游任务的基础。目标检测根据其开发应用场景可分为通用目标检测和特定目标检测,前者主要模拟人类视觉感知,以区别不同目标对象,后者诸如行人检测、人脸检测,主要应用于某一特定场景。在本系列中,我们主要关注前者,即通用目标检测。

【图 1】

上图是目标检测近 20 年来的具有里程碑意义的一些重要工作或模型的提出,在 2012 年 AlexNet 网络提出之前,目标检测算法大多是基于人工精心设计的特征构建的,而在 2012 年 CNN 架构复燃之后,以深度学习为代表的相关技术利用强大的特征提取能力以及软硬件的加速方法逐步取代过去手工特征构建时代,将目标检测任务推向了一个新高度。

2.1.1 传统的目标检测方法

在 2001 年由 P. Viola 和 M. Jones 提出的维奥拉-琼斯(Viola-Jones)目标检测框架是第一种可以实时处理并给出很好物体检测率的目标检测方法,该方法的论文于 2011 年 CVPR 会议上被评为龙格-希金斯奖。但是该框架主要用于解决人脸检测方面。其主要架构组成包括特征类型的选择及优化、AdaBoost 学习算法以及级联架构的设计。

方向梯度直方图(HOG)特征描述最初是由 N. Dalal 和 B.Triggs 在2005年提出的。HOG 可以被认为是对尺度不变特征变换(sift)和当时形状上下文(shape contexts)的重要改进。但与它们的不同点是:HOG 检测器是在一个网格密集的大小统一的细胞单上计算,而且为了提高性能,还采用了重叠的局部对比度归一化技术。该方法最初主要应用在静态图像中的行人检测上,但在后来,他们也被应用在影片中的行人检测,以及静态图像中的车辆和常见动物的检测。多年来,HOG检测器一直是许多目标检测器和各种计算机视觉应用的重要基础。

基于可变形部件模型(Deformable parts -based Model, DPM) DPM 可以认为是传统对象检测方法的巅峰。作为 HOG 检测器的扩展,DPM 最初是由 P. Felzenszwalb 于 2008 年提出,之后 R. Girshick 又进行了各种改进和提升。DPM遵循“分而治之”的检测思想,训练可以简单地看作是学习一种正确的分解对象的方法,推理可以看作是对不同对象部分的描述的集合。例如,检测“汽车”的问题可以看作是检测它的窗口、车身和车轮。虽然目前的对象检测器在检测精度上已经远远超过了 DPM,但其中很多仍然深受其有价值的见解的影响,如混合模型、难例挖掘、边界框回归等。

2.1.2 深度学习时代的目标检测

2012年,AlexNet 网络的成功,使得 CNN 再次回到人们的视野,开启了深度学习在 CV 领域的霸主时代。CNN 较传统方法,其最大的优势在于 CNN 层级特征提取器具有更强的鲁棒性。R. Girshick 等人在 2014 年提出了 RCNN 目标检测方法,自此目标检测开始以前所未有的速度发展。在深度学习时代,根据目标检测技术实现过程,可以大致将其分为两类: “两个阶段检测” 和 “一个阶段检测”,前者将检测框架视为一个“由粗到精”的过程,而后者将检测框架视为“一步完成”。

两个阶段的目标检测算法

RCNN 架构设计思路是首先通过选择搜索算法提取一组目标候选框。然后,将每个候选框选择的图像重新调整为固定的大小,并将其输入到 CNN 分类模型中,以提取特征。最后,利用线性 SVM 分类器对每个区域内的目标进行预测。Fast-RCNN 在此基础上改变搜索算法和特征提取的顺序以减少计算量,但其检测速度仍然受到目标搜索算法的限制。2015年,S. Ren 等人在 Fast RCNN 之后不久就提出了 Faster RCNN 检测器。Faster RCNN是第一个端到端的,也是第一个接近实时的深度学习检测器。其主要贡献是引入了区域候选网络(RPN),大大解决了目标搜索的计算量。从 R-CNN 到 Faster RCNN,一个目标检测系统的大部分独立块,如候选区域检测、特征提取、边框回归等,都逐渐集成到一个统一的端到端学习框架中。

虽然Faster RCNN突破了 Fast RCNN的速度瓶颈,但是在后续的检测阶段仍然存在计算冗余。2017年, T.-Y.Lin 等人基于 Faster RCNN提出了特征金字塔网络(FPN)。在 FPN 之前,大多数基于深度学习的检测器只在网络的顶层进行检测。虽然 CNN 较深层的特征有利于分类识别,但不利于目标的定位。为此,在 FPN 中开发了一个具有横向连接的自顶向下体系结构,用于在所有级别上构建高级语义。由于 CNN 通过前向传播自然形成了一个特征金字塔,所以 FPN 在检测具有多种尺度的目标时显示出了很大的进步。FPN 现在已经成为许多最新探测器的构建模块。

一个阶段的目标检测算法

2015 年由 R.Joseph 等人提出的 YOLO(You Only Look Once) 算法是深度学习时代的第一个单阶段检测器。从它的名字可以看出,作者完全抛弃了之前的 “候选区域检测+验证” 的检测范式。相反该网络将图像分成多个区域,并同时为每个区域预测边界框和概率。后来 R. Joseph 在 YOLO 的基础上进行了一系列改进,提出了其 V2 和 V3 版本,在保持很高检测速度的同时进一步提高了检测精度。虽然 YOLO 的检测速度有了很大的提高,但是与两阶段检测器相比,它的定位精度有所下降,特别是对于一些小目标。

2015 年,由 W.Liu 等人提出的 SSD(Single Shot MultiBox Detector) 算法是深度学习时代的第二种单阶段检测器。SSD 的主要贡献是引入了多参考和多分辨率检测技术,这显著提高了单阶段探测器的检测精度,特别是对于一些较小的目标。SSD在检测速度和准确度上都有优势。SSD 与以往任何检测器的主要区别在于,前者可以在网络的不同层上检测到 5 个不同尺度的目标,而后者只在其顶层运行检测。

2017年,T.-Y.Lin 等人发现了单阶段检测器速度快、结构简单,但多年来一直落后于两阶段检测器的精度的原因后,提出了RetinaNet,他们声称,这种原因主要是在密集探测器训练过程中所遇到的极端的前-后级不平衡。为此,他们在 RetinaNet 中引入了一个新的损失函数 “focal损失”,通过对标准交叉熵损失的重构,使检测器在训练过程中更加关注难分类的样本。Focal 损失使得单级检测器在保持很高的检测速度的同时,可以达到与两级探测器相当的精度。

【图 2】

上图是近年来一些著名的目标检测框架在各类主流开源数据集上取得的成果。明显可以看到,在 2014 年以后,深度学习方法在目标检测领域的发展非常迅速,其检测指标的提升速度相当惊人,为了更好的学习该领域的相关知识及跟进深度学习在该领域的发展,本系列文章将以《CNN 与目标检测》为题重点对深度学习阶段的目标检测技术进行讲解。


  1. Object Detection in 20 Years: A Survey ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.1 目标检测简介 的相关文章

随机推荐

  • day075:XML的约束:DTD约束文档、DTD约束文档的三种引入方法、DTD语法规则

    目录 一 DTD约束 1 什么是DTD约束 2 创建DTD约束文档的步骤 3 代码示例 4 引入DTD约束文档的三种方法 1 引入本地DTD约束文档 2 在xml文件内部引入 3 从网络引入dtd文件 二 DTD语法规则 DTD定义元素 标
  • CodeForces 1025C Plasticine zebra

    题目大意 题目链接 给定一个由w和b组成的字符串 可以操作任意次 每次操作 0次或多次 可以将字符串分割成左右两个子串 左 右侧子串均前后颠倒 问最终字符串中最多可以有多少个w和b交错 w和b无所谓顺序 题解 构造 比较好想 总述 当最左端
  • Stable-Diffusion-WebUI从代码下载到使用技巧

    一 写在前面 本文用于对AI绘画感兴趣但无计算机编程基础的人 包含本人安装和使用过程中的心得 可供新学者参考 心理准备 电脑性能越高越好 最好有高端显卡 如30系以上 低端显卡也可以 速度和质量感人就是 会要求下载一些软件 模型 涉及环境变
  • 判断一个点是否在圆内(三点确定一个圆)

    三角形的外接圆圆心是任意两边的垂直平分线的交点 三角形外接圆圆心叫外心
  • element的滚动去掉横向_textarea去掉滚动条 textarea横向或纵向滚动条的去掉方法

    在IE下文本框textarea会显示滚动条 如下 去掉textarea横向或纵向滚动条办法 可以通过overflow x hidden和overflow y hidden控制横向和纵向滚动条 要设置textarea文本域的滚动条是否开启 使
  • 30 个 Python 教程和技巧

    如果您让任何 Python 程序员讲述 Python 的优势 他会引用简洁和高可读性作为最有影响力的优势 在本 Python 教程中 我们将介绍许多基本的 Python 教程和技巧 这些技巧和技巧将验证上述两点 自从我开始使用 Python
  • 四年Android面试遇到的问题整理,算法太TM重要了

    何为成长 成长是指自我提升 一方面是本身的个人能力 另一方面是社会对你的认可度 最终 程序员的职位和薪水都能在成长中得以体现 很多人对成长有误解 在他们眼中 随着工作年限的提高 成长是理所当然的事情 这其实是一个误区 两个程序员同时工作3年
  • 解决大批量数据导出Excel产生内存溢出的方案

    相关文章 java操作Excel PDF文件 Java操作Excel之理解JXL 读取Excel Java操作Excel之理解JXL 读取Excel模板动态写入数据并生成Excel 推荐圈子 GT Grid 更多相关推荐 POI或者JXL在
  • l05173芯片针脚图_芯片引脚定义

    电源管理芯片引脚定义 1 AGND GND PGND 模拟地 地线 电源地 2 BOOT 次级驱动信号器过流保护输入端 3 COMP 电流补偿控制引脚 4 CT 定时电容 5 DRIVE cpu 外核场管驱动信号输出 6 FAULT 过耗指
  • Protues 8.7:i8086.DLL failed to create DSIM model

    如图所示 8086报错 解决一 换版本 如Protues 7 8 解决二 有的版本i8086 DLL文件不好用 使用这个 链接 https pan baidu com s 1eKniBmf7xJJHwPAxX8dQBg 提取码 8086 文
  • SpringBoot 文件下载功能 IE浏览器汉字乱码问题

    问题描述 今天在实现文件下载并指定文件名称时 遇到文件下载在Google 浏览器下载正常 指定文件名称汉字未乱码 但是在IE11 浏览器上 指定文件名称汉字乱码 问题产生原因 Chrome浏览器可以自动执行两次URL解码 所以下载的文件名是
  • java使用mybatis一次性插入多条数据

    项目场景 java使用ibatis作为持久层框架时如何一次性插入多条数据 问题描述 正常插入一条数据的代码是这样的 mapper insert model 问题分析 这样单条插入是没有问题 问题是遇到多条要连续插入数据的时候循环执行会占用很
  • 提权重启自己

    using System using System Collections Generic using System ComponentModel using System Data using System Drawing using S
  • USB、UART、232串口通信和转换芯片

    USB转RS232串口应用 usb转232 PC技术小能手的博客 CSDN博客 USB直接转RS232 或者先USB 转UART 后UART再转RS232 usb转rs232串口驱动的作用 一文带你读懂UARTTTLRS232 调试血泪经验
  • 全球公链进展

    一周速览 过去一周 明星项目动态如下 以太坊ACDE会议更新 Devnet 9 预计将于9月19日启动 以太坊编程语言 Vyper 发布 v0 3 10 候选版本 Conflux v2 3 0 网络硬分叉升级已完成 Cosmos Hub宣布
  • 微信小程序动态修改数据 list展示

    前沿 我想实现一个动态修改data内数据的功能 试验了几种方式 感觉下面的这种方式最实用 所以记录一下 方便后面的小伙伴来学习 代码 js文件代码 Page data artlist 页面加载时候出发的方法 onLoad function
  • 租房信息采集并做数据分析

    郑州常住人口1260 1万人 跃居中部第一 2020年郑州吸纳的省内其他城市流出人口达368万人 郑州户籍总人口数量为881 6万人 采集分区 二七区 中原区 管城回族区 惠济区 金水区 郑东新区 荥阳市 新郑市 上街区 巩义市 新密市 登
  • AndroidStudio 开发中字符串国际化string.xml与Excel表格的互相导入

    在Android 的开发中有时需要适配国际化 需要将string xml中的字符串导出翻译 然后再将翻译后的字符串导入至AndroidStudio中相应的string xml中 关于国际化的实现 可参考Android适配国际化的三种方式 应
  • DP++转HDMI1.4

    CS5216AN 一 主要特征 符合 VESA 双模式 DisplayPort 标准 版本 1 适用于 2 类电缆适配器应用 包括所需的 2 类电缆适配器标识和控制寄存器以及 I2C over AUX 转换 符合 HDMI 1 4b 规范
  • 2.1 目标检测简介

    目录 2 1 目标检测简介 1 2 1 1 传统的目标检测方法 2 1 2 深度学习时代的目标检测 2 1 目标检测简介1 目标检测是另一项非常重要的计算机视觉任务 图像分类的目的是辨别图片中所包含的主体对象是什么 而目标检测的目标是检测图