当前位置: 首页 > 编程日记 > 正文

继往开来!目标检测二十年技术综述

640?wx_fmt=jpeg


作者 | 周强

来源 | 我爱计算机视觉(id:aicvml)


计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶、视频监控、机器人视觉等,而被研究学者广泛关注。


几天前,arXiv新出一篇目标检测文献《Object Detection in 20 Years: A Survey》对该领域20年来出现的技术进行了综述,这是一篇投向PAMI的论文,作者们review了400+篇论文,总结了目标检测发展的里程碑算法和state-of-the-art,并且难能可贵的对算法流程各个技术模块的演进也进行了说明,还深入到目标检测的特定领域如人脸检测、行人检测等进行了总结,最后列举了未来可能的发展方向。


温故而知新,非常值得参考!


作者信息:


640?wx_fmt=png


该文作者来自美国密歇根大学、北京航空航天大学、滴滴出行。


下图是作者在谷歌学术检索目标检测相关关键字返回的历年文献数量,可见该领域20年来越来越受到学术界的关注。2018年有将近1200篇相关文献发表。


640?wx_fmt=png


目标检测路线图


作者将目标检测近20年来的里程碑算法画在时间轴上,如下:


640?wx_fmt=png


可见作者将算法大致分为2012年之前的传统检测方法与2012年之后出现的基于深度学习的检测方法。


  • 传统方法比如我们所熟知的V-J检测、HOG检测、DPM算法。

  • 深度学习方法截然不同的分为两条技术路径:单阶段检测算法与两阶段检测算法。


同时作者把目标检测的一些精度提高的方法的出现也列在了时间轴上,比如bounding box regression、multi-resolution detection等。


在目前最知名的评估数据集 VOC 2007 、VOC 2012、 COCO 上不同年份出现的算法精度提高,如下图:


640?wx_fmt=png

可见,深度学习在检测领域的开山之作 RCNN 取得了大幅度精度提高,开辟了检测的新时代。而今年新出的 TridentNet 是目前在 COCO 数据集上取得最高精度的算法。


目标检测数据集


作者总结了通用目标检测及几个特定目标检测的数据集。


  • 通用目标检测领域常用数据集:


640?wx_fmt=png


几个常用数据集的示例图片:


640?wx_fmt=png


  • 行人检测常用数据集:


640?wx_fmt=png


  • 人脸检测常用数据集:


640?wx_fmt=png


  • 文本检测常用数据集:


640?wx_fmt=png


  • 交通灯检测与交通标志检测常用数据集:


640?wx_fmt=png


  • 遥感目标检测常用数据集:


640?wx_fmt=png


目标检测技术演进


作者将目标检测中涉及的各种技术的演进铺展开来,让我们能就单一技术看到发展路径。


  • 早期目标检测算法代表:


640?wx_fmt=png


  • 多尺度检测技术演进路线图:


640?wx_fmt=png


  • 包围框回归技术演进路线图:


640?wx_fmt=png


  • 目标上下文建模技术演进路线图:


640?wx_fmt=png


  • 包围框非极大抑制(NMS)技术演进路线图:


640?wx_fmt=png


  • 难检测负样本挖掘技术演进路线图:


640?wx_fmt=png


目标检测计算加速


目标检测天生是计算密集型任务,所以在其发展的各个阶段,目标检测算法的加速就一直是一个重要议题。


作者总结的目标检测计算加速方法:


640?wx_fmt=png


可见主要是在三个层次加速:

  • 数值计算层次(如积分图、矢量量化等)、

  • 检测引擎层次(网络剪枝与量化、轻量级网络设计等)、

  • 检测流程层次(特征图共享、分类器加速、级连检测等)。


因为目前CNN检测方法是主流,作者列出了近年出现的卷积计算的一些加速方法及其时间复杂度:


640?wx_fmt=png


目标检测进展


作者在这部分描述了近三年来state-of-the-art目标检测技术的研究进展。


1. 更好地引擎(engine)


作者将深度学习目标检测网络的骨干网称为其引擎。改进目标检测的一个直接思路就是使用更加先进的骨干网。


如下图:


640?wx_fmt=png


相同算法用相同颜色的圆点表示,使用相同引擎的算法结果用一个大括号连接,我们可以轻易看出,使用不同的引擎对最终精度的影响更大。


2. 使用更好的特征


作者主要指:1)特征融合;2)学习大感受野的高分辨率特征


3. 超越滑动窗口


不再是局限于候选区域再分类的模式。作者提到两种新模式:


1)子区域搜索 sub-region search。将目标检测看为从初始网格到最终ground truth box的路径规划过程。


2)关键点定位。将目标检测看为特定语义点定位的过程。

比如:

