当前位置:   article > 正文

lstm原始论文_论文盘点:基于图卷积GNN的多目标跟踪算法解析

lstm原始论文
2241c20e5d99838693be869b7bf13433.gif

©PaperWeekly 原创 · 作者|黄飘

学校|华中科技大学硕士

研究方向|多目标跟踪

随着这两年 GNN 的发展,其对于关系的建模特性也被引入了多目标跟踪领域,这次我通过对这两年基于 GNN 的 MOT 算法的介绍来分析其特点。相关 MOT 和数据关联的基础知识可以去我的专栏查看。 61f260030aafb1cde8c14f3e30e9a041.png

EDA_GNN

8325434182bd71f9b1644625949bf956.png

论文标题: Graph Neural Based End-to-end Data Association Framework for Online Multiple-Object Tracking

论文来源:CVPR 2020

论文链接:https://arxiv.org/abs/1907.05315

代码链接:https://github.com/peizhaoli05/EDA_GNN

9033fc65fcb5178587890e4bfe266970.png

从算法的示意图可以看到,作者通过一个孪生网络求得了观测目标 j 与当前目标轨迹 i 的表观相似度,然后取目标轨迹的历史位置为输入,通过 LSTM 得到预测的位置,计算该位置与观测目标位置的运动相似度,两个相似度结合构建相似度矩阵。

至此,所有目标轨迹与观测目标的相似度构成了一个二部图,以目标和观测信息作为节点,相似度作为边权,表观特征和位置信息拼接作为节点属性特征。

然后基于消息传递机制,作者通过 GNN 的网络框架实现对节点特征的更新:

530c980304c5244bd125bcd81b48daf8.png

邻接矩阵的 normalization 采用的是 row-wise softmax,即对相似度矩阵进行逐行 softmax,可以用注意力的方式来理解,W 为待学习的权重。最后通过一个激活函数 ReLU 实现特征的更新。对于边权关系的更新则是简单地利用 MLP 将两个节点特征的差转换为标量。
2c09299523f3dc3eba903fa93ebeee7f.png

在训练的时候,损失函数由三部分组成:

1af99a1748287289ff8fc9b309f6863a.png
1283b1930fbd72fb5a63de6a78019d99.png
5af9490337e159122a61a81d44551db0.png
其中第一部分是预测得到的关联矩阵的分类损失,第二部分则是将 groundtruth 中的关联对取出,计算分类损失,第三部分是将新出/消失的目标单独取出,计算 MSE 损失。

cb6969f61a68749b18117541ee805cc7.png

DAN cd10a90283ca41b4e950ea7d92cdb12c.png

论文标题:Deep association: End-to-end graph-based learning for multiple object tracking with conv-graph neural network

论文来源:ICMR 2019

论文链接:https://dl.acm.org/doi/pdf/10.1145/3323873.3325010

这里的 DAN 并非我之前提过的 DAN,其整体流程跟 EDA_GNN 基本一样:

0935d8bbfd268b2ce6c5a994f9c54186.png

都是先提取表观和运动特征,由此构建网络图,通过 GNN 得到最终的关联矩阵。首先相似度矩阵怎这里用的是 IOU 信息:

07e30221e3926fd5d8e6ccec2fa6c193.png

IOU 后面的部分是帧间差,如果目标存在跨帧链接,那么间隔越久,相似度越低。不过 DAN 与 EDA_GNN 不同的是,并没有将图结构构建为二部图,而是将跟踪节点和观测节点统一为节点集合,因此邻接矩阵/相似度矩阵就变成了 (m+n)x(m+N),这就是最基础的 GNN 网络结构了。所以节点特征的更新就是:

72af1d961143bf66d50948496342167f.png

邻接矩阵的更新为:
e05c232c17c2e4c638cb1ba7d824a480.png

损失函数为 Graph Loss,即对正负链接边权的交叉熵损失函数:

3b69125055339a98092282c7f338a439.png

结果如下:

f4e14646476353340ed997aaeaef2caf.png

321e57df80afe28025dc123d74d4d5a0.png

GNMOT 17ec4a0bb5e4878f28df7391dfc4f6d4.png

论文标题:Graph Networks for Multiple Object Tracking

论文来源:WACV 2020

论文链接:http://openaccess.thecvf.com/content_WACV_2020/papers/Li_Graph_Networks_for_Multiple_Object_Tracking_WACV_2020_paper.pdf

代码链接:https://github.com/yinizhizhu/GNMOT

首先我们看看算法流程:
30f40b5ee7538fda31b0fff0fd7eee21.png

可以看到,GNMOT 的不同在于表观和运动部分分别采用了 GNN 网络,二者结合得到的是相似度矩阵,由此输入数据关联部分。关于 GNN 网络的更新流程,作者设计了 4 步:

c5908aa75f43a9e27c695e2522bfbd94.png

其中第一次边和节点的更新都是通过两层 FC 进行更新的。第三次的全局更新这里,作者引入了一个全局变量 u,先计算所有节点的特征均值和边权均值,再通过两层 FC 进行更新。这里的 u 会在出现在所有更新过程中,作为一个调节量。

a4a7b6abc6e15792fad68782c1a1dcca.png
30407d00467ca657c083b040f749f5d6.png

最后一次的边权更新则是在两层 FC 之后再加了一层 softmax 层。

8b24c945c9c7a1c70b568b55d27b7dd5.png

a73983fd02f1a523e02e53a4cf7f5d23.png

MPN Tracker ee9e5cfddad024896811ea27af5764fc.png

论文标题:Learning a Neural Solver for Multiple Object Tracking

论文来源:CVPR 2020

论文链接:https://arxiv.org/abs/1912.07515

代码链接:https://github.com/selflein/GraphNN-Multi-Object-Tracking

我之前也介绍过这篇文章,但是之前不懂 GNN,所以只能做搬运工,现在学习了 GNN,所以就再次分析一下。首先是图的构建,图节点由所有帧的所有目标构成,直接将观测信息作为节点,没有跟踪,只有关联。

节点属性特征由训练得到的表观特征和几何特征构成,其中几何特征为位置和形状。并且定义表观特征距离用欧氏距离度量,几何特征距离用下面的公式度量:

690d68a71322098144cb68aea8c0d469.png

时间特征自然就是帧数,这几个特征通过一个 MLP 网络得到最终的特征表达。

边的连接自然就是跨帧节点存在连接,而同一帧节点不存在连接,边权的设定就是上面的距离度量。也就是说,这相当于一个端到端的离线跟踪框架。

0320dcf6ce3935bfbdbd356b7f17747f.png

消息传递机制中,对于边权的更新和节点的更新方式如下:

856c9f4f16512d81ea3cf89a7ad4f702.png 其中对于边的更新就是由节点特征和原始边权通过 MLP 过程更新的。对于节点的更新,由于一个节点连接有多条边,所以需要进行聚合,聚合方式可以求和、取平均,还可以是取最大值。而更新的代数 L 自然也就决定了图卷积网络的感受野,当 L 越大时,与之相关的节点在时间跨度上越大。
ede67b5b826595bdd8119dc96e3b2034.png

上面这个图从左往右是不同时间帧的节点,这里举的例子是一个相邻三帧的节点连接。原始的更新机制中,对于节点的更新会将周围边的影响通过求和的方式聚合。而这里作者考虑了时间因素,将时间分为了过去和未来两个部分:

59c750ca73c24f4f5cbb84268bfd21ca.png
40d15e19a755142c6a7a669d4f94dd71.png
bfcd10a60ca0ac2590fe726485e875ba.png

然后通过拼接的方式聚合,最后利用 MLP 结构实现特征降维。

可以看下消息传递代数的影响:

4b3749924075cf8bbc3a7264cabb8a6e.png

我们发现在 3 代的时候就已经达到了性能上限,不过为了保证鲁棒性,作者还是选了 12.

不得不说离线的方法在 IDF1 指标上的表现很好:
c21b5c15554cd3b212667b632dd0cac8.png
PS:大家可能对于第一张图中的 Edge Classification 有疑惑,即如何实现的边的稀疏化。这里由于每条边权都经过了一个 sigmoid 层,因此作者直接利用固定阈值 0.5 进行了裁剪。

3a8bf6af3d819cd51dd939eed491530a.png

GNN3DMOT a130e9c00f344b58be0b2a26f3ab057f.png

论文标题:Graph Neural Network for 3D Multi-Object Tracking with Multi-Feature Learning

论文来源:CVPR 2020

论文链接:https://arxiv.org/abs/2006.07327

代码链接:https://github.com/xinshuoweng/GNN3DMOT

从这篇开始,接下来的全是这个组的文章。这篇文章所涉及的算法框架很完整,值得一读:

5283a76ee50d242c33fdbe4a034c5eee.png
算法流程通过这张图可以很容易得到,运动特征是通过 LSTM 网络回归得到的,表观特征是通过 CNN 网络得到的,二者相拼接。其中 3D 部分的输入则是点云信息和 3D 位置信息,o 表示物体,d 表示检测。将 2D 和 3D 特征拼接/相加得到每个节点的特征。而节点自然就是上一帧存在的目标和当前帧的观测。

对于边权/相似度矩阵的确定,作者尝试了三种方式,余弦距离、欧氏距离还有网络回归,即上图中的 Edge Regression:

539692c047fcc40ab5a95367462fbae5.png

当然这个也是边权更新的机制,而对于节点 消息传递机制,作者也设计了四种:

4ea7eede1aac589b7eaf1bf4fe2fc999.png

方法很明了,我就不细讲了,可以看到聚合方式都是求和。另外由算法框架示意图可知,每次消息传递都会计算关联矩阵的损失,那么为什么会采用 batch triplet loss呢?

9c39a0618f35203b55745f96533143a8.png

作者把关联矩阵中的每条边权看作了 N 对匹配,三元组损失中,首先选取相邻帧中的一对连接 i,j,然后分别选取不同 id 的两帧节点 r,s,计算上述损失。即要保证不同帧间不同 id 身份的边权的最小距离越大越好。而对于相似度损失,则是采用了两种交叉熵损失:

4005ebd7af8601f31db418b009510bbb.png
22428a47ad6c797b1275df3534e4467f.png
94012eb0173768466a48fbc2cd7beb7c.png
效果如下:
cad8cf318e784ed642b2031d408446d8.png
0205ebdab237017723488e8ee196063a.png

可以看到利用网络回归的方式得到的相似度度量方式要比余弦距离和欧氏距离好, 2D 和 3D 特征融合的方式更优,结合了关联矩阵和节点差异的聚合方式,即 Table7 中的 type4 更优。

6e7925a91d77d7cc6397bf5c216a8990.png

GNNTrkForecast

4c80166174645d3f1f02518cb3fc110b.png

论文标题:Joint 3D Tracking and Forecasting with Graph Neural Network and Diversity Sampling

论文链接:https://arxiv.org/abs/2003.07847

代码链接:https://github.com/xinshuoweng/GNNTrkForecast

89d4996e3cc1359cf47b205df115748b.png

这篇论文里面,作者通过 GNN 将 3D MOT 和轨迹预测结合在一起了。其中对于 GNN 网络的构建以及关联矩阵的获取跟之前的论文几乎一致,具体我们就不介绍了:

f50c27d90f36cdf43d4cb4d0c3f0dda2.png

那么 3D MOT 分支实际上就是 GNN 模型中的一部分,是根据 GNN 的边权矩阵进行数据关联:

65785a8d6a6a63e18ce9ca2badce10eb.png
而对于轨迹预测分支,作者基于条件自编码器的形式,设计的流程图如下,由于这块我不熟悉,所以我就不细讲了。
256181a1cfb7e22cdfd6930b4ced82e4.png

效果如下:

19111a8ac72a5200c8a26f78c8c5d984.png
a8aa0f3ebfbc80a546f20e369bb65b46.png

584251b8a6e84b1da7dc98617fe2cb7e.png

JDMOT_GNN

a2791c14a93a6bb377dc2615abab4400.png

论文标题:Joint Detection and Multi-Object Tracking with Graph Neural Networks

论文链接:https://arxiv.org/abs/2006.13164

也许是看到最近联合检测和跟踪的框架很热门,作者团队又给加入了 GNN 模块,所以我们简单提一下:

97da511ae6bb67c1cab1fb6a7b23cc7c.png

最开始的表观和运动特征部分就不提了,一个是 LSTM/MLP 回归,一个是 Darknet53 回归得到的。图的构建依旧是以检测框和目标作为节点,节点特征的更新则是:

1ddc0c3890cacc77cf9694fe2c526962.png

这里面要注意的是两个 head,其中检测 head 的是根据各节点特征利用 MLP 降维得到用于分类和回归的特征。而数据关联 head 则是边权,它的确定是依据节点特征的差异,通过三层全连接得到的:

04ecb15bf95ff093cfca0867473d8004.png

最终效果如下:

d5d52e591afd70fafd06fa13b766e75c.png
可以看到单纯用 GNN 做数据关联的提升并不大,当然,这里并没有做消融实验,也不能妄下评论。 ca7cb203-9c35-eb11-8da9-e4434bdf6706.svg

参考文献

ca7cb203-9c35-eb11-8da9-e4434bdf6706.svg [1] Jiang X, Li P, Li Y, et al. Graph Neural Based End-to-end Data Association Framework for Online Multiple-Object Tracking[J]. arXiv preprint arXiv:1907.05315, 2019. [2] Ma C, Li Y, Yang F, et al. Deep association: End-to-end graph-based learning for multiple object tracking with conv-graph neural network[C]//Proceedings of the 2019 on International Conference on Multimedia Retrieval. 2019: 253-261. [3] Jiahe L, Xu G, Tingting J.Graph Networks for Multiple Object Trackin[C]//The IEEE Winter Conference on Applications of Computer Vision (WACV).2020. [4] Brasó G, Leal-Taixé L. Learning a neural solver for multiple object tracking[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 6247-6257. [5] Weng X, Wang Y, Man Y, et al. GNN3DMOT: Graph Neural Network for 3D Multi-Object Tracking with Multi-Feature Learning[J]. arXiv preprint arXiv:2006.07327, 2020. [6] Weng X, Yuan Y, Kitani K. Joint 3d tracking and forecasting with graph neural network and diversity sampling[J]. arXiv preprint arXiv:2003.07847, 2020. [7] Wang Y, Weng X, Kitani K. Joint Detection and Multi-Object Tracking with Graph Neural Networks[J]. arXiv preprint arXiv:2006.13164, 2020.

更多阅读

7416aaf074b5e9528e10cc7b5ac1a2ea.png

6beea7f550a8857e5734f6759a9bac72.png

d80fff8ecda611fcc7aa4cdf4661d972.png

dede768fdc5bc621ec35f27b7f079c50.gif

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

?

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

771c1909ffa146973fee3eae96517617.gif

5bf244e229c5f1f841fd70542b5db841.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/1015907
推荐阅读
相关标签
  

闽ICP备14008679号