基于视频的行人再识别(7)--MGH(CVPR2020)

失踪人口回归 😃. 如果觉得本文对您有所帮助的话,可以给我的github点个赞呀~本人有空会更新一些视频行人再识别的相关资料,比如代码注释、论文翻译等等。
github:https://github.com/AsuradaYuci/awesome_video_person_reid

1.Learning Multi-Granular Hypergraphs for Video-Based Person Re-Identification

   CVPR2020关于video reid的有3篇,性能都有较大幅度的提升,其中2篇是基于图(graph), 这篇是其中一篇,学习多粒度超图(MGH)。
   视频行人再识别是计算机视觉领域的一个重要研究主题。解决这个具有挑战性任务的关键在于:在视频序列中同时利用空间和时间线索。
   在本文中,提出了一个新颖的基于图(Graph)的网络框架,多粒度超图(Multi-Granular Hypergraph(MGH)),通过在多个粒度方面,对时空依赖性进行建模,来追求更好的表征能力。
   具体地,在视频序列中,使用不同层次的部分特征(分part)来构建具有不同空间粒度的超图。在每个超图中,连接跨不同时间范围的一系列图节点的超边(hyperedges),捕获不同的时间粒度。
   最后,通过互信息最小化(mutual information minimization),学习多粒度的更多样化图层次的表征,进一步增强整体的视频表征。

2.方法:多粒度超图的学习

   整体的网络框架如图所示:
在这里插入图片描述

2.1多粒度特征提取

  给定一个包含T帧的图象序列 I I I={ I 1 , I 2 , . . . , I T I_1,I_2,...,I_T I1,I2,...,IT},使用一个CNN网络(Resnet50)来提取一个单独的特征图: F i = C N N ( I i ) , i = 1 , . . . , T ( 1 ) F_i=CNN(I_i),i=1,...,T \qquad \qquad \qquad(1) Fi=CNN(Ii),i=1,...,T(1)

  式中, F i F_i Fi是一个维度为 C ∗ H ∗ W C*H*W CHW的三维张量(C是通道数,H和W分别为特征图的高度和宽度)。接着将这个特征图进行水平分割,分割成 p ∈ p\in p{1, 2, 4, 8}(类似于PCB),对分割后的特征图进行平均池化操作,构建part-level的特征向量。
  整个序列生成 N p = T ∗ p N_p=T*p Np=Tp个part-level的特征, part-level的特征定义为 h 0 = h^0= h0={ h 1 0 , h 2 0 , . . . , h N p 0 h_1^0, h_2^0,...,h_{N_p}^0 h10,h20,...,hNp0}。如上图所示,在每一个视频帧中,第一个粒度包含一个全局特征向量,而第二和第三个粒度则包含2个和4个的part-level的特征。

2.2多粒度超图

  在提取每一帧的初始全局和部分特征(初始节点特征node feature)之后,下一步是通过学习不同节点之间的相关性,来更新节点特征。为了生成可靠的表征,必须同时考虑各个特征的空间和时间相关性。为了探索序列中的空间和时间依赖性,HGNNs允许节点通过图中的消息传递与其邻居进行通信。与标准图模型相比,超图(hypergraphs)可以对涉及多个节点的高阶相关性进行建模,这更适合于对序列中的多粒度相关性进行建模。

  超图的构建:
  我们提出通过构建一系列的超图 G = G= G={ G p G_p Gp} p ∈ { 1 , 2 , 4 , 8 } _{p\in\{1,2,4,8\}} p{1,2,4,8}来捕获时空依赖。这里每个超图对应一个特定的空间粒度。具体来说, G p = ( V p , ε p ) G_p=(V_p,\varepsilon_p) Gp=(Vp,εp) N p N_p Np个顶点 V p V_p Vp和一系列超边 ε p \varepsilon_p εp组成。这里我们利用 v i ∈ V p v_i\in V_p viVp, i ∈ { 1 , . . . , N p } i\in \{1,...,N_p\} i{1,...,Np}来表示图节点。我们定义一系列的超边来建模超图中的短时和长时相关性。如果要学习短期相关性,一个超边仅与时间上相邻的特征相连。通过链接不同时间长度的特征,超边对中长期的相关性进行建模。具体而言,对于每个图节点 v i v_i vi,根据节点之间的特征相似度,我们可以找到这个节点在特定时间范围内的K个最近邻。然后,我们用一个超边将这 K + 1 K+1 K+1个节点连接起来.
e i t = { v i , ∀ v j ∈ N K ( v i ) } , s . t . ∣ v i − v j ∣ ≤ T t ( 2 ) e_{it}=\{v_i, \forall{v_j}\in{N_K(v_i)}\},s.t.|v_i-v_j|\le{T_t}\qquad \qquad \qquad(2) eit={vi,vjNK(vi)},s.t.vivjTt(2)
  式中, N K ( ) N_K() NK()是包含前K个近邻的邻居集, ∣ ∗ ∣ |*| 表示序列中顶点之间的时间距离 T t T_t Tt是时间范围的阈值。在论文中,采用3个阈值(例如 T 1 , T 2 , T 3 T_1,T_2,T_3 T1T2T3)来进行短时,中时,长时的依赖建模。

  超边的传播:
在这里插入图片描述
  如上图所示,基于超图,我们设计了一个超图神经网络(HGNN)来传播图信息和更新节点特征。给定一个节点 v i v_i vi,使用 A d j ( v i ) = { e 1 , e 2 , . . . , e k i } Adj(v_i)=\{e_1,e_2,...,e_{ki}\} Adj(vi)={e1,e2,...,eki}来表示包含该节点的所有超边.。这些超边包含与 v i v_i vi节点相关性最高的节点。然后在超边上定义一个聚合操作,以捕获特征相关性。
具体地,我们将除节点 v i v_i vi以外的超边中的所有节点特征进行平均操作,作为超边的特征.
m i k l = ∑ j ≠ i v j ∈ e k h j l − 1 , ∀ e k ∈ A d j ( v i ) ( 3 ) m_{ik}^{l}=\sum_{j\neq i}^{v_j\in e_k}h_j^{l-1}, \forall e_k\in Adj(v_i)\qquad \qquad \qquad(3) mikl=j=ivjekhjl1,ekAdj(vi)(3)
式中, h j l − 1 h_j^{l-1} hjl1表示HGNN第 l − 1 l-1 l1层的节点特征 v j v_j vj。然后,通过计算节点特征和超边特征之间的相关性,来评估每个超边的重要性。
z i k = ϕ ( h i l − 1 , m i k l ) ( 4 ) z_{ik}=\phi(h_i^{l-1},m_{ik}^l)\qquad \qquad \qquad(4) zik=ϕ(hil1,mikl)(4)
式中, ϕ \phi ϕ用于计算特征之间的相似性(本文采用余弦距离).然后利用Softmax函数对重要性权重进行归一化,接着聚合超边信息。
γ i k = e x p ( z i k ) ∑ j e x p ( z i k ) ( 5 ) \gamma_{ik}=\frac{exp(z_{ik})}{\sum_{j}exp(z_{ik})}\qquad \qquad \qquad(5) γik=jexp(zik)exp(zik)(5)
n i l = ∑ k γ i k m i k l ( 6 ) n_i^l=\sum_{k}\gamma_{ik}m_{ik}^l\qquad \qquad \qquad(6) nil=kγikmikl(6)
  获得超边的信息之后,通过concat之前的节点特征和超边特征信息,使用一个全连接层来更新节点特征.