ECCV18 Oral | CornerNet目标检测开启预测“边界框”到预测“点对”的新思路

Grid R-CNN解读:商汤最新目标检测算法


4. 目标定位改进


1)包围框提精。

2)改进loss函数用于精确定位。比如:


5. 检测与分割一起进行


  • 分割可以帮助目标检测提高类别识别的精度、获得更好地目标定位、嵌入更加丰富的上下文。


  • 分割的网络可以作为目标检测的提取网络,也可以作为多任务学习的损失函数,用以改进目标检测。


6. 旋转和尺度变化鲁棒的目标检测


  • 针对旋转变化鲁棒改进方向:


1)旋转不变损失函数;

2)旋转校正;

3)Rotation RoI Pooling。


  • 针对尺度变化鲁棒的改进:


1)尺度自适应训练;

2)尺度自适应检测。


7. Training from Scratch


不使用预训练模型,从头开始训练目标检测网络。


8. 对抗训练

比如有研究表明,GAN可以用来改进小目标的检测。


9. 弱监督的目标检测

不使用包围框标注,而仅使用图像级的目标标注的算法。

减少标注成本,扩大训练集。


目标检测应用


作者列举了目标检测的几个特殊应用,包括行人检测、人脸检测、文本检测、交通灯及标志检测、遥感目标检测。


640?wx_fmt=png


640?wx_fmt=png


640?wx_fmt=png


640?wx_fmt=png


640?wx_fmt=png


指出每种检测任务面临的困难和挑战,并简述了目前应对这些问题的方法。


目标检测的未来方向


作者列举的未来方向包括:


1. 轻量级目标检测算法;

2. 用AutoML设计目标检测算法;

3. 域适应(domain adaptation)改进目标检测;

4. 弱监督的目标检测;

5. 小目标检测;

6. 视频目标检测

7. 融合其他传感器信息的目标检测。


论文地址:

https://arxiv.org/abs/1905.05055v1


(*本文为 AI科技大本营转载文章,转载请联系作者)



公开课精彩推荐



本次课程将会介绍如何利用TensorRT加速YOLO目标检测,课程将会着重介绍编程方法。本次课程还会涉及到 TensorRT 中数据类型,流处理,多精度推理等细节的展示。本次课程特色是讲解+示例分享。本次课程中,QA也是一个非常精彩的环节。


640?wx_fmt=jpeg

640?wx_fmt=png

推荐阅读

  • 开源要自立?华为如何“复制”Google模式

  • 谷歌用1.2万个模型“推翻”现有无监督研究成果!斩获ICML 2019最佳论文

  • 24式,加速你的Python

  • 荔枝“自由”?朋友,你实现了吗?

  • 为防 Android 碎片化?Google 强迫开发者使用自有开发工具!

  • Docker 存储选型,这些年我们遇到的坑

  • 从制造业转型物联网,看博世如何破界

  • 回报率850%? 这个用Python优化的比特币交易机器人简直太烧脑了...

  • 面试阿里技术岗,竟然挂在第4 轮……


640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

相关文章:

python+selenium百度贴吧自动签到

#-*- coding:utf-8 -*- from selenium import webdriver import time import os import random from selenium.webdriver.common.action_chains import ActionChainsbrowser webdriver.Chrome()# 最大等待加载完的时间 max_loading 600 # 延时随机n秒执行 wait_time random.…

图像配准----NCC

在用Harris算子对图像进行角点提取后,两幅图像得到的角点个数不一定相等,这时就要先对它们进行处理,得出一一对应的角点对。 归一化互相关(Normalized Cross Correlation method, NCC)匹配算法是一种经典的统计匹配算法,通过计算模…

Ext Scheduler Web资源甘特图控件

原文来自 http://www.fanganwang.com/Product-detail-item-1430.html欢迎转载。 关键字: 资源甘特图又叫负荷图,其纵轴不再列出活动,而是列出整个部门或特定的资源。 Ext Scheduler资源甘特图是基于Extjs核心库的开发的,基于WEB浏…

50行代码教AI实现动作平衡 | 附完整代码

作者 | Mike Shi译者 | linstancy责编 | Jane出品 | AI科技大本营(id:rgznai100)【导读】本文将为大家展示如何通过 Numpy 库和 50行 Python 代码,使用标准的 OpenAI Gym平台创建智能体 (agent),就教会机器处理推车杆问…

图像配准----双向匹配

由Harris提取出的两幅图像的角点个数或对应关系并不是一一对应的。为了后续的配准,需要先对提取出的角点进行初始匹配,双向匹配方法是比较简单的一种方法,它实现容易。 设参考图像特征点集为X {x1, x2, …,xp}, p > 3;待配准图…

[专业亲测]Ubuntu16.04安装Nvidia显卡驱动(cuda)--解决你的所有困惑【转】

