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

达摩院实现自动驾驶核心技术突破,达摩院首次实现3D物体检测精度与速度的兼得

阿里巴巴达摩院在自动驾驶3D物体检测领域取得了新突破!达摩院近期一篇论文入选计算机视觉顶会CVPR 2020,该论文提出了一个通用、高性能的自动驾驶检测器,首次实现3D物体检测精度与速度的兼得,有效提升自动驾驶系统安全性能。目前,该检测器在自动驾驶领域权威数据集KITTI BEV排行榜上排名第一。

3D目标检测需输出物体类别及在三维空间中的长宽高、旋转角等信息

和普通2D图像识别应用不同,自动驾驶系统对精度和速度的要求更高,检测器不仅需要快速识别周围环境的物体,还要对物体在三维空间中的位置做精准定位。然而,目前主流的单阶段检测器和两阶段检测器均无法平衡检测精度和速度,这极大地限制了自动驾驶安全性能。

此次,达摩院在论文中提出了全新的思路,即将两阶段检测器中对特征进行细粒度刻画的方法集成到单阶段检测器。具体来说,达摩院在训练中利用一个辅助网络将单阶段检测器中的体素特征转化为点级特征,并施加一定的监督信号,同时在模型推理过程中辅助网络无需参与计算,因此,在保障速度的同时又提高了检测精度。

KITTI BEV排行榜,达摩院位居第一

研究结果显示,在自动驾驶领域权威数据集KITTI BEV排行榜上,该检测器排名第一,精度远超其他的单阶段检测器,同时检测速度达到25FPS ,是目前3D排名第一方案的两倍多。

该论文作者均来自阿里巴巴达摩院,第一作者为达摩院研究实习生Chenhang He,其他作者分别分别为达摩院高级研究员、IEEE Fellow华先胜,达摩院高级研究员、香港理工大学电子计算学系讲座教授、IEEE Fellow张磊,达摩院资深算法专家黄建强及达摩院研究实习生Hui Zeng。

以下是Chenhang He对该论文做出的解读:

1.背景

目标检测是计算机视觉领域的传统任务,与图像识别不同,目标检测不仅需要识别出图像上存在的物体,给出对应的类别,还需要将该物体通过Bounding box进行定位。根据目标检测需要输出结果的不同,一般将使用RGB图像进行目标检测,输出物体类别和在图像上2D bounding box的方式称为2D目标检测。而将使用RGB图像、RGB-D深度图像和激光点云,输出物体类别及在三维空间中的长宽高、旋转角等信息的检测称为3D目标检测。

从点云数据进行3D目标检测是自动驾驶(AV)系统中的的关键组件。与仅从图像平面估计2D边界框的普通2D目标检测不同,AV需要从现实世界估计更具信息量的3D边界框,以完成诸如路径规划和避免碰撞之类的高级任务。这激发了最近出现的3D目标检测方法,该方法应用卷积神经网络(CNN)处理来自高端LiDAR传感器的点云数据。

目前基于点云的3D物体检测主要有两种架构: 
1)单阶段检测器 (single-stage): 将点云编码成体素特征 (voxel feature), 并用3D CNN直接预测物体框, 速度快但是由于点云在CNN中被解构, 对物体的结构感知能力差, 所以精度略低。

2)两阶段检测器 (two-stage): 首先用PointNet提取点级特征, 并利用候选区域池化点云 (Pooling from point cloud) 以获得精细特征. 通常能达到很高的精度但速度很慢。

2.方法

目前业界主要以单阶段检测器为主,这样能保证检测器能高效地在实时系统上进行。 我们提出的方案将两阶段检测器中对特征进行细粒度刻画的思想移植到单阶段检测中,通过在训练中利用一个辅助网络将单阶段检测器中的体素特征转化为点级特征,并施加一定的监督信号,从而使得卷积特征也具有结构感知能力,进而提高检测精度。而在做模型推断时,辅助网络并不参与计算(detached),进而保证了单阶段检测器的检测效率。另外我们提出一个工程上的改进,Part-sensitive Warping (PSWarp), 用于处理单阶段检测器中存在的 “框-置信度-不匹配” 问题。

主体网络

用于部署的检测器, 即推断网络, 由一个骨干网络和检测头组成。骨干网络用3D的稀疏网络实现,用于提取含有高语义的体素特征。检测头将体素特征压缩成鸟瞰图表示,并在上面运行2D全卷积网络来预测3D物体框。

辅助网络

在训练阶段,我们提出一个辅助网络来抽取骨干网络中间层的卷积特征,并将这些特征转化成点级特征(point-wise feature)。在实现上,我们将卷积特征中的非零信号映射到原始的点云空间中, 然后在每个点上进行插值,这样我们就能获取卷积特征的点级表示。 令为卷积特征在空间中的表示,为原始点云, 则卷积特征在原始点上的表示等于

