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

Google又放大招:高效实时实现视频目标检测 | 技术头条

640?wx_fmt=gif点击上方↑↑↑蓝字关注我们~

640?wx_fmt=png

2019 Python开发者日」,购票请扫码咨询 ↑↑↑


作者 | 陈泰红,算法工程师,研究方向为机器学习、图像处理

来源 | 极市平台(ID:extrememart)


图像目标检测是图像处理领域的基础。自从2012年CNN的崛起,深度学习在Detection的持续发力,为这个领域带来了变革式的发展:一个是基于RPN的two-stage,RCNN/Fast RCNN/Faster RCNN、RetinaNet、Mask RCNN等,致力于检测精度的提高。一类是基于SSD和YOLOv1/v2/3的one-stage,致力于提高检测速度。


视频目标检测要解决的问题是对于视频中每一帧目标的正确识别和定位。相对于图像目标检测,视频是高度冗余的,包含了大量时间局部性(temporal locality,即在不同的时间是相似的)和空间局部性(spatial locality,即在不同场景中看起来是相似的),既Temporal Context(时间上下文)的信息。充分利用好时序上下文关系,可以解决视频中连续帧之间的大量冗余的情况,提高检测速度;还可以提高检测质量,解决视频相对于图像存在的运动模糊、视频失焦、部分遮挡以及形变等问题。


视频目标检测和视频跟踪不同。两个领域解决相同点在于都需要对每帧图像中的目标精准定位,不同点在于视频目标检测不考虑目标的识别问题,而跟踪需要对初始帧的目标精确定位和识别。


640?wx_fmt=jpeg

图1 高德地图车载AR导航可识别前方车辆并提醒


视频目标检测应用广泛,如自动驾驶,无人值守监控,安防等领域。如图1所示,高德地图车载AR导航利用视频目标检测,能够对过往车辆、行人、车道线、红绿灯位置以及颜色、限速牌等周边环境,进行智能的图像识别,从而为驾驶员提供跟车距离预警、压线预警、红绿灯监测与提醒、前车启动提醒、提前变道提醒等一系列驾驶安全辅助。


视频目标检测算法一般包括单帧目标检测、多帧图像处理、光流算法、自适应关键帧选择。Google提出基于Slownetwork 和Fast network分别提取不同特征,基于ConvLSTM特征融合后生成检测框,实现实时性的state-of-art。

 

640?wx_fmt=png

  • 论文地址:https://arxiv.org/abs/1903.10172


1  Motivation


物体在快速运动时,当人眼所看到的影像消失后,人眼仍能继续保留其影像,约0.1-0.4秒左右的图像,这种现象被称为视觉暂留现象。人类在观看视频时,利用视觉暂留机制和记忆能力,可以快速处理视频流。借助于存储功能,CNN同样可以实现减少视频目标检测的计算量。


视频帧具有较高的时序冗余。如图2所示,模型[1]提出使用两个特征提取子网络:Slow network 和Fast network。Slow network负责提取视频帧的精确特征,速度较慢,Fast network负责快速提取视频帧的特征提取,准确率较差,两者交替处理视频帧图像。Fast network和Slow network特征经过ConvLSTM层融合并保存特征。检测器在当前帧特征和上下文特征融合基础上生成检测框。论文提取基于强化学习策略的特征提取调度机制和需要保存特征的更新机制。


论文提出的算法模型在Pixel 3达到72.3 FPS,在VID 2015数据集state-of-art性能。


论文创新点:


1、提出基于存储引导的交替模型框架,使用两个特征提取网络分别提取不同帧特征,减少计算冗余。


2、提出基于Q-learning学习自适应交替策略,取得速度和准确率的平衡。


3、在手机设备实现迄今为止已知视频目标检测的最高速度。


640?wx_fmt=jpeg

图2 存储引导的交错模型

 

2 网络架构


2.1交错模型


640?wx_fmt=jpeg

图3 交错模型