本文转载自: 因为要做毕设需要安装caffe2,配置cuda8.0,但是安装nvidia驱动真的是把我难倒了,看了很多篇博文都没有效果,现在我自己重新总结了下几种 安装方法(亲测有效),希望能帮到大…

IE下javascript的console方法

IE下javascript的console方法 FireFox 和 Chrome 下调试JS都有console&#xff0c;IE6下没有。特用此办法来兼容IE6. <br /><pre lang‘‘html‘‘> <!doctype html> <html> <head> <meta charset‘‘utf-8‘‘/> </head> <body&…

图像配准----RANSAC

对角点进行初始匹配后&#xff0c;所选定的角点并不能保证全部是正确的点&#xff0c;也可能有误点&#xff0c;因此&#xff0c;还需要进一步对所选定的角点进行精确匹配。 RANSAC(RANdom Sample And Consensus)方法是由Fischler和Bolles提出的一种鲁棒性的参数估计方法。它的…

教你用OpenCV实现机器学习最简单的k-NN算法

前言&#xff1a;OpenCV 的构建是为了提供计算机视觉的通用基础接口&#xff0c;现在已经成为经典和最优秀的计算机视觉和机器学习的综合算法工具集。作为一个开源项目&#xff0c;研究者、商业用户和政府部门都可以轻松利用和修改现成的代码。k-NN算法可以认为是最简单的机器学…

div 相同属性提取

把样式名或id写在一起&#xff0c;用逗号隔开 <!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>信息详情</title> <style type"text/css"> #box-1, #box-2, #box…

ehcache 简介

hCache 是一个纯Java的进程内缓存框架&#xff0c;具有快速、精干等特点&#xff0c;是Hibernate中默认的CacheProvider。 下图是 Ehcache 在应用程序中的位置&#xff1a; ehcache部署起来很简单&#xff0c;主要分两步&#xff1a; 1.首先要给他写个核心配置XML文件 <ehca…

【leetcode】30. Substring with Concatenation of All Words

题目如下&#xff1a; 解题思路&#xff1a;本题题干中有一个非常关键的前提&#xff0c;就是words中的所有word的长度一样&#xff0c;并且都要被使用到。所以&#xff0c;我们可以把输入的s按word的长度进行等分&#xff0c;以s "barfoothefoobarman",words [&qu…

图像配准----SIFT

SIFT算子(Scale Invariant Feature Transform)是David Lowe提出的一种基于尺度空间的、对图像缩放、旋转甚至仿射变换保持不变性的图像局部特征描述算子。SIFT特征提取的是极其细微、大量的特征点&#xff0c;即时少数物体、物体的一小部分也可以产生大量特征向量。 SIFT算法如…

终于把微软BING搜索-SPTAG算法的原理搞清了

作者 | beyondma转载自 CSDN 博客近日&#xff0c;微软在GitHub上开源了其BING的搜索算法SPTAG&#xff0c;github地址&#xff1a;https://github.com/microsoft/SPTAG。这个算法笔者简单看了一下&#xff0c;的确是很有价值可以看大家介绍下&#xff0c;这种称为SPTAG &#…

把握每天的第一个钟头

当我十七岁的时候&#xff0c;我读到一段话&#xff0c;它是这么说的&#xff1a;“如果你把每天都当做最后一天来活着&#xff0c;那么有一天你将会是对的。”这句话让我留下了深刻的印象&#xff0c;从那时候开始&#xff0c;过去的 33 年来&#xff0c;我每天早上都对着镜子…

向量叉积计算法

如果向量A为{a, b, c}&#xff0c;向量B为{m, n, p}&#xff0c;如何计算向量A与向量B的叉积呢&#xff1f; 用行列式&#xff1a; |i j k| |a b c| |m n p| (bp-cn)i (mc-pa)j (an-bm)k 例如用matlab实现两个向量的叉积&#xff1a; a [1 2 3]; …

你是个成熟的C位检测器了,应该可以自动找C位了

作者 | 李翔转载自视说AI&#xff08;ID:techtalkai&#xff09;写在前面C位是近年网络上一个比较热门的词&#xff0c;最早来源于DOTA等游戏领域&#xff0c;是核心位置&#xff08;Carry位&#xff09;的简称&#xff0c;代表的是能够在游戏前中期打钱发育并在游戏后期带领队…

Data Artisans发布支持ACID事务的流式处理框架Streaming Ledger

data Artisans宣布推出Streaming Ledger&#xff0c;它扩展了Apache Flink&#xff0c;提供了跨表、键和事件流执行可序列化ACID事务的功能。这项正在申请专利的技术是Flink的专有附加技术&#xff0c;超越了当前一次只能在一个键上实现一致性的标准。\\在发布Streaming Ledger…