辅助任务

我们提出两种基于点级特征的监督策略来帮助卷积特征获得很好的结构感知力, 一个前景分割任务, 一个中心点回归任务。

具体来说,相比于PointNet特征提取器(a), 卷积网络中的卷积操作和下采样会造成点云结构的破坏 (b)使得特征对物体的边界与内部结构不敏感。我们利用分割任务来保证部分卷积特征在下采样时不会被背景特征影响 (c),从而加强对边界的感知。我们利用中心点回归任务来加强卷积特征对物体内部结构的感知能力(d),使得在少量点的情况下也能合理的推断出物体的潜在大小,形状。我们使用focal loss 和smooth-l1 对分割任务与中心回归任务分辨进行优化。

3.工程上的改进

在单阶段检测中, feature map和anchor的对齐问题是普遍存在的问题, 这样会导致预测出来的边界框的定位质量与置信度不匹配,这会影响在后处理阶段(NMS)时, 高置信度但低定位质量的框被保留, 而定位质量高却置信度低的框被丢弃。在two-stage的目标检测算法中,RPN提取proposal,然后会在feature map上对应的的位置提取特征(roi-pooling或者roi-align),这个时候新的特征和对应的proposal是对齐的。我们提出了一个基于PSRoIAlign 的改进,Part-sensitive Warping (PSWarp), 用来对预测框进行重打分。

如上图, 我们首先修改最后的分类层以生成K个部分敏感的特征图,用{X_k:k = 1,2,...,K}表示,每个图都编码对象的特定部分的信息。例如,在K = 4的情况下,会生成 {左上,右上,左下,右下} 四个局部敏感的特征图。同时,我们将每个预测边界框划分为K个子窗口,然后选择每个子窗口的中心位置作为采样点。这样,我们可以生成K个采样网格{S^k:k = 1,2,...,K},每个采样网格都与该局部对应的特征图相关联。如图所示,我们利用采样器, 用生成的采样网格在对应的局部敏感特征图上进行采样,生成对齐好的特征图。最终能反映置信度的特征图则是K个对齐好特征图的平均。

4.效果

我们提出的方法(黑色) 在KITTI数据库上的PR Curve, 其中实线为两阶段方法, 虚线为单阶段方法。 可以看到我们作为单阶段方法能够达到两阶段方法才能达到的精度

在KITTI 鸟瞰(BEV) 和 3D 测试集的效果。优点是在保持精度的同时,不增加额外的计算量,能达到25FPS 的检测速度。

相关文章:

$httpprovider指令中拦截器interceptors的使用介绍

2019独角兽企业重金招聘Python工程师标准>>> $http服务允许我们使用http请求和后台做通信,但是在每一次放松请求之前我们都希望能够捕捉这个请求并且进行操作,比如之前富瑞中每一个请求中header要放入用户名和密码一样,富瑞的做法…

bzero, memset ,setmem 区别

bzero 原型&#xff1a;extern void bzero(void *s, int n);用法&#xff1a;#include <string.h> 功能&#xff1a;置字节字符串s的前n个字节为零。 说明&#xff1a;bzero无返回值。 举例&#xff1a; // bzero.c #include <sysl…

了解这4个重点,带你探索未来将如何设计智能系统和机器人!

作者 | Himanshu Ragtah 译者 | 天道酬勤 责编 | 徐威龙 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 到目前为止&#xff0c;为智能系统设计零件需要从头开始构建零件。从2D草图到可以根据给定的成本、材料和最大重量限制制造的可行且坚固的零件。这通常需要几天…

静态路由和默认路由的配置实例

RTA的配置&#xff1a;interface FastEthernet0/0ip address 1.1.1.2 255.255.255.252duplex autospeed auto!interface FastEthernet0/1no ip addressduplex autospeed autoshutdown!interface FastEthernet1/0ip address 10.10.10.1 255.255.255.0duplex autospeed auto!inte…

Centos运行级别和开机过程

一、Linux运行级别1&#xff09;0&#xff1a;关机2&#xff09;1&#xff1a;单用户3&#xff09;2&#xff1a;多用户状态没有网络服务4&#xff09;3&#xff1a;多用户状态有网络服务5&#xff09;4&#xff1a;系统未使用保留给用户6&#xff09;5&#xff1a;图形界面7&a…

PHP FPM设置

