| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 深入浅出CenterFusion -> 正文阅读 |
|
[人工智能]深入浅出CenterFusion |
深入浅出CenterFusionSummary自动驾驶汽车的感知系统一般由多种传感器组成,如lidar、carmera、radar等等。除了特斯拉基于纯视觉方案来进行感知之外,大多数研究还是利用多种传感器融合来建立系统,其中lidar和camera的融合研究比较多。 CenterFusion这篇文章基于nuscenes数据集研究camera和radar的特征层融合,图像部分采用的是CenterNet,radar点云部分采用了pillar expansion后通过roi frustum来与图像检测到的box进行匹配,radar特征提取与CenterNet类似,利用radar点云的vx、vy以及depth分别构建heatmap后与图像特征进行拼接来完成融合。官方代码仓库链接 总体思路还是将雷达点云投射到图像数据中,特征层进行通道拼接,再利用卷积网络进行回归。检测分为两个阶段,Primary Regression Heads的结果除了输出外,还用来进行点云数据和box的匹配;Secondary Regression Heads由于拼接了雷达特征,可以修正Primary Regression Heads的预测结果,同时给出额外的信息,目标速度和属性等等。 主要解决了如下问题:
背景知识如果没有了解过相关内容,可以按下顺序来看,CenterFusion里的大部分代码都是来自于CornerNet和CenterNet 重点内容网络结构Backbone沿用了CenterNet的DLA-34, 并将可变形卷积DeformConv引入。关于网络结构内容可参考CenterFusion(基于CenterNet)源码深度解读: :DLA34 雷达点云和2D图像目标匹配基于视锥的匹配
雷达点云目标和图像2D目标一般是多对一的关系,如果视锥体内有多个雷达点云,则只保留深度最小(距离最近)的点云,消除冗余的雷达点云数据。匹配结果如下:
视锥的使用并不是先例, TLNet和Frustum PointNet等anchor based方法均利用了视锥来过滤anchor,因为稠密的anchor带来巨大的计算量,2D检测结果形成的3D视锥可以过滤掉大量背景上的anchor。
雷达点云特征提取因为图像是经过CenterNet转换成了heatmap,同时对雷达点云和图像中的BOX进行了一对一的匹配,为了将图像数据和雷达点云数据更好的融合,论文将雷达点云特征转换为heatmap,进而在通道上拼接(concat)来完成融合。 具体为,将点云数据的深度、速度x分量,速度y分量作为三个通道。对每一个与雷达点云匹配的2D Box,在2D Box内部分别以三个通道值填充一个Box(暂称为次级Box),次级Box的中心与原始2D Box的中心重合,大小与原始Box成比例, 比例通过 α \alpha α参数控制
F x , y , i j = 1 M i { f i ∣ x ? c x j ∣ ≤ α w j ?and? ∣ y ? c y i ∣ ≤ α h j 0 ?otherwise? , F_{x, y, i}^{j}=\frac{1}{M_{i}}\left\{\begin{array}{ll} f_{i} & \left|x-c_{x}^{j}\right| \leq \alpha w^{j} \quad \text { and } \\ & \left|y-c_{y}^{i}\right| \leq \alpha h^{j} \\ 0 & \text { otherwise } \end{array},\right. Fx,y,ij?=Mi?1?? ? ??fi?0? ?x?cxj? ?≤αwj?and? ?y?cyi? ?≤αhj?otherwise??, 三个通道分别为 ( d , v x v y ) \left(d, v_{x}\right. \left.v_{y}\right) (d,vx?vy?),其中i是雷达的特征图通道,且 i ∈ 1 , 2 , 3 i\in 1,2,3 i∈1,2,3, M i M_{i} Mi?是每个通道的归一化因子, c x j , c y j c_{x}^{j}, c_{y}^{j} cxj?,cyj?是与之匹配的第 j j j个2D box的中心坐标, w j , h j w^{j}, h^{j} wj,hj是第 j j j个2D box的宽和高, α \alpha α是一个超参数,用于控制次级Box的大小。 点云heatmap的分布与CenterNet有些差异,CenterNet的heatmap是以中心点的取值生成的高斯分布,而点云heatmap是以2D box中心点生成一个成比例大小的Box,Box内取值相同,Box外取值为0。 其他目标角度in-bin regression做过机器学习的都知道,有一个重要的步骤叫做特征工程,某个变量难以直接拟合或拟合效果不好时,需要进行一些encoding。因为直接回归角度标量有点困难,可以先大致判断位于哪个角度区间,然后在区间内进行offset回归 论文中不直接回归观测角 α \alpha α,而是将 α \alpha α取值范围编码为两个bins: [ ? 7 p i 6 , p i 6 ] , [ ? p i 6 , 7 p i 6 ] [\frac{-7pi}{6}, \frac{pi}{6}], [\frac{-pi}{6}, \frac{7pi}{6}] [6?7pi?,6pi?],[6?pi?,67pi?]。每个bin包含4个标量,维度合计为8。对于一个bin,两个值用作softmax分类,其余两个值对每个bin中的角度中值的offset进行回归。这里其实是沿用了CenterNet的角度回归方式。代码如下:
CentNet论文的附录给出了详细公式,,Loss分为两部分:前半部分用softmax分类,判断角度位于哪个bin,损失函数为cross entropy ;后半部回归角度关于对应bin中心取值(就是角度平均值)的offset,对offset取正弦或余弦值作为角度残差,并计算与角度残差GT的L1 loss
L
ori?
=
1
N
∑
k
=
1
N
∑
i
=
1
2
(
softmax
?
(
b
^
i
,
c
i
)
+
c
i
∣
a
^
i
?
a
i
∣
)
L_{\text {ori }}=\frac{1}{N} \sum_{k=1}^{N} \sum_{i=1}^{2}\left(\operatorname{softmax}\left(\hat{b}_{i}, c_{i}\right)+c_{i}\left|\hat{a}_{i}-a_{i}\right|\right)
Lori??=N1?k=1∑N?i=1∑2?(softmax(b^i?,ci?)+ci?∣a^i??ai?∣) 观测角可以通过下面的公式得到,
j
j
j是classfication score较大的那个bin的index。即通过角度所属bin的中值,加上一个三角函数offset,得到观测角度。 代码中将角度八元组表示为rot, 后处理时会转换成观测角alpha和航向角yaw(又称rotaition_y)
为什么这样进行角度估计网络拟合的是观测角alpha的相关编码,最后还是要通过相机内参转换为航向角,那么为什么不直接拟合航向角呢? 因为航向角是相对于世界坐标系的,而观测角是相对于相机坐标系的。所以网络拟合的是观测角,但是最终输出的是航向角。除了这个原因之外,Bounding box estimation using deep learning and geometry. In CVPR, 2017 由下图可以看出,目标的偏航角保持固定的情况下,随着位移的改变,其局部图像上看似乎发生了旋转,导致相对角度发生了变化。"看上去"就像汽车在旋转一样。这种特性对于CNN而言极其不利,因为如果采用全局偏航角作为ground truth,CNN需要将看上去转角不同的图像映射到同一个答案上,即多对一情况,这完全无法训练出准确的结果。 因此论文采用局部相对角(目标朝向相对相机射线)来作为GT,即通过估计图中的 θ l \theta_{l} θl?,再通过几何关系间接得到全局偏航角,图中为 θ \theta θ。针对 θ l \theta_{l} θl?,采用了MultiBin Orientation Estimation方法,将角度划分为几个区间,预测落在哪个区间,以及相对区间的offset。CenterNet系列文章拟合是观测角 α \alpha α的编码, α \alpha α与这里的 θ l \theta_{l} θl?存在几何关系 多模态数据时间对齐每种传感器都有自己的数据采集频率,需要将不同传感器在不同时间产生的数据进行对齐。 REFERENCE |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 21:36:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |