热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于深度学习的3D目标检测综述DeepLearningBased3DDetection:AReview

本文同步于微信公众号:3D视觉前沿,欢迎大家关注。引言 传统的2D目标检测,是得到目标物体的类别,以及图像平面内的包围盒,因此包含

本文同步于微信公众号:3D视觉前沿,欢迎大家关注。

引言

传统的2D目标检测,是得到目标物体的类别,以及图像平面内的包围盒,因此包含的参数为类别c,包围盒的中心(x,y),长宽(length, width)。

而3D检测的任务是得到目标物体的类别(Classification)以及带朝向的3D包围盒(Oriented 3D Bounding Boxes),因此,其包含类别c,位置(x, y, z),size(length, widith, height),以及朝向(a, b, c)。在无人车应用中,车辆及行人等都是在地面上,因此,其朝向只有一维,即只有偏航角yaw。

一、数据输入

数据类型包括2D的RGB图像,2.5D的RGB-D图像以及3D的点云,他们各有特点。

RGB Image: RGB图像像素可以很高,捕捉到更多的细节,但是缺乏3D信息;优点是可以使用当前比较成熟的CNN算法;

Depth Image: Depth图像具有3D信息,相对稠密,但受传感器影响大。Depth图像可以结合相机内参转换为3D的Point Cloud,因此其既可以使用传统CNN,也可以使用基于Point Cloud的DNN;

Point Cloud: Point Cloud具有精确的3D信息,但太过稀疏。Point Cloud可以有不同的表现形式,a.进行体素化(voxelize): 这样可以使用3D CNN网络;b.原始点云(raw): 直接针对Point Cloud使用针对点云的DNN,例如PointNet,PointNet++,PointCNN等;对于无人车,其Point Cloud采集时将激光传感器放置在车顶环绕360度扫描,因此,可以拼接一圈图像生成一个长条形的 c.前视图(Front View);如果从上往下看,可以对垂直空间进行划分,得到多层 d.鸟瞰图(Bird Eye View, BEV),之后可以使用传统CNN。

总的来说,可以结合多种模态的数据,设计各种算法结构,完成3D检测。

二、方法分类

根据输入的数据类型,可以将当前进行3D Detection的方法进行大致分类。对于每一类方法的代表性方法,本博客会慢慢进行介绍。

2.1 基于单目图像的方法:

这类方法主要包括两类,一类是扩展2D检测的方法;一类是先估计3D信息再进行3D检测的方法。这类方法只根据2D信息回归3D信息,效果并不好,其效果一般都不如基于3D信息的方法。然而,这类方法的巨大优势就是速度快,在无人车应用中,Tesla和Apollo中,使用的是基于单目的算法进行3D检测。

2.1.1 扩展2D检测的方法

在传统2D Detection的基础上,额外回归出物体的3D BBox。

代表性方法:

2019:
[ArXiv] Monocular 3D Object Detection and Box Fitting Trained End-to-End
[ArXiv] Monocular 3D Object Detection via Geometric Reasoning on Keypoints
[ArXiv] Accurate Monocular 3D Object Detection via Color-Embedded 3D Reconstruction for Autonomous Driving

2.1.2 先估计深度再检测的方法

另一类是对RGB图像估计其Depth,进而得到pseudo LiDAR的数据,再基于3D的方法检测3D物体。

代表性方法:

2019:
[CVPR] Pseudo-LiDAR from Visual Depth Estimation: Bridging the Gap in 3D Object Detection for Autonomous Driving

2.2 基于纯点云的方法:

这类方法主要包括两类,将点云转换成voxel的方法,和将点云转换成鸟瞰图(BEV)的方法。由于进行3D检测绝大多数和3D信息有关,因此这类方法能够得到很好的结果。

2.2.1 点云转化成voxel的方法:

这类方法最直接,但通常比较耗时;

代表性方法:

2019:
[ArXiv] Part-A2 Net: 3D Part-Aware and Aggregation Neural Network for Object
[ArXiv] STD: Sparse-to-Dense 3D Object Detector for Point Cloud
[ArXiv] Deep Hough Voting for 3D Object Detection in Point Clouds [code]
[CVPR] PointPillars: Fast Encoders for Object Detection from Point Clouds
[CVPR] PointRCNN 3D Object Proposal Generation and Detection from Point Cloud [code]
2018:
[CVPR] PIXOR: Real-time 3D Object Detection from Point Clouds
[CVPR] VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection
2016:
[CVPR] Deep Sliding Shapes for Amodal 3D Object Detection in RGB-D Images [code]

