三维目标检测算法原理
三维目标检测算法原理
输入输出接口
Input:
(1)图像视频分辨率(整型int)
(2)图像视频格式(RGB,YUV,MP4等)
(3)左右两边的车道线位置信息摄像头标定参数(中心位置(x,y)
和5个畸变系数(2径向,2切向,1棱向),浮点型float)
(4)摄像头初始化参数(摄像头初始位置和三个坐标方向
的旋转角度,车辆宽度高度车速等等,浮点型float)
Output:
(1)BandingBox左上右下的坐标位置(浮点型float)
(2)Type类型:人,车,…,… (整型int)
(3)执行度:是指判别目标物为某种类型的比率。
比如为人,车,…,…的比率。(浮点型float)
(4)需要遮挡目标区域的左上右下的坐标位置(浮点型float)
(5)摄像头与目标物距离 (浮点型float)
(6)带有3D-BangdingBox各种算法自动化性能参数分析
(浮点型float,整型int,字符型char)
(7)带有3D-BangdingBox各种算法自动化性能参数和视频存储
(浮点型float,整型int,字符型char,RGB,YUV,MP4等)
- 功能定义
1)开发带有3D-BangdingBox各种算法自动化性能参数分析。
2)带有3D-BangdingBox各种算法自动化性能参数和视频存储。
3)实时视频显示带有3D-BangdingBox各种算法的运行状况。
4)可以实时存储带有3D-BangdingBox各种算法的性能参数和视频。
5)优化算法和定点化程序,减少算力,集成到嵌入式或FPGA上
图1. 行人和车辆检测与跟踪(左:2D-BangdingBox,右:3D-BangdingBox)
- 技术路线方案
针对自主驾驶场景中的高精度三维目标检测。文章提出了多视图三维网络(mv3d),一个以激光点云与RGB图像作为输入去预测定向的三维bounding box的融合框架。论文编码稀疏的三维点云数据用紧凑的多视图表示。网络是由两个子网络组成:一个是三维目标区域提名网络,另一个用于多视图特征融合。区域提名网络从鸟瞰视图中生成有效地3D点云数据表示的3D侯选框。文章设计了一个深度融合方案,结合多视角的区域特征,并能够作用于不同路径的中间层之间。采用KITTI基准作为实验测试,测试表明,这个方法在三维定位任务、三维检测任务上优于目前最先进记录大约25%和30%的准确率。此外,对于2D检测,在激光雷达为基础的难例数据上,该方法比目前最领先的方法获得14.9%更高的准确率。
在文章中,提出了一个以多模态数据作为输入的多视图三维物体检测网络(mv3d),预测物体在三维空间中的全3D的程度。利用多模态信息的主要思想是完成区域特征融合。首先,文章提出了一个多视图的编码方案,以获得对稀疏3D点云更有效和紧凑的表达。如图194所示,多视图三维检测网络由两部分组成:三维区域提名网络和基于区域提名的融合网络。3D区域提名网络利用鸟瞰视角的点云表示去产生高度精确的3D候选框。3D物体区域提名的好处是,它可以在3D空间中被投影到任何视图中。多视图融合网络从多视角中通过投影3D区域来提取域特征到特征图上。我们设计了一个深度融合的方法能够作用于不同视角的中间层。结合下降路径训练和辅助损失,该方法相比于早期/晚期融合方案表现出优异的成绩。根据多视图特征表示,在三维空间中,网络执行定向的3D框回归来预测物体准确的三维位置,大小和方向。
图2. 三维目标检测架构图
mv3d网络以多视图中的三维点云以及图像作为输入。它首先从鸟瞰图和经过区域表达的深度的多视图融合特征中生成3D候选区域。融合的特征用于分类和定向的三维bounding box回归。
鸟瞰图表示:
鸟瞰表达被编码成高度,强度和密度信息。我们离散投影的点云到分辨率为0.1米的二维网格中。对每一个单元格,高度特征被计算为该单元格的最大高度点。要编码更详细的高度信息,点云平分成M片(这里的切片应该是将整个二维网格进行高度划分)。每个切片都进行高度图计算,因此,我们得到M个高度图。强度特征是每个单元格中有最大高度的点的映射值。点云密度表示每个单元格中的点的数目。为了归一化特征,它被计算为MIN(1,log(N+1)/log(64));其中N是在单元格中的点的数目。注意,强度和密度特征计算的是整个点云,而高度特征计算的是M切片,所以,总的鸟瞰图被编码为(M + 2)个通道的特征。
前视图表示:
前视图表示对鸟瞰图表示提供了互补的信息。由于激光雷达点云是非常稀疏的,投影到图像平面会导致在一个稀疏的二维点地图。相反,我们把它投射到一个圆柱体平面上,以产生一个密集的前视图地图。给定一个三维点P =(x,y,z),其坐标Pfv=(r,c)在前视图中可以通过下式计算得出:
c=atan2(y,x)/ ∆θ
r=atan2(z,sqrt(xx+yy))/ ∆φ
其中,∆θ和 ∆φ分别是激光束的水平和垂直分辨率。我们编码前视图使用三个通道的特征,就是高度,距离和强度。
目前2D目标检测中,区域提名网络已经成为最高水平网络的关键,文章设计了一个网络产生3D候选区域。我们使用鸟瞰图作为输入。在3D物体检测中,鸟瞰图相比于前视图/图像平面有几个优点。首先,物体投射到鸟瞰图时,保持了物体的物理尺寸,从而具有较小的尺寸方差,这在前视图/图像平面的情况下不具备的。第二,在鸟瞰图中,物体占据不同的空间,从而避免遮挡问题。第三、在道路场景中,由于目标通常位于地面平面上,并在垂直位置的方差较小,鸟瞰图定位在获得准确的3Dboundingbox是很重要的。因此,使用鸟瞰图作为输入,可以确保3D位置预测更可行。
给出一个鸟瞰图,网络生成3D候选框。每个3D框的参数有(X,Y,Z,L,W,H),表示在激光雷达坐标系中3D侯选框的中心和尺寸(米)。对于每个3D前置框,相应的鸟瞰锚(Xbv,Ybv、Lbv、Wbv)可以通过离散的(X,Y,L,W)获取。我们设计N个3D前置框通过在训练集的地面真实目标大小聚类获得。在机动车检测的情况下,前置框(L,W)的值分别为{(3.9,1.6),(1.0,0.6)},和高度h是固定值1.56米。通过旋转鸟瞰锚90度(围着锚x,y的坐标中心),可以得到n= 4个前置框。(x,y)为鸟视图特征图中的坐标,Z可以根据摄像机高度和物体高度来计算。在区域产生中不做方向回归,而把它留给下一个预测阶段。3D框的方向限制在{ 0◦,90◦},这是接近实际的取向大部分道路场景中的物体。这种简化使回归训练更容易。
采用0.1米的离散分辨率,目标框在鸟瞰中仅占5∼40个像素点(最大约相当于0.015米)。检测这些非常小的物体仍然是一个困难的问题。一种可能的解决方案是使用更高的分辨率的输入,然而,将需要更多的计算。我们选择特征图上进行上采样操作。我们用2倍的双线性上采样操作在网络的最后一个卷积层后。前端卷积层中只进行3次池化运算,即8倍的下采样。因此,结合2倍的反卷积操作,特征图被送到区域提名网络时只有相对于鸟瞰图输入的4倍下采样后的图。
我们做3D框回归通过回归到t = (∆x,∆y,∆z,∆l,∆w,∆h)中,类似于2D目标检测中的RPN网络。(∆x,∆y,∆z) 是锚中心归一化的偏移量,(∆l,∆w,∆h) 由∆s = log(Sgt/Sanchor),s ∈ {l,w,h}.计算得出。我们使用多任务损失函数做物体分类/背景分类和3D框回归。我们采用分类熵做物体分类损失和光滑L1做3D框回归损失。背景锚可以忽略。当锚与真实目标边框重叠超过0.7时,我们认为是正样本,低于0.5认为是负样本,中间的我们忽略不计。
由于激光雷达点云稀疏,会导致许多空锚,我们在训练和测试中删除所有的空锚,以减少计算。可以通过计算点占用图上的积分图像来实现。
对于每个非空锚在每个位置的最后一个卷积特征图,网络生成一个3D框。为了减少冗余,我们应用非最大抑制(NMS)的鸟瞰框,论文没有使用3D非极大值抑制。使用交并比阈值为0.7在非极大值抑制中。前2000框保存在训练期间,而在测试中,我们只使用300框。
设计了一个基于区域的融合网络,有效地结合从多个视图的特征,共同做候选区域分类和做定向3D框回归。
由于从不同的视图/方式的特征图通常有不同的分辨率,我们采用ROI池化为每个视图以获得相同长度的特征向量。给定生成的3D候选区域,我们可以将它们投射到三维空间中的任何视图中,论文映射到3个视图中,鸟瞰图(BV),前视图(FV),和图像平面(RGB)。给出一个3D区域,我们可以获取ROI通过:
其中,T3D→v表示从激光雷达坐标系到鸟瞰图、前视图,和图像平面的转换函数,给定一个输入特征图x从每个视图的前端网络,我们获得固定长度的特征通过ROI池化:
深度融合,要结合信息从不同的特征图,我们采用了深度融合的方法,融合不同层的多视图特征。深融合网络和早期/晚期融合网络的体系结构的比较如下图所示:
图3. 图像融合示意图
我们设计了以下深融合过程:
多视图网络融合特征后,我们在3D区域中回归3D框的方向。特别是,回归的目标是3D框的8个角:T =(∆x0,···,∆x7,∆Y0,···∆Y7,∆Z0,···,∆Z7)。该参数被编码为由候选框的对角线长度归一化后的偏移量。尽管这样的24-D向量表示三维框是冗余的,但是我们发现这种编码方法优于中心和大小的编码方法。请注意,3D框回归不同于回归轴对齐的3D框。在模型中,物体的方向可以从预测的3D框角进行计算。我们使用多任务损失共同预测物体类别和3D框方向。在区域网络中,类别损失使用交叉熵和3D框损失使用平滑L1。除了上述正负样本设定和非极大值抑制阈值的设定,我们还使用交并比阈值0.05去除多余的盒子,确保鸟瞰中的物体不会占据同一空间。
我们采用两种方法去规范基于区域的融合网络:下降路径训练[ 13 ]和辅助损失。对于每次迭代,我们随机选择做全局下降路径或局部下降路径的概率为50%。如果选择全局下降路径,我们从三视图中相同概率中选择一个视图。如果选择局部下降路径,每个连接节点的路径输入随机丢弃的概率为50%。我们确保每个连接节点至少保留一个输入路径。为了进一步加强每个视图的表示能力,我们在网络中添加辅助路径和损失。如下图所示,辅助路径与主网络的层数相同。辅助路径中的每一层与主网络中的相应层共享权重。我们使用相同的多任务损失,即分类损失加3D框回归损失,反向传播每个辅助路径。计算所有损失中包括辅助损失。推理过程中删除辅助路径。
- 关键技术参数和性能指标
图4. 3D多视图原理示意图
在多视图网络中,每个视图具有相同的网络结构。基础网络是建立在VGG16下进行修改的:
•渠道减少到原来的网络的一半。
•为了处理特别小的物体,我们使用特征粗略估计以获得高分辨率的特征图。特别是,我们插入一个2倍双线性上采样层在最后一层卷积特征图输入到三维区域网络之前。同样,我们插入4倍/4倍 /2倍上采样层在BV / Fv/RGB分支的ROI池化层之前。
•我们删除原VGG网络中第四个池化操作,因此网络卷积部分进行8倍的下采样。
•在多视角融合网络中,我们添加一个额外的全连接层FC8在原有的FC6、FC7层基础上。
初始化参数由通过imagenet训练的vgg16网络。尽管网络有三个分支,但是参数的个数是75%的vgg16网络。一个图像网络的运行时间是在泰坦X上0.7s。
三维目标检测算法原理相关推荐
- 目标检测YOLO实战应用案例100讲-基于激光雷达点云的三维目标检测算法研究
目录 基于激光雷达点云的三维目标检测算法研究 基于投影图的方法 基于点云的多模态融合方法
- SSD目标检测算法原理(上)
目录 一.目标检测概述 1.1 项目演示介绍 1.2 图片识别背景 1.3 目标检测定义 二.目标检测算法原理 2.1 任务描述 2.2 目标检测算法必备基础 2.3目标检测算法模型输出 目标检测 - ...
- 三维目标检测算法汇总学习笔记
原文链接:https://mp.weixin.qq.com/s/_HdGVC6orkL2zfiv5sqrMw 2D与3D区别 3D目标检测面临更多的挑战,主要的体现在不仅要找到物体在图像中出现的位置, ...
- 笔记《基于无人驾驶方程式赛车的传感器融合目标检测算法研究及实现》
论文结构 关键字:无人驾驶方程式赛车,相机,激光雷达,目标检测,传感器融合 一.绪论 1. 感知技术研究现状 1.1.1 基于相机的目标检测技术研究现状 1.1.2 基于激光雷达的目标检测技术研究现状 ...
- 【三维目标检测】Complex-Yolov4详解(二):模型结构
Complex-Yolo网络模型的核心思想是用鸟瞰图BEV替换Yolo网络输入的RGB图像.因此,在完成BEV处理之后,模型的训练和推理过程基本和Yolo完全一致.Yolov4中输入的RGB图片的尺寸 ...
- 【三维目标检测】FCAF3D(一)
FCAF3D是一种anchor-free的全卷积室内三维目标检测算法,由三星公司发表在ECCV 2022 <FCAF3D: Fully Convolutional Anchor-Free 3D ...
- 【三维目标检测】Pointpillars(一)
PointPillars是一种基于体素的三维目标检测算法,发表在CVPR2019<PointPillars: Fast Encoders for Object Detection from Po ...
- 【三维目标检测】Second 模型 (一)
Second算法是一种基于三维点云的目标检测算法.Second算法采用了几乎与Voxelnet三维目标检测算法完全一致的设计思路,主要差异表现在将Voxelnet CML(Convolutional ...
- 【三维目标检测】VoxelNet(二):数据处理
本节主要介绍VoxelNet的数据处理部分,数据下载及预处理部分请参考:三维点云目标检测 - VoxelNet详解crop.py (一)_Coding的叶子的博客-CSDN博客. 其他三维目标检测算法 ...
最新文章
- ubuntu 安装lamp
- 派生类构造的时候一定要调用_为什么骑车的时候一定要带手套?
- echarts tooltip在图表范围内显示
- 数据结构——交换左右子树
- [ZJOI2008]泡泡堂(田忌赛马贪心)
- python中运算符号怎样表示_Python中的运算符与表达式
- 计算机二级access选择题技巧,计算机二级access考试注意事项及解题技巧策略
- html调用文章标题,HTML中文章标题标签的详细介绍
- c 语言输入n个数求和,c++---天梯赛---N个数求和
- 这些反病毒斗争经验,我全放这了!
- sms 2003 Service Pack 3 Open Beta
- python js 效率_Python,Node.js 哪个比较适合写爬虫?
- Domain应用之 根据某个Many2one的对象的 X2many对象 过滤
- 算法精解-C语言描述 递归和尾递归 (图解+实例)
- Gif动态图片怎样在线生成?一招快速完成gif在线制作
- 沃尔玛收购眼镜AR试戴公司Memomi,拓展眼镜电商业务
- k8s使用的iptables,具体原理是什么?一学就会
- 浏览器 unload beforunload事件不触发
- python学习之去除字符串中的空格(6种方法)
- Axure绘制密码输入框