php-fpm启动 拷贝启用文件 # cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm 启动 # /etc/init.d/php-fpm 重启 # killall php-fpm # /etc/init.d/php-fpm ------------------------ 进程不够就会起新&#xff0c;新的不能超过pm.max_children&#xff1b; 但是新的也会变为…

MySQL的binarylog处理

繁忙中測試新到的服務器&#xff0c;調試優化app&#xff0c;再加上月底公司搬家&#xff0c;很多配置都要更改。早上不經意telnet改dns的時候發現MySQL日誌很大了。。。 奇怪&#xff0c;我設置過的都改過了。。後來發現這台是子公司帶過來的機器。。。。以前那幾台都沒寫過配…

IJCAI 2020灭霸式拒稿,AI审稿是否更公平?

来源 | 数据派 THU编辑 | 文婧出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;一、IJCAI 2020灭霸式拒稿引众怒随着AAAI 2020于2月7日作为2020年人工智能学界的第一个顶会在美国纽约开幕&#xff0c;人工智能相关领域的研究者们又要为新一年的顶会忙碌了。对于AI界的…

ASP.NET MVC 中将FormCollection与实体间转换方法

http://blog.csdn.net/lutinghuan/article/details/8449296 将Action动作中传递的FormCollection转变成对应的实体&#xff0c;可以使用Controller的TryUpdateModel()方法。 示例如下&#xff1a; [csharp] view plaincopy [HttpPost] public ActionResult Create(FormCollect…

增量学习不只有finetune,三星AI提增量式少样本目标检测算法 | CVPR 2020

作者 | VincentLee来源 | 晓飞的算法工程笔记该论文研究了非常有意义的增量式少样本目标检测场景iFSD(Incremental Few-Shot Detection)&#xff0c;场景设置如下&#xff1a;检测模型可以在包含充足样本的基础类别上进行训练训练好后&#xff0c;iFSD能够应用到真实世界中&…

修改Linux内核参数提高服务器并发能力

1.参数设置 查看相关的参数 sysctl -a|grep tcp_keepalive net.ipv4.tcp_keepalive_intvl 30 net.ipv4.tcp_keepalive_probes 2 net.ipv4.tcp_keepalive_time 160 设置相关的参数 sysctl -w net.ipv4.tcp_keepalive_time 7500 也可以直接打开 # vim/etc/sysctl.conf 加入ne…

GPS小车移动应用程序

//用于desktop部署private void btnInitializeObjects_Click(object sender, System.EventArgs e){Catalog Cat MapInfo.Engine.Session.Current.Catalog; //创建临时层TableInfoMemTable tblInfoTemp new TableInfoMemTable("Animation");Table tblTemp Cat.GetT…

iOS网络-NSURLSessionDataTask大文件离线断点下载

什么叫离线断点下载,就是用户下载中关闭程序重新打开可以继续下载 代码实现如下: #import "ViewController.h" interface ViewController ()<NSURLSessionDataDelegate> //输出流 property (nonatomic, strong) NSOutputStream *stream ; //Task对象 property …

fcntl使用

1、获取文件的flags&#xff0c;即open函数的第二个参数: flags fcntl(fd,F_GETFL,0); 2、设置文件的flags: fcntl(fd,F_SETFL,flags); 3、增加文件的某个flags&#xff0c;比如文件是阻塞的&#xff0c;想设置成非阻塞: flags fcntl(fd,F_GETFL,0)…

两次关于软考网络工程师的经历

考过两次软考网络工程师&#xff0c;第一次没怎么准备&#xff0c;稀里糊涂参加考试&#xff0c;下午差几分&#xff1b;第二次痛定思痛&#xff0c;好好的分析了下试题&#xff0c;上午61&#xff0c;下午49&#xff0c;下午只写了30分钟左右&#xff0c;因为觉得自己过的了了…

“不会数学,干啥都不行!”骨灰级程序员:你方向不对,努力也白费!

最近半年来&#xff0c;我们收到了很多留言&#xff0c;有很多都是相似的问题&#xff1a;1&#xff09;数学不好搞编程好难&#xff0c;因为数据结构、编程语句、算法&#xff0c;核心原理都是数学。而且光会基础数学远远不够&#xff0c;还需要概率论&#xff0c;微积分、优化…

重新安装nginx注意事项

记得清理/etc/nginx/sites-enabled/default转载于:https://www.cnblogs.com/xiangnan/p/5146775.html

2020年,5种将死的编程语言

来源 | 码农网 译者 | 小峰曾几何时&#xff0c;几乎每个人都在使用Perl语言编程。但是那些经常使用的人慢慢地发现&#xff0c;关于这个Perl语言似乎总是有点不对劲。至少我知道有这么个叫做“piecemeal”的编程语言&#xff0c;它的创造者似乎就只是将这个功能堆在另一个功能…