2.3 基于融合的方法:

这类方法对2D输入和3D输入进行有效的融合,以实现效果的提升。由于可以进行组合的方式多种多样,不易进行划分。大致来讲,可以分为Cascade Fusion 和 Parallel Fusion两类。基于融合的方法效果一般而言是非常好的;但是,设计较好的网络结构,对以上信息进行有效融合是十分不易。

2.3.1 Cascade Fusion

这种方式是一种串联的方式,一般是先进行2D的操作,再将结果拿去结合3D数据进行检测。代表性方法是Frustum-PointNets,先进行2D目标检测,得到对应的Frustum Point Cloud,再在3D空间进行目标分割和包围盒回归。

代表性方法:

2018:
[CVPR] Frustum PointNets for 3D Object Detection from RGB-D Data [code]

2.3.2 Parallel Fusion

这类方法中,多源信息进行了融合,可以在算法的早期或后期,也可以同时早期和后期等。

a. Early Fusion

这类方法在前期进行融合,也即将多源信息先进行融合得到联合的信息,之后对联合的信息进行DNN等特征提取工作。

代表性方法

2017:
[CVPR] Multi-View 3D Object Detection Network for Autonomous Driving [code]

b. Late Fusion

这类方法是对多源信息进行特征抽取,最后融合成一个全局的特征,回归出物体的3D包围盒信息。

代表性方法

2018:
[CVPR] PointFusion: Deep Sensor Fusion for 3D Bounding Box Estimation
[ICRA] A General Pipeline for 3D Detection of Vehicles

c. Dense Fusion

这类方法中,一般在前期进行信息融合,以得到潜在的3D BBox Proposals,之后在后期再进行特征的融合,进而回归出3D包围盒信息。

代表性方法

2019:
[CVPR] Multi-Task Multi-Sensor Fusion for 3D Object Detection
2018:
[IROS] Joint 3D Proposal Generation and Object Detection from View Aggregation
[ECCV] Deep Continuous Fusion for Multi-Sensor 3D Object Detection

三、数据集及方法比较


3.1 数据集

Kitti:目前进行无人驾驶的标准数据集,大部分算法都会在其上进行对比。
SUN RGB-D:是室内的数据集,包含常见室内物体的类别,2Dmask和3D BBox等信息。

3.2 算法比较

以KITTI数据集为准,在对比网站上,截止2019年08月22日,在car这一类上,表现最好的是Part A2A^2A2

四、领域专家

Raquel Urtasun,Uber ATG, University of Toronto
Xiaogang Wang,Chinese University of Hong Kong
Shuran Song,Columbia University
Charles Ruizhongtai Qi,Facebook Artificial Intelligence Research (FAIR)
Hao Su,UC San Diego
Jiaya jia, CUHK
Xiaozhi Chen,DJI

备注:本博客会定期更新;如有错误请随时指正。


推荐阅读
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 从高级程序员到CTO的4次能力跃迁!如何选择适合的技术负责人?
    本文讲解了从高级程序员到CTO的4次能力跃迁,以及如何选择适合的技术负责人。在初创期、发展期、成熟期的每个阶段,创业公司需要不同级别的技术负责人来实现复杂功能、解决技术难题、提高交付效率和质量。高级程序员的职责是实现复杂功能、编写核心代码、处理线上bug、解决技术难题。而技术经理则需要提高交付效率和质量。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 显卡驱动对游戏的影响及其提升效果的研究
    本文研究了显卡驱动对游戏体验的提升效果,通过比较新旧驱动加持下的RTX 2080Ti显卡在游戏体验上的差异。测试平台选择了i9-9900K处理器和索泰RTX 2080Ti玩家力量至尊显卡,以保证数据的准确性。研究结果表明,显卡驱动的更新确实能够带来近乎50%的性能提升,对于提升游戏体验具有重要意义。 ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
author-avatar
毛残品_394
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有