The Life Cycle of a Servlet

为什么80%的码农都做不了架构师&#xff1f;>>> Servlet的生命周期由Servlet容器管理&#xff0c;包含如下几个步骤&#xff1a; 1. 装载Servlet类; 2. 创建Servlet的实例; 3. 调用Servlet的init()方法; 4. 调用Servlet的service()方法; 5. 调用Servlet的destroy()…

矩阵奇异值分解

转自&#xff1a;http://www.madio.net/forum-redirect-goto-nextnewset-tid-47409.html 奇异值分解是线性代数中一种重要的矩阵分解&#xff0c;在信号处理、统计学等领域有重要应用。定义&#xff1a;设A为m*n阶矩阵&#xff0c;AHA的n个特征值的非负平方根叫作A的奇异值。记…

智课雅思词汇---十、pend是什么意思

智课雅思词汇---十、pend是什么意思 一、总结 一句话总结&#xff1a;【词根含义】&#xff1a;悬挂,垂;称量;支付 词根&#xff1a;-pend-, -pens- 【词根含义】&#xff1a;悬挂,垂;称量;支付 【词根来源】&#xff1a;来源于拉丁语动词pendeo, pendere, pependi, - (悬挂,下…

新技术“红”不过十年,半监督学习为什么是个例外?

作者 | 严林来源 | 授权转载自知乎&#xff08;ID:严林&#xff09;这一波深度学习的发展&#xff0c;以2006年Hinton发表Deep Belief Networks的论文为起点&#xff0c;到今年已经超过了10年。从过往学术界和产业界对新技术的追捧周期&#xff0c;超过10年的是极少数。从深度学…

常用Linux路由命令(route、ip、ifconfig等等)

第一组命令&#xff1a; ifconfig, ifup, ifdown 1) ifconfig 作用&#xff1a;手动启动、观察与修改网络接口的相关参数&#xff0c;包括IP地址以及MTU大小等。 例1.1&#xff1a;暂时修改IP地址 # ifconfig eth0 192.168.100.100 例1.2&#xff1a;修改IP地址、掩码和MTU # i…

洛谷P1074 靶形数独(跳舞链)

传送门 坑着&#xff0c;等联赛之后再填&#xff08;联赛挂了就不填了233&#xff09; 1 //minamoto2 #include<iostream>3 #include<cstdio>4 #include<cstring>5 using namespace std;6 #define getc() (p1p2&&(p2(p1buf)fread(buf,1,1<<21,…

直播写代码|英伟达工程师亲授如何加速YOLO目标检测

NVIDIA TensorRT是一种高性能深度学习推理优化器和运行时加速库&#xff0c;可以为深度学习推理应用程序提供低延时和高吞吐量。通过TensorRT&#xff0c;开发者可以优化神经网络模型&#xff0c;以高精度校对低精度&#xff0c;最后将模型部署到超大规模数据中心、嵌入式平台或…

OpenCV的cvLoadImage函数

转自&#xff1a;http://lijian2005lj.blog.163.com/blog/static/2569113720091111104856644/ 一直不太懂得cvLoadImage的第二个参数&#xff0c;今天知道&#xff0c;原来第二个参数是指定读入图像的颜色和深度。 指定的颜色可以将输入的图片转为3信道(CV_LOAD_IMAGE_COLOR)也…

DX11 preprocessor Dynamic shader linkage

&#xff08;参照例子DXSDK sample&#xff1a;DynamicShaderLinkage11&#xff09; 一、preprocessor 实现shader静态分支的经典方法&#xff0c;代码示例如下 shader中(如果显卡不支持DX11&#xff0c;则STATIC_PERMUTE为True)&#xff1a; #if !defined( STATIC_PERMUTE )iB…

OpenCV中与matlab中相对应的函数

1、matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR)&#xff1a;读出的图像信息保持了原有图像的信息(包括通道信息和位深信息)&#xff1b; rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE)&…

AI假新闻满天飞,打假神器GROVER帮你看清一切

最近AI换脸术与AI假新闻叠加在一起&#xff0c;造成了不少乌龙事件&#xff0c;比如最近美国的议长南希佩洛西就的一段醉酒视频就在Facebook上流传甚广&#xff0c;视频中的议长明显是状态晕沉&#xff0c;醉意十足&#xff0c;不过这后来被证明是一段是由deepfake生成的假视频…

NYOJ 93

汉诺塔&#xff08;三&#xff09; 时间限制&#xff1a;3000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述在印度&#xff0c;有这么一个古老的传说&#xff1a;在世界中心贝拿勒斯&#xff08;在印度北部&#xff09;的圣庙里&#xff0c;一块黄铜板上插着三根宝…