三维目标检测算法原理

输入输出接口

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. 功能定义

1)开发带有3D-BangdingBox各种算法自动化性能参数分析。

2)带有3D-BangdingBox各种算法自动化性能参数和视频存储。

3)实时视频显示带有3D-BangdingBox各种算法的运行状况。

4)可以实时存储带有3D-BangdingBox各种算法的性能参数和视频。

5)优化算法和定点化程序,减少算力,集成到嵌入式或FPGA上

图1. 行人和车辆检测与跟踪(左:2D-BangdingBox,右:3D-BangdingBox)

  1. 技术路线方案

针对自主驾驶场景中的高精度三维目标检测。文章提出了多视图三维网络(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框回归损失,反向传播每个辅助路径。计算所有损失中包括辅助损失。推理过程中删除辅助路径。

  1. 关键技术参数和性能指标

图4. 3D多视图原理示意图

在多视图网络中,每个视图具有相同的网络结构。基础网络是建立在VGG16下进行修改的:

•渠道减少到原来的网络的一半。

•为了处理特别小的物体,我们使用特征粗略估计以获得高分辨率的特征图。特别是,我们插入一个2倍双线性上采样层在最后一层卷积特征图输入到三维区域网络之前。同样,我们插入4倍/4倍 /2倍上采样层在BV / Fv/RGB分支的ROI池化层之前。

•我们删除原VGG网络中第四个池化操作,因此网络卷积部分进行8倍的下采样。

•在多视角融合网络中,我们添加一个额外的全连接层FC8在原有的FC6、FC7层基础上。

初始化参数由通过imagenet训练的vgg16网络。尽管网络有三个分支,但是参数的个数是75%的vgg16网络。一个图像网络的运行时间是在泰坦X上0.7s。

三维目标检测算法原理相关推荐

  1. 目标检测YOLO实战应用案例100讲-基于激光雷达点云的三维目标检测算法研究

    目录 基于激光雷达点云的三维目标检测算法研究 基于投影图的方法 基于点云的多模态融合方法

  2. SSD目标检测算法原理(上)

    目录 一.目标检测概述 1.1 项目演示介绍 1.2 图片识别背景 1.3 目标检测定义 二.目标检测算法原理 2.1 任务描述 2.2 目标检测算法必备基础 2.3目标检测算法模型输出 目标检测 - ...

  3. 三维目标检测算法汇总学习笔记

    原文链接:https://mp.weixin.qq.com/s/_HdGVC6orkL2zfiv5sqrMw 2D与3D区别 3D目标检测面临更多的挑战,主要的体现在不仅要找到物体在图像中出现的位置, ...

  4. 笔记《基于无人驾驶方程式赛车的传感器融合目标检测算法研究及实现》

    论文结构 关键字:无人驾驶方程式赛车,相机,激光雷达,目标检测,传感器融合 一.绪论 1. 感知技术研究现状 1.1.1 基于相机的目标检测技术研究现状 1.1.2 基于激光雷达的目标检测技术研究现状 ...

  5. 【三维目标检测】Complex-Yolov4详解(二):模型结构

    Complex-Yolo网络模型的核心思想是用鸟瞰图BEV替换Yolo网络输入的RGB图像.因此,在完成BEV处理之后,模型的训练和推理过程基本和Yolo完全一致.Yolov4中输入的RGB图片的尺寸 ...

  6. 【三维目标检测】FCAF3D(一)

    FCAF3D是一种anchor-free的全卷积室内三维目标检测算法,由三星公司发表在ECCV 2022 <FCAF3D: Fully Convolutional Anchor-Free 3D ...

  7. 【三维目标检测】Pointpillars(一)

    PointPillars是一种基于体素的三维目标检测算法,发表在CVPR2019<PointPillars: Fast Encoders for Object Detection from Po ...

  8. 【三维目标检测】Second 模型 (一)

    Second算法是一种基于三维点云的目标检测算法.Second算法采用了几乎与Voxelnet三维目标检测算法完全一致的设计思路,主要差异表现在将Voxelnet CML(Convolutional ...

  9. 【三维目标检测】VoxelNet(二):数据处理

    本节主要介绍VoxelNet的数据处理部分,数据下载及预处理部分请参考:三维点云目标检测 - VoxelNet详解crop.py (一)_Coding的叶子的博客-CSDN博客. 其他三维目标检测算法 ...

最新文章

  1. ubuntu 安装lamp
  2. 派生类构造的时候一定要调用_为什么骑车的时候一定要带手套?
  3. echarts tooltip在图表范围内显示
  4. 数据结构——交换左右子树
  5. [ZJOI2008]泡泡堂(田忌赛马贪心)
  6. python中运算符号怎样表示_Python中的运算符与表达式
  7. 计算机二级access选择题技巧,计算机二级access考试注意事项及解题技巧策略
  8. html调用文章标题,HTML中文章标题标签的详细介绍
  9. c 语言输入n个数求和,c++---天梯赛---N个数求和
  10. 这些反病毒斗争经验,我全放这了!
  11. sms 2003 Service Pack 3 Open Beta
  12. python js 效率_Python,Node.js 哪个比较适合写爬虫?
  13. Domain应用之 根据某个Many2one的对象的 X2many对象 过滤
  14. 算法精解-C语言描述 递归和尾递归 (图解+实例)
  15. Gif动态图片怎样在线生成?一招快速完成gif在线制作
  16. 沃尔玛收购眼镜AR试戴公司Memomi,拓展眼镜电商业务
  17. k8s使用的iptables,具体原理是什么?一学就会
  18. 浏览器 unload beforunload事件不触发
  19. python学习之去除字符串中的空格(6种方法)
  20. Axure绘制密码输入框

热门文章

  1. 一图了解git常用开源许可证书
  2. 2021-2027年中国智能门禁系统市场研究及前瞻分析报告
  3. nginx介绍及常用功能
  4. Redis 笔记(10)— 发布订阅模式(发布订阅单个信道、订阅信道后的返回值分类、发布订阅多个信道)
  5. 2022-2028年中国AKD施胶剂行业市场研究及前瞻分析报告
  6. 2022-2028年中国废旧塑料回收产业研究及前瞻分析报告
  7. QT中使用rubberband橡皮筋等方法进行选中多个物体
  8. 关于python导入模块和package的一些深度思考
  9. 矩阵乘以其矩阵转置求导-数学
  10. 一些量化(quantization)技巧