如图3所示论文提出的交错模型(τ = 2),Slow network(Large featureextractor)和Fastnetwork(Small feature extractor)均由MobileNetV2构成(两个模型的depth multiplier不同,前者为1.4,后者为0.35),anchors比率限制为{1.0,0.5,2.0}。


2.2存储模型


LSTM可以高效处理时序信息,但是卷积运算量较大,并且需要处理所有视频帧特征。论文提出改进的ConvLSTM模型加速视频帧序列的特征处理。


ConvLSTM是一种将CNN与LSTM在模型底层结合,专门为时空序列设计的深度学习模块。ConvLSTM核心本质还是和LSTM一样,将上一层的输出作下一层的输入。不同的地方在于加上卷积操作之后,为不仅能够得到时序关系,还能够像卷积层一样提取特征,提取空间特征。这样就能够得到时空特征。并且将状态与状态之间的切换也换成了卷积计算。


640?wx_fmt=jpeg

图4 存储模型LSTM单元


如所示,论文的ConvLSTM有一下改进:


1、增加Bottleneck Gate和output跳跃连接。


2、LSTM单元分组卷积。特征图HxWxN分为G组,每个LSTM仅处理HxWxN/G的特征,加速ConvLSTM计算。论文中G = 4。


3、LSTM有一固有弱点,sigmoid激活输入和忘记门很少完全饱和,导致缓慢的状态衰减,长期依赖逐渐丧失,更新中无法保留完整的前期状态。导致Fast network运行中,Slownetwork特征缓慢消失。论文使用简单的跳跃连接,既第一个Fast network输出特征重复使用。

 

2.3推断优化


论文提出基于异步模式和量化模型,提高系统的计算效率。


1、异步模式。交错模型的短板来自于Slow network。论文采用Fastnetwork提取每帧图像特征,τ = 2帧采用Slow network计算特征和更新存储特征。Slownetwork和Fast network异步进行,提高计算效率。


2、在有限资源的硬件设备上布置性能良好的网络,就需要对网络模型进行压缩和加速,其中量化模型是一种高效手段。基于[2]算法,论文的ConvLSTM单元在数学运算(addition,multiplication, sigmoid and ReLU6)后插入量化计算,确保拼接操作的输入范围相同,消除重新缩放的需求。


3 实验


模型在Imagenet DET 和COCO训练,在Imagenet VID 2015测试结果如图5所示。


从测试结果看,系统只有Slow network模块时准确率最高, 只有Fast network模块时准确率最低,但是速度没有交错模型快,比较诧异。另外基于强化学习的adaptive对精度和速度几乎没有影响,而异步模式和模型量化提高系统的实时性。

 

640?wx_fmt=jpeg

图5 Imagenet VID 2015测试结果

 

4 优缺点分析

 

  • 视频处理策略


1、基于强化学习的交错模型调度是伪命题。论文的Slow network提取强特征,Fastnetwork提取弱特征,交错模型的τ越大,模型性能越差。理论上τ=2时模型的准确率越高。综合考虑准确率和实时性,论文中τ=9。


2、视频具有很强的上下文相关性。视频理解领域的目标检测、分割、识别,跟踪,等领域,都需要提取前后帧的运动信息,而传统采用光流方式,无法保证实时性。本文提出的分组ConvLSTM,可加速计算,量化模型保持准确率,具有借鉴意义。

 

以上仅为个人阅读论文后的理解、总结和思考。观点难免偏差,望读者以怀疑批判态度阅读,欢迎交流指正。


5 参考文献


[1] MasonLiu, Menglong Zhu, Marie White, Yinxiao Li, Dmitry Kalenichenko.Looking Fastand Slow: Memory-Guided Mobile Video Object Detection.arXivpreprint arXiv:1903.10172,2019.


[2] B.Jacob, S. Kligys, B. Chen, M. Zhu, M. Tang, A. Howard,H. Adam, and D.Kalenichenko. Quantization and training of neural networks for efficientinteger-arithmetic-only inference. In CVPR, 2018.