h i l = σ ( W l [ h i l − 1 , n i l ] ) ( 7 ) h_i^l=\sigma(W^l[h_i^{l-1},n_i^l])\qquad \qquad \qquad(7) hil=σ(Wl[hil1,nil])(7)
式中, W l W^l Wl是一个权重矩阵(FC), σ \sigma σ是一个激活函数。重复上述特征更新步骤L轮,获得一系列的特征节点输出 O p = { h i L } , ∀ e k ∈ A d j ( v i ) O_p=\{h_i^L\},\forall e_k\in Adj(v_i) Op={hiL},ekAdj(vi).

在这里插入图片描述
  注意力超图特征聚合:
  获得每个超图(空间粒度)的最终更新的节点特征之后,我们需要将每个超图的节点(part-level)特征聚合为图(视频)层次的表征。在选择聚合方案时,我们应该考虑到,不同节点的重要性是不同的(比如,遮挡和背景部分的节点的重要性肯定低于行人身体部位),因此有必要设计一个特定的注意力机制来解决这一问题。在这里插入图片描述
提出了一个注意力模块,为每一个超图生成节点层次的注意力,以选择最具区分性的part-level特征。对于每一个超图,根据以下公式计算节点的注意力 α p = { α 1 , . . . , α N p } : \alpha_p=\{\alpha_1, ...,\alpha_{N_{p}}\}: αp={α1,...,αNp}:
u i = W u h i L u_i=W_uh_i^L ui=WuhiL
α i = e x p ( u i ) ∑ j e x p ( u j ) \alpha_i=\frac{exp(u_i)}{\sum_jexp(u_j)} αi=jexp(uj)exp(ui)
式中, W u W_u Wu是一个权重矩阵.然后,对节点特征进行加权求和得到超图的特征.
h p = ∑ v i ∈ V p α i h i L h_p=\sum_{v_i\in V_p}\alpha_ih_i^L hp=viVpαihiL

3.损失函数

文章除了采用三元组损失函数和 S o f t m a x Softmax Softmax交叉熵损失函数来训练网络,为了得到多样化的水平分割后的图特征,还引入了信息论中的最小化互信息损失函数。我们的目的是减少来自不同超图的特征之间的互信息,从而通过连接所有特征来增加最终视频表征的判别性。
定义拥有 p p p个空间分割的图层次特征为 H p = { h p i } i = 1 N c H_p=\{h_p^i\}_{i=1}^{N_c} Hp={hpi}i=1Nc, N c N_c Nc为训练集中的tracklets数目.互信息损失定义如下:
L M I = ∑ p , q ∈ { 1 , 2 , 4 , 8 } p ≠ q I ( H p , H q ) L_{MI}=\sum_{p,q\in\{1,2,4,8\}}^{p\neq q}I(H_p, H_q) LMI=p,q{1,2,4,8}p=qI(Hp,Hq)
式中, I I I表示计算不同超图之间的互信息.
最终损失:
L a l l = L x e n t + L t r i + L M I L_{all}=L_{xent}+L_{tri}+L_{MI} Lall=Lxent+Ltri+LMI

4.结果

在这里插入图片描述

5.总结

  视频行人再识别发展到现在,性能刷的越来越高,Mars数据集上mAP85.8是真的高,我虽然rank1也做到过90,但mAP最高83.9。不过这篇文章在小库上的性能并没有那么夸张。总的来说,发顶会的话,传统基于注意力那一套创新性好像不太够了(估计reviewer 看到attention这个词就索然无味了),所以目前也是比较难做的.这篇文章整了个图结构,其实还是注意力那一套,换了个名字,突出了创新性.最近很多基于图的工作(CVPR还有另一篇也是基于图的,感觉名字都差不多,哈哈),但开源代码很少,我也没复现过,有机会深入了解一下.硬拼performance不是一个好出路(机器得强,batch_size影响挺大的),找些新鲜的,做的人少的方向(遮挡reid,半监督,无监督)试试,也许是个不错的选择。

结语

最后打个广告,我收集了近几年的一些视频reid论文以及相应的代码,放在我的github中:[链接],欢迎大家star和fork,有空会继续更新的, 谢谢啦。

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值