大疆、港科大联手!双目3D目标检测实验效果大放送 | CVPR 2019
作者 | heryms
责编 | Jane
CVPR 2019的文章出来了,今天聊聊双目的 3D object detection。这是一篇来自 DJI (大疆)与港科大合作的文章《Stereo R-CNN based 3D Object Detection for Autonomous Driving》,作者分别是 Peiliang Li,陈晓智(DJI,MV3D的作者)和港科大的 Shaojie Shen 老师。
论文链接,文中称代码将开源
https://arxiv.org/abs/1902.09738
1. Introduction
2018 年在 3D 检测方面的文章层出不穷,也是各个公司无人驾驶或者机器人学部门关注的重点,包含了点云,点云图像融合,以及单目 3D 检测,但是在双目视觉方面的贡献还是比较少,自从 3DOP 之后。
总体来说,图像的检测距离、图像的 density 以及 context 信息,在 3D检测中是不可或缺的一部分,因此作者在这篇文章中挖掘了双目视觉做 3D检测的的潜力。
2.Network Structure
整个网络结构分为以下的几个部分。
1). RPN部分,作者将左右目的图像通过stereoRPN产生相应的proposal。具体来说stereo RPN是在FPN的基础上,将每个FPN的scale上的feature map的进行concat的结构。
2). Stereo Regression,在RPN之后,通过RoiAlign的操作,得到each FPN scale下的left and right Roi features,然后concat相应的特征,经过fc层得到object class, stereo bounding boxes dimension还有viewpoint angle(下图所示) 的值。这里解释一下viewpoint,根据Figure3.,假定物
3). keypoint的检测。这里采用的是类似于mask rcnn的结构进行关键点的预测。文章定义了4个3D semantic keypoint,即车辆底部的3D corner point,同时将这4个点投影到图像,得到4个perspective keypoint,这4个点在3D bbox regression起到一定的作用,我们在下一部分再介绍。
在keypoint检测任务中,作者利用RoiAlign得到的14*14feature map,经过conv,deconv最后得到6 * 28 * 28的feature map,注意到只有keypoint的u坐标会提供2D Box以外的信息,因此,处于减少计算量的目的,作者aggregate每一列的feature,得到6 * 28的output,其中,前4个channel代表4个keypoint被投影到相应的u坐标的概率,后面两个channel代表是left or right boundary上的keypoint的概率。
3. 3D Box Estimation
通过网络回归得到的 2D box 的 dimension,viewpoint,还有 keypoint,我们可以通过一定的方式得到3D box的位置。定义 3D box 的状态x = [x, y, z, θ]。
Figure 5,给出了一些稀疏的约束。包含了特征点的映射过程。这里也体现了keypoint的用处。
上述公式即为约束方程,因此可以通过高斯牛顿的方法直接求解。具体可以参考论文的引文17。这里我们简单证明一下第一个公式。注意,这里的假设都是u,v坐标都已经经过相机内参的归一化了。
4. Dense 3D Box Alignment
这里就回到shenshaojie老师比较熟悉的BA的过程了,由于part 3仅仅只是一个object level的深度,这里文章利用最小化左右视图的RGB的值,得到一个更加refine的过程。定义如下的误差函数
求解可以利用G20或者ceres也可以完成。整个alignment过程其实相对于深度的直接预测是更加robust的,因为这种预测方法,避免了全局的depth estimation中的一些invalid的pixel引起的ill problem的问题。
5. experiment
作者在实验这块达到了双目视觉的state-of-the-art,同时对于各个module也做了很充足的实验(这块请查看原论文)。
下面是图a、b、c为处理结果示例,每幅图像内部上中下三部分,分别为左眼图像检测结果、右眼图像检测结果、鸟瞰视图检测结果。
图a
图b
图c
6. Insight
最后谈谈文章给我的一些 insights,首先,整个文章将传统的 detection 的任务,结合了 geometry constraint 优化的方式,做到了3D位置的估计,想法其实在不少文章sfm-learner之类的文章已经有体现过了,不过用在3Ddetection上面还是比较新颖,避免了做双目匹配估计深度的过程。也属于slam跟深度学习结合的一篇文章,感兴趣的朋友可以继续看看(下面链接)相关文章
arxiv.org/abs/1802.0552
谈几点我个人意义上的不足吧,首先耗时过程 0.28s 的 inference time,不过可能作者的重点也不在这个方面,特征的利用上可以更加有效率,在实现上。其次,能不能采用deep3dbox的方式预测dimension,然后添加入优化项呢...总体来说,是一篇不错的值得一读的文章!
原文地址:
https://zhuanlan.zhihu.com/p/58077936
(本文为AI科技大本营转载文章,转载请微信作者)
近期 CVPR 2019 论文解读推荐:
首发 | 旷视14篇CVPR 2019论文,都有哪些亮点?
CVPR 2019审稿满分论文:中国博士提出融合CV与NLP的视觉语言导航新方法
CVPR 2019 | 惊艳的SiamMask:开源快速同时进行目标跟踪与分割算法
CVPR2019 | 微软、中科大开源基于深度高分辨表示学习的姿态估计算法
如果你也想分享自己的论文,欢迎投稿,可扫描下方二维码与营长联系:
推荐阅读:
人生苦短,Python之父要解开这个困惑
00后的算法学习之路:拿下斯坦福和剑桥双offer
这份“插件英雄榜Top20”才是Chrome的正确打开方式!
75道常见AI面试题,看看你的知识盲点在哪?(附解析)
云漫圈 | 如何给女朋友解释什么是HTTP
这份“插件英雄榜Top20”才是Chrome的正确打开方式!
剧情反转! 创始人去世事件再爆新料, 1.8亿美元难道去了天堂?
学 Python 没找对路到底有多惨?| 码书
互联网没有春天
没有一个人,能躲过程序员的诱惑!
❤点击“阅读原文”,查看历史精彩文章。
相关文章:
【C++】Google C++编码规范(三):智能指针
【C】Google C编码规范(一):作用域 【C】Google C编码规范(二):类 std::unique_ptr std::unique_ptr是C11标准里新推出的智能指针,用来表示动态分配出的对象的「独一无二」所有权;…
Django restful-framework初步学习
urls.py from django.conf.urls import include, url from django.contrib import admin from rest_framework import routers # 导入api路由 from app01 import apirouter routers.DefaultRouter() # 获取api路由对象 router.register(rusers, api.UserViewSet) # 注册路由到…
植树节,程序员要爬哪些“树”?
作者 | 程序猿小吴、进击的Hello_World转载自五分钟学算法(ID: CXYxiaowu)公历 3 月 12 日是一年一度的植树节。旨在宣传保护森林,并动员群众参加植树造林活动。说到树,程序猿们肯定不陌生,趁着这个植树节,…
把JS 脚本嵌入CS运行
下面这段视频,是让您知道怎样把播放器的javascript放入C#类别中。在调用这个类别时,只传入相关的参数,即可运行。一时类别封装了,在前台xxx.aspx或xxx.aspx.cs看不到播放器的代码。 另一个就是在CS内怎样运行Javascript脚本。此工…
【C++】Google C++编码规范(四):其他C++
引用参数 所有按引用传递的参数必须加上const; 这在Google Code上是一个硬性约定:输入参数是值参或const的引用参数,输出参数为指针,输入参数可以是const指针,但决不能是非const的引用参数,除非用于交换,比…
使用Ceph集群作为Kubernetes的动态分配持久化存储
2019独角兽企业重金招聘Python工程师标准>>> 使用Docker快速部署Ceph集群 , 然后使用这个Ceph集群作为Kubernetes的动态分配持久化存储。 Kubernetes集群要使用Ceph集群需要在每个Kubernetes节点上安装ceph-common 1. 为kubernetes创建一个存储池 1 2 #…
Cosmos的基石:IL2CPU编译器--.net/C#开源操作系统学习系列三
本文的代码包以cosmos-12304.zip为例(从这个包开始,COSMOS的内核算是有了个基本的雏形,就像是一颗大树在出芽前会先长出庞大的根系,现在就要破土长出第一颗芽了) IL2CPU之于COSMOS就相当与GCC之于LINUX,查看…
【面试 多线程】【第九篇】多线程的问题
1.多线程有什么用 发挥多核CPU优势,防止阻塞,更快的处理数据 2.多线程的实现方式有哪几种,分别的特点优势是什么样的 1》继承Thread类,重写run方法,start启动多线程 2》实现Runnable接口,重写run方法&…
那个大战AlphaGo的柯洁,将免试入读清华大学工商管理专业
日前,柯洁将免试入读清华大学的消息经媒体曝光了出来。《2019 年优秀运动员免试入学推荐名单》3 月 10 日开始公示,围棋世界冠军柯洁的名字出现在名单上,其中表明他将就读清华大学工商管理类专业。据了解,柯洁预计今年下半年入学清…
【Qt】设置背景
1、使用样式表qss设置背景 QDialog 设置背景图片: dlg->setStyleSheet("QDialog{border-image: url(://test.png);}"); 设置背景颜色: dlg->setStyleSheet("QDialog{background-color: red;}"); QWidget 设置背景图片: wgt->setStyleSheet…
基于Hadoop的MapReduce框架研究报告
http://www.doc88.com/p-19830708273.html
【Qt】设置窗口透明度
1、使用setWindowOpacity设置透明度 setWindowOpacity(0.5); 设置完成会使窗体、标题栏、子控件都透明 2、使用样式表qss设置窗体透明 dlg->setStyleSheet("QDialog{background-color: rgba(255, 0, 0, 0.5);}");wgt->setStyleSheet("QWidget{backgrou…
7行Python代码,搭建可以识花的机器学习App|视频教程
你想学Python,却不知如何着手,那你需要一种更加有趣的学习方式。Siraj Raval是一位人工智能领域的编程高手,毕业于哥伦比亚大学,曾任职于 Twilio 和 Meetup,他通过制作教程类短视频的方式在Youtube上积累了大量的粉丝&…
java中缀表达式转后缀表达式(逆波兰算法)
四则运算是栈的重要应用之一 中缀表达式转后缀表达式(逆波兰算法)过程 从左到右遍历中缀表达式数字直接输出为后缀表达式一部分如果是符号,则判断与栈顶元素的优先级高于栈顶元素优先级直接入栈低于或等于栈顶优先级栈顶元素出栈并输出为后缀…
Wpf消息循环之消息传递
几天遇见一个问题需要检查某个wpf程序是否已经运行,如果没有运行则启动传递参数,如果已运行则需要直接传递消息。在没有运行 情况下传递参数很简单,我们只需要Process cmd窗口启动并传递参数,在程序中处理。但是如果程序已经启动有…
【Qt】使用sqlite3数据库时,主键自增和获取自增后的主键的
创建数据表格,设置主键自增 创建数据库时,启用主键自增加特性 Create table testTable (id INTEGER PRIMARY KEY AUTOINCREMENT,。。。。 注意事项:设置主键自增时(AUTOINCREMENT),主键类型必须是INTEGER&…
拿下斯坦福和剑桥双offer,00后的算法学习之路
董文馨,00后,精通英语,西班牙语。斯坦福大学计算机系和剑桥大学双Offer,秋季将进入斯坦福大学学习。10岁开始在国外上学;12岁学Scratch;13岁学HTML & CSS;14岁开始学Python & Java&…
Mybatis【配置文件】就是这么简单
配置文件和映射文件还有挺多的属性我还没有讲的,现在就把它们一一补全 映射文件 在mapper.xml文件中配置很多的sql语句,执行每个sql语句时,封装为MappedStatement对象,mapper.xml以statement为单位管理sql语句 Statement的实际位置…
cto denalil
Denali使用准虚拟化技术来提高x86电脑上虚拟机的性能。Denali的虚拟机为因特网服务专门支持了最小化的操作系统。 系统可以运行上千虚拟机。Xen与Denali不同,因为它试图运行适当数量的完整操作系统,而非大量轻量级操作系统。转载于:https://blog.51cto.c…
Redis学习笔记 - 数据类型与API(1)Key
Redis学习笔记 - 数据类型与API(1)Key Key相关命令 1. 常用命令 命令含义时间复杂度keys查找所有符合给定模式 pattern 的 keyO(N), N 为数据库中 key 的数量dbsize计算key的总数O(1)exists检查key是否存在O(1)del删除指定的key-valueO(1)exp…
【Qt】enum和QString的相互
使用Q_ENUM注册enum Q_ENUM使用元对象系统meta-object来注册,因此在enum所在的类中必须包含宏Q_OBJECT或者Q_GADGET。 例子如下 class MyClass : public QObject{Q_OBJECTpublic:MyClass(QObject *parent = 0);~MyClass();enum Priority { High, Low, VeryHigh, VeryLow };Q_…
Gmail全球大规模宕机
整理 | 非主流出品 | AI科技大本营(ID: rgznai100)今天(3 月 13 日),Google 的多项服务在全球范围内出现了不同程度的宕机,包括 Gmail、Google Drive、 Hangouts、谷歌地图等。受影响最大的是拥有超 10 亿用…
搭建域控服务器
作业环境 服务器端(VirtualBox VM) 操作系统:Windows Server 2003 Enterprise Edition SP2 IPAddress:192.168.1.1/255.255.255.0 Gateway:null 客户端(VirtualBox VM) 操作系统:Windows XP SP3 IPAddress:192.168.1.2…
【Git】ubuntu安装git
sudo apt-get install git 图形界面的:sudo apt-get install git-gui 查看ssh服务是否启动 sudo ps -e | grep ssh 如果没有启动执行如下命令; sudo service ssh start 如果没有ssh,使用如下命令安装 sudo apt-get install ssh
Composer 篇
学习网站Composer 中文网 资源包 Packagist Packagist / Composer 中国全量镜像如何安装 Composer下载 Composer安装前请务必确保已经正确安装了PHP。打开命令行窗口并执行php -v查看是否正确输出版本号。打开命令行并依次执行下列命令安装最新版本的 Composer:php …
西工大开源拥挤人群数据集生成工具,大幅提升算法精度 | CVPR 2019
作者 | 周强(CV君)转载自 我爱计算机视觉(公众号id:aicvml)近年来,因为拥挤人群计数在视频监控、公共安全方面的应用广泛,引起了不少学者的关注。简单说来这个任务就是给定图像,返回…
getElementById 不能取得visible=false 的控件解决方法
想要绑定textbox的回车事件到一个按钮上,但不想显示这个按钮,如果你把这个button的visible设置为false,那么你使用 getElementById是获取不到的,或者说取到的为空。这是因为Visiblefalse,在编译后,该控件在页面上不显示…
【Git】在本地创建git库管理自己的代码
1、创建本地库 git init . 新建库 git config --global user.email “hello163.com” git config --global user.name “laoer” git config --global core.editor vim //将默认编辑器由nano更改为vim 2、提交 2.1 git add . 将当前目录下所有文件添加到提交缓冲区 2.2 git …
“智慧血联网平台”亮相军民融合技术装备博览会
该平台可实现血液全程跟踪溯源,为大众提供安全、透明、便捷的用血服务。 一个打造智慧化血液管理新模式的血联网平台最近亮相第三届中国军民融合技术装备博览会。该平台可实现血液全程跟踪溯源,为大众提供安全、透明、便捷的用血服务。 此次博览会以“聚…
AI专利之争:小米超华为,国家电网才是大Boss?
作者 | 一一编辑 | 琥珀出品 | AI科技大本营(ID:rgznai100)以往相关机构发布 AI 专利数量排行榜时,如果表明“中国在 AI 专利申请数量上已经超过美国,中国在 AI 技术实力上已在国际上遥遥领先”,这类榜单会招致对中国科…