赞
踩
3D object detection。3维目标检测
对于输入的3D点云,像2D一样使用一个bounding box去将相应的物体包围起来,不过这里使用的bounding box也同样变成了3维的
对于点云常见的处理方法有很多,有grid也就是分voxel然后使用CNN的,有Sets也就是邻域然后提取种子点特征的
这里设计了一种为名为Point-GNN的图形神经网络来预测图形中每个顶点所属的对象的类别和形状
整体结构由三个部分组成,第一部分graph construction也就是图形构造部分,第二部分a GNN of T iterations也就是Point-GNN部分,第三部分bounding box merging and scoring也就是包围框合并部分
首先是第一部分图形构造部分
这部分的输入就是整个结构原始的输入,一个包含了N个点的点云∈R3+k,3是三维坐标值,k是属性也就是特征通道数,然后就可以利用这些构造一个图结构G=(P,E),仍然是构造方法,顶点P就是N个点以3+k的通道数作为点特征,边的构造方法↓
简单来说就是对每个点的固定半径的邻域内的点都连一条边
这是常见的做法,但因为点云内的点数量可能非常巨大,所以这里采用了voxel也就是体素下采样的做法,具体来说,对每个顶点搜索一个半径为r的邻域,然后使用一个MLP去嵌入邻域内所有特征,使用一个max函数来聚合特征后作为顶点特征的初始化
然后是核心的第二部分,Point-GNN部分
这里的输入是上一部分得到的构造好的graph
首先先看看常见的GNN的操作方式,典型的图形神经网络通过沿边缘聚集特征来细化顶点特征,简单来说就是根据边连接邻域的信息来更新每个点的特征信息
这里的vt+1就是第t+1次迭代的顶点特征值,ρ(.)是一个集合函数,用于聚合每个顶点的边缘特征,gt(.)采用聚合的边要素来更新顶点要素,然后再进行下一轮迭代
而这里设计GNN来细化顶点的状态,以包括关于顶点所属的对象的信息
这里的s就是顶点特征,ft(.)是边缘特征提取,ht(.)使用上一次迭代的中心顶点状态值计算偏移
总的来说,这里使用的是邻居的相对位置和顶点的上一状态来作为对当前迭代状态更新的依据,导致相对于点云的全局移动的平移不变性
然后就是三个函数的建模方式
ht(.)和ft(.)和gt(·)就是构造了一个MLP,而ρ函数则是使用的max激活函数
最后更新完的graph结构再构造几个MLP得到各自节点的对象分类和对象定位
然后是第三部分,包围框合并部分
这里也是采用了NMS的方法,但相比于其他的直接根据score来进行NMS,这里设计了另外的计分方法,具体来说,给定一个盒子b,设l,w,h分别是它的长宽高,vl,vw,vh分别是它的方向向量,x是点p的三维坐标,则可以定义一个遮挡因子
于是乎更改NMS里的评分方式
简单来说就是将分类得分由IOU和遮挡因子加权组成,IOU是判断包围框的重合性,来抑制重叠的盒子,遮挡因子则是附带了一个方向性,考虑占体积比
然后就是训练的LOSS,这里设计了二个LOSS,前景背景分类损失Lcls,包围框定位损失Lloc
首先是前背景分类损失,对于每个顶点都在分类分支中会计算一个类别的概率分布
如果一个顶点在一个对象的边界框内,就将对象类分配给该顶点,如果一个顶点在任何边界框之外,给它分配背景类
于是定义损失
其中p是预测的概率向量,y是GT的one-hot向量
显而易见这个LOSS是为了使顶点的对象分类准确
然后是包围框定位损失
首先定义
为需要预测的包围框的属性,xyz代表了包围框中心坐标,lhw代表了包围框的长宽高,θ代表了偏角,然后定义
这里的xv等带v下标的表示的是顶点v的坐标,lm等带m下标的表示一个常数因子
这里的local分支预测出来的结果与GT设计一个定位损失
这里的1(·)函数还是判断的意思,而binterest表示判断该点是否在框内
最后再加上一个正则化,构成最终的LOSS
1.总体来看没有什么特别新奇或者厉害的地方,但这种构建图卷积的方式确实很不错,虽然见多了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。