关于 ulimit -SHn 65535

使用ulimit -a 可以查看当前系统的所有限制值&#xff0c;使用ulimit -n 可以查看当前的最大打开文件数。 新装的linux默认只有1024&#xff0c;当作负载较大的服务器时&#xff0c;很容易遇到error: too many open files。因此&#xff0c;需要将其改大。 使用 ulimit -n 65…

Could not load file or assembly App_Licenses.dll的问题

今天在AspDotNetStorefront做定制化开发&#xff0c;编译的时候莫名其妙地报告Could not load file or assembly App_Licenses, Version0.0.0.0, Cultureneutral, ... (Exception from HRESULT: 0x80070057 (E_INVALIDARG))的错误&#xff0c;检查文件系统&#xff0c;发现文件…

Docker 用法总结之:管理工具 shipyard 的具体使用指南

Docker 的命令行就已经非常好用了&#xff0c;假设非要加上基于 Web 的管理界面的话也有一些选择&#xff0c;如 DockerUI (Angular.js), Dockland (Ruby), Shipyard (Python/Django) 等。只是眼下来看 Shipyard 项目要活跃一点&#xff0c;Shipyard 支持多 host&#xff0c;能…

轻量级简单队列服务HTTPSQS安装与使用

原文地址&#xff1a;http://blog.s135.com/httpsqs 1.安装 wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz tar zxvf libevent-2.0.12-stable.tar.gz cd libevent-2.0.12-stable/ ./configure --prefix/usr/local/libevent-2.0.12-stable/ make…

GitHub移动端正式发布

整理 | 郭芮图源 | 视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;在去年的 Universe 大会上&#xff0c;GitHub 推出了尚处于 Beta 阶段的移动版客户端&#xff08;GitHub for mobile&#xff09;&#xff0c;支持 iOS 和 Android 两大主流移动平台。时隔…

手机的定制化需求

根据自身的市场需求&#xff0c;文化环境&#xff0c;业务定位等诸多因素&#xff0c;运营商会对手机提出定制化要求&#xff0c;并指定相应的手机规范。随着差异化竞争和精益经营的不断提高&#xff0c;由运营商提出的手机规范也越来越复杂。据不完全统计&#xff08;图10-1&a…

oracle 9i 安装及连接远程数据库

用oracle 11g很久了&#xff0c;真的感觉是一个很重量级的客户端&#xff0c;安装都要一个多小时&#xff0c;最近刚开始接触这种精简版的数据库客户端&#xff0c;捣鼓了半天&#xff0c;总算成功。 1.下载客户端 2.安装 傻瓜式安装即可&#xff0c;记得自己的路径。 3.配置环…

FAST-CGI安装与使用

FastCGI 像是一个常驻 (long-live) 型的 CGI&#xff0c;它可以一直执行着&#xff0c;只要激活后&#xff0c;不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。 1.下载安装fcgi # wget http://www.fastcgi.com/dist/fcgi.tar.gz # ta…

利用 JQuery的load函数动态加载页面

利用JQuery的load函数动态加载页面 JQuery有好多Ajax函数&#xff0c;其中load是用来动态加载一个页面的内容到指定的dom元素上。我们来做个例子&#xff1a;做一个上下&#xff08;左右&#xff09;结构的页面&#xff0c;其中下左部分放2个以前我们做过的div按钮&#xff0c…

教你用Android做二次开发,识别率达到科大讯飞语音输入水平 | 原力计划

作者 | Pek_KuaiJia责编 | 夕颜头图 | CSDN 下载自视觉中国出品 | CSDN&#xff08;ID:CSDNnews&#xff09;随着目前用户需求的精细化和智能化&#xff0c;很多时候我们需要在App内集成语音输入模块&#xff0c;为用户提供语音输入的功能。而科大讯飞语音作为行业内翘楚&#…

基于r-Kernel的LiteOS操作系统

LiteOS是应用于资源受限的传感网络的一种基于线程的类UNIX操作系统。也就是说它跑在存储空间和RAM有限的超低电压微控制器上&#xff0c;这也是吸引我关注它的原因&#xff08;在超低电压下系统更易出错&#xff09;。它採用r-kernel内核&#xff0c;r-kernel有三个特征&#x…

Linux网络编程中的几组类似功能的区别

1.bzero与memset char buff[1024]; memset(buff,0,sizeof(buff));bzero(buff, sizeof(buff)); struct sockaddr_in addr memset(&addr, 0, sizeof(addr)); bzero(buff, sizeof(buff)); 参考《UNIX网络编程 卷1&#xff1a;套接字联网API 第3版》1.2的解释&#xff1a…