(本文为 AI大本营转载文章,转载请联系原作者


精彩推荐

「2019 Python开发者日」演讲议题全揭晓!这一次我们依然“只讲技术,拒绝空谈”10余位一线Python技术专家共同打造一场硬核技术大会。更有深度培训实操环节,为开发者们带来更多深度实战机会。更多详细信息请咨询13581782348(微信同号)。


640?wx_fmt=jpeg

推荐阅读:


  • 00后的AI开发者进阶之道:从入门到鏖战MIT编程大赛 | 人物志

  • 技术头条

  • 救救中国996程序员!Python之父伸张正义,GitHub近23万Star

  • 李航《统计学习方法》最新资源:笔记、Python代码一应俱全!

  • 凉山火灾启示录:面对大火,AI 能做些什么?

  • EOS现状: 72%应用涉赌被列为高危, 说好的诗和远方, 你竟沦落成了这样?

  • 吃了公司零食被指“偷吃”,外包怎么了?

  • 分布式架构系列: 负载均衡技术详解 | 技术头条

  • 靠找Bug赚了6,700,000元!他凭什么?


640?wx_fmt=png

点击“阅读原文”,查看历史精彩文章。


相关文章:

一个java删除文件夹的小方法

java删除文件夹都是从里向外删除,使用递归的方法。public class IO_FILEdemo09 {public static void main(String[] args) {// TODO Auto-generated method stub// 删除目录演示File dir new File("C:\\version1");DeleteAll(dir);}public static void D…

【C++】operator bool() 和 operator const bool() const

1、问题描述 在走读QtCreator源码时&#xff0c;看到如下运算符重载 源码在QtCreator-v4.9.2中 src\plugins\projectexplorer\projectexplorer.h class OpenProjectResult { public:OpenProjectResult(const QList<Project *> &projects, const QList<Project *…

tomcat高并发的配置

以下内容来源于互联网&#xff0c;具体出处不详 据说服务器运行TOMCATJDK环境能负载到动态1W的并发&#xff0c;贴上他的配置&#xff0c;以后有机会在测试&#xff01; java 环境配置&#xff1a; export JAVA_OPTS"-server -Xms8g -Xmx8g -Xss128k -XX:ParallelGCThread…

【AI】图示:精确度(查准率)Precision、召回率(查全率)Recall

对Precision、Recall的直译是“精确度”和“召回率”&#xff0c;第一次接触这两个词&#xff0c;很难从字面上知道它们的含义。而翻译成“查准率”和“查全率”就比较好理解&#xff0c;下面统一使用“查准率”和“查全率”。 1、真假正负例 真正例&#xff08;True Positive…

@程序员,如何“终身成长”与跨界?

文 / Ant说《终身成长》是一碗“鸡汤”并不为过&#xff0c;截止到我看过的前半部分&#xff0c;围绕在一个主题展开——人的潜力是不可知的。换句话说&#xff0c;任何人都有可能成为自己想成为的人。书中列举了大量明星企业与管理者的真实案例&#xff0c;也引用了许多对比实…

TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗

tcp可以通过滑动窗口和拥塞算法实现流量控制&#xff0c;限制上行和下行的流量&#xff0c;但是却不能抵御ddos攻击。 限流只是限制访问流量的大小&#xff0c;是无法区分正常流量和异常攻击流量的。 限流可以控制本软件或者应用的流量大小&#xff0c;从而减少对部署在相同物理…

WPF及Silverlight中将DataGrid数据导出

这段源码是我在项目中实际应用的源码&#xff0c;没有经过删减及处理。 如果你认为有用可以摘去作为自己的导出类中的一个小工具使用。 ///<summary>///数据源导出辅助类 ///</summary>///<remarks>///Author: sucsy ///Create date: 2011-…

首发 | 驭势科技推出“东风网络”:如何找到速度-精度的最优解?| 技术头条...

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 驭势科技给定目标硬件&#xff0c;如何确定最优的速度-精度折衷边界&#xff1f;换言之&#xff1a;给定推断延时的限制&#xff0c;模型能达到的最高精度是多少&#xff1f…

【AI】caffe使用步骤(一):将标注数据生成lmdb或leveldb

1、简述 caffe使用工具 convert_imageset 将标注数据转换成lmdb或leveldb格式&#xff0c;convert_imageset 使用方法可以参考脚本examples/imagenet/create_imagenet.sh。 convert_imageset 在./build/tools/中。 2、convert_imageset命令行参数 ./build/tools/convert_ima…

日本的GMO增加了比特币现金,和另外3种用于贷款项目的加密货币

2019独角兽企业重金招聘Python工程师标准>>> 日本的加密货币交易所 GMO正在不断地向其贷款项目中增加更多的货币&#xff0c;这使得它的客户可以将加密货币借给公司。最初&#xff0c;该项目是为BTC启动的&#xff0c;但现在GMO已经走得更远&#xff0c;并添加了比特…

功能演示:戴尔PowerConnect 8024交换机VLAN的创建与删除

戴尔PowerConnect 8024是一款带24个10 Gb以太网10GBASE-T端口的高密度10 Gb以太网交换机&#xff0c;专为具有高吞吐量和高可用性需求的数据中心、聚合和统一结构部署而设计。 这些高密度10 Gb交换机可用于汇聚型以太网环境&#xff0c;支持密集型虚拟化、iSCSI存储和10 Gb流量…

【AI】caffe使用步骤(二):设计网络模型prototxt

【一】以 lenet_train_test.prototxt 为例 name: "LeNet" layer {name: "mnist"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {scale: 0.00390625}data_param {source: "examples/mnis…

南大和中大“合体”拯救手残党:基于GAN的PI-REC重构网络,“老婆”画作有救了 | 技术头条...

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑编译 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;对于喜欢画画的你来说&#xff0c;总是画得七零八落&#xff0c;不堪入目&#xff0c;但现在&#xff0c;有一…

区块链技术应用领域和优势

区块链的应用正成为很多人关注的领域 &#xff0c;有很多的新应用正在逐步的实施当中&#xff0c;各种的区块链应用也是让众人惊喜不断&#xff0c; 随着区块链技术的发展 &#xff0c;各行各业在应用中所获取的成效也是越来越大&#xff0c; 这大大激发了人们对于区块链技术的…

Kataspace:用HTML5和WebGL创建基于浏览器的虚拟世界

源自斯坦福的创业公司Katalabs发布了一个用于创建基于浏览器的虚拟世界的开源框架。名叫KataSpace的软件&#xff0c;利用了新兴的HTML5技术&#xff0c;以及WebGL和WebSockets&#xff0c;允许用户无需安装任何插件&#xff0c;直接在浏览器的3D环境中展开互动。Katalabs已经推…

十问陆奇:努力、能力和机遇,谁能帮你跑赢未来?

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 陆奇转载自36氪陆奇说&#xff1a;在创业者从0到1的过程中&#xff0c;我们看到的主要挑战有以下几个方面&#xff1a;对需求的理解和判断不够&#xff0c;与目标用户/客户的…

【AI】caffe使用步骤(三):编写求解文件solver.prototxt

【一】参考博客 caffe solver 配置详解&#xff1a;http://www.mamicode.com/info-detail-2620709.html Caffe学习系列(7)&#xff1a;solver及其配置&#xff1a;https://www.cnblogs.com/denny402/p/5074049.html 【二】solver求解文件详解 1、solver求解文件例子如下 ne…

MySQL 8.0 Invisible Indexes 和 RDS 5.6 Invisible Indexes介绍

mysql 在8.0的时候支持了不可见索引,称为隐式索引 索引默认是可以的&#xff0c;控制索引的可见性可以使用Invisible,visible关键字作为create table&#xff0c;create index,alter table 来进行定义。RDS 5.6 Invisible Indexes 也是最近刚刚上线的功能。新购买实例目前已经支…

大有可为的“正则表达式”(二)

5.3. 基本和扩展正则表达式Unix支持两种的正则表达式的版本&#xff1a;&#xff08;1&#xff09;现代版本&#xff1a;扩展正则表达式&#xff08;extended regular expression&#xff0c;ERE&#xff09;&#xff0c;属于IEEE1003.2标准&#xff0c;拥有比BRE更多的功能。…

【AI】caffe使用步骤(四):训练和预测

一、训练 1、直接训练 ./build/tools/caffe train --solverexamples/mnist/lenet_solver.prototxt ./build/tools/caffe train --solverexamples/mnist/lenet_solver.prototxt -gpu all //使用全部的gpu来训练2、采用微调funing-tuning训练法 ./build/tools/caffe train --s…

Github免费中文书《Go入门指南》,带你从零学Go | 极客头条

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 无闻整理 | Jane出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导语】Go&#xff08;也称 Golang&#xff09;是 Google 开发的一种静态强类型、编…

sql语句中having的作用是?

HAVING对由sum或其它集合函数运算结果的输出进行限制。比如&#xff0c;我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息&#xff0c;这时我们就需要使用HAVING从句。语法格式为&#xff1a; SELECT "column_name1", SUM("column…

微软重新释出MS10-015 解决蓝屏问题

微软于周二&#xff08;3/2&#xff09;重新释出MS10-015修补程序。由于先前使用者安装该程序时&#xff0c;若电脑中含有Alureon rootkit就会出现更新错误&#xff0c;因而微软也提醒使用者先行杀毒&#xff0c;并避免安装后可能造成的蓝屏画面。 MS10-015是微软在今年2月用来…

share_ptr_c++11

C智能指针 shared_ptr shared_ptr 是一个标准的共享所有权的智能指针, 允许多个指针指向同一个对象. 定义在 memory 文件中(非memory.h), 命名空间为 std. std::shared_ptr<int> sp1 std::make_shared<int>(10);std::shared_ptr<std::string> sp2 std::…

【Python】ubuntu14安装pycaffe环境:python2.7及依赖库

1、问题描述 ubuntu14自带的python2.7版本是python2.7.5&#xff0c;安装pycaffe环境时&#xff0c;出现错误&#xff0c;提示版本低。在bing上搜索源码安装python2.7.16的步骤&#xff0c;后续使用时&#xff0c;又报错&#xff0c;缺少SLL模块&#xff1a; Cant connect to…

周志华、张潼亲自辅导AI课程,DeeCamp 2019正式启动

4 月 8 日&#xff0c;创新工场对外宣布 DeeCamp 2019 人工智能训练营正式启动。 据介绍&#xff0c;DeeCamp 2019 将于 7 月 15 日至 8 月 23 日在北京、上海、南京、广州四地同时举办。今年招生规模也将扩大&#xff0c;计划招收 600 名大学生&#xff0c;进行为期 5 周的理…

No.2 条件

2019独角兽企业重金招聘Python工程师标准>>> clojure中不仅有if 还有when 还有什么when-do when-first when-let 一堆 首先介绍if (defn if? [x](if (pos? x)x(- x))) 这事一个取绝对值的方法,方法名改了下,pos? 是判断是否为正数 参数只能为数字 能看明白吧…

如何用Python和BERT做中文文本二元分类?| 程序员硬核评测

点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓&#xff0c;请扫码咨询 ↑↑↑作者 | 王树义来源 | 王树芝兰&#xff08;ID:nkwangshuyi&#xff09;兴奋去年&#xff0c; Google 的 BERT 模型一发布出来&#xff0c;我就很兴奋。因为我当时正在用 fast.ai 的…

【C++】Google Protocol Buffer(protobuf)详解(二)

代码走读&#xff1a;caffe中protobuf的详细使用过程 【一】proto文件&#xff0c;以caffe.proto中BlobShape为例 syntax "proto2"; //指明protobuf版本&#xff0c;默认是v2&#xff0c;其它版本&#xff1a;"proto3"package caffe; // 最终生成c代码…

Linux使用

软件操作 软件包管理 yum安装 yum install ...卸载 yum remove ...搜索 yum serach ...清理缓存 yum clean packages列出已安装 yum list软件包信息 yum info ...硬件资源信息 内存free -m 硬盘df -h 负载&#xff08;w或top&#xff09;w 12:53:49 up 2:33, 3 users, load ave…