《论文阅读》GNN3DMOT: Graph Neural Network for 3D Multi-Object Tracking with 2D-3D Multi-Feature Learning

留个笔记自用

GNN3DMOT: Graph Neural Network for 3D Multi-Object Tracking with 2D-3D Multi-Feature Learning

做什么

3D object detection。3维目标检测
在这里插入图片描述
对于输入的3D点云,像2D一样使用一个bounding box去将相应的物体包围起来,不过这里使用的bounding box也同样变成了3维的
而所谓的object tracking就是目标追踪,就是在detect的基础上增加了一个时序性,常见的2D追踪是在一段视频中,每一帧都是用object detect找到某一对象,然后一直使用bounding box包围它
3D object tracking,简单来说的目标就是,在搜索区域逐帧定位目标(由模板定义),可以理解成搜索区域就是视频的每一帧图像,而模板就是想要寻找的那个对象

做了什么

在这里插入图片描述
以前的工作常常是根据每个对象进行独立的特征提取,然后每帧之间进行对象关联
而这里采样的对象特征提取的方法是结合了2D和3D的,并且是一种特征交互机制,简单来说,不是单独获得每一个目标的特征,而是将对象特征之间进行关联,也就是单个特征会被告知(attention)至其他对象特征,这样会使每一个对象特征会倾向于与它相似的对象的特征,反之不相似则远离,而2D和3D的跨模态则会使特征之间互补增强

怎么做

首先这个在线运动检测问题的目标是将先前帧中已有的被跟踪对象与当前帧中新检测到的对象相关联
定义第t帧中被跟踪对象oi∈O(O包含了M个对象),和第t+1帧中被跟踪对象dj∈D(D包含了N个对象)希望从O和D中学习区别特征,然后基于成对的特征相似性找到正确的匹配。
在这里插入图片描述
整体结构分为3个部分,3D Appearance/Motion Feature Extraction也就是3D提取器,2D Appearance/Motion Feature Extraction也就是2D提取器,Graph Neural Network for Data Association也就是图网络
这里首先做了一个操作,就是对每帧使用一个目标检测检测出各自帧下的对象和它们的bounding box,作为一个数据预处理,接下来做的就是得到每帧对象下的对应关系。3D的检测结果是{x, y,z,l,w, h, θ, I}(3维坐标值,长宽高,头部角,ID),2D结果是{xc, yc,w, h, I}(2维坐标值,长宽,ID)
首先是3D提取器部分
在这里插入图片描述
这里的o和d就是前面定义的,希望做的是通过一个feature extractor获得各自的外观和运动特征f,所以这里设计了一个二分支
对于外观分支这里提取了3D检测框包围的点云,然后使用PointNet获得逐点特征
在这里插入图片描述
对于运动分支这里直接使用3D检测框作为提示,也就是前面的那个7元组,对于跟踪对象o即当前帧t检测出来的对象,应当考虑的是在过去帧检测的该对象特征,所以使用带时序性的LSTM,而对于被检测对象d就是帧t+1检测出来的对象,因为跟踪对象在过去帧具有相关联轨迹,但检测对象不一定有,所以这里对d构造了一个MLP来获取特征
在这里插入图片描述
在这里插入图片描述
总的来说,即对第t帧的被跟踪对象,聚合特征=PointNet的点云逐点特征+LSTM得到的对象包围框特征。对第t+1帧的被检测对象,聚合特征=PointNet的点云逐点特征+不带时序性的t+1帧被检测对象包围框的特征,即在这里插入图片描述
然后是第二个部分,2D提取器
在这里插入图片描述
很显然这里使用的结构跟上面是很类似的,仅仅只有几个不同的地方,包围框从7元组换成了4元组,提取逐点特征的网络换成了VGG提取图像特征,而3D点云换成了从图像的包围框中直接裁剪出来的图像patch,其他理解与3D提取器完全相同
然后就是将上面2部分提取出来的结果进行特征融合,这里的做法就是简单的按帧进行concat,就是对第t帧的2D聚合特征和3D聚合特征直接从concatenate起来作为该帧的最终特征
最后就是第三部分,图结构部分
在这里插入图片描述
首先自然是图的构造,这里的输入是前面得到的第t帧下的m个对象的聚合特征,第t+1帧下的n个对象的聚合特征,于是就能构造一个包含了m+n个节点的图,每个节点的点特征就是各自的聚合特征。然后是边的构造,因为这里设计的是要找到t和t+1帧之间的关系,所以只需左右两边连边,并且设定了一个阈值,只有当两帧间某对象的检测中心距离小于阈值(3D和2D均小于),才于二者间连边
在这里插入图片描述
然后就是关联度计算和特征更新
首先是计算节点之间的关联度
在这里插入图片描述
这里的nit表示第t帧的第i个对象节点,后面的同理,σ是linear层,这里其实就是构造一个MLP来计算两个节点之间的相似度
在这里插入图片描述
这里就能得到一个矩阵A,称之为亲和矩阵∈RM×N
然后是点特征更新,常见的方法就是根据点邻域进行特征更新,这里列举了几种更新方法
在这里插入图片描述
这里的N(I)表示的就是第i个节点的邻域(都在第t+1帧那一边的邻居)这里的σ就都是linear层了。简单理解一下这四个,第一个就是对邻域特征经MLP后叠加聚合。第二个是在第一个的前提下再构造一个MLP附带上自身的信息。第三个是对邻域特征和自身特征的差值做MLP聚合。第四个是在第三个的基础上加了attention权重。这里是选择了效果最好的第四种
在这里插入图片描述
最后就是训练网络的LOSS,这里设计了两个LOSS,batch triple loss批量损失Ltri,affinity loss亲和力丧失损失Laff
首先是第一个损失,为了学习用于匹配的鉴别特征
在这里插入图片描述
这里的n跟前面定义的相同表示的是一个节点的点特征,α是阈值,这里假设的是nit和njt+1具有相同的对象id,而和nst+1即另外的节点的对象id不同,另外的nrt也同理。
简单来说,这里的三次损失也是常见的成对损失,目的是为为了让正对特征差距较小,负对特征差距较大。
在这里插入图片描述
然后是亲和力损失,这里训练的面对对象是前面得到的亲和力矩阵A,这个损失由两个损失组成
在这里插入图片描述
首先是Lbce,这名字一看就是二次的cross-entropy分类损失了,这里的Ag就是GT的亲和矩阵(是以二次形式展现的,1即统一对象,0反之),然后直接逐元素对预测的矩阵A进行分类对比
除此之外还设置了另外一个损失,因为这里已知了一个条件,对于第t帧的每个对象o在t+1帧仅仅只有可能有一个对应,也就是矩阵Ai这一行绝对是一个one-hot向量,所以设计了第二个损失
在这里插入图片描述
这里就是为了限制预测的矩阵A往one-hot矩阵的方向靠近
在这里插入图片描述
简单来说,这个LOSS就是为了使帧之间对应关系的代表,亲和矩阵A尽可能的接近于GT
然后对每一帧LOSS相叠加
在这里插入图片描述

总结

1.又是一个跨模态的做法,文章写得贼好懂,一连串下来结构也展示的非常清晰,不过我在想是不是可以不仅仅考虑t帧和t+1帧时刻的图,而附加上t-1帧时候的图,这样能够更好的监测一些快速移动或者慢速移动的对象物体,而且在特征聚合上可以做很多的改进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值