失踪人口回归 ????. 如果觉得本文对您有所帮助的话,可以给我的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.方法:多粒度超图的学习

   整体的网络框架如图所示:
基于视频的行人再识别(7)--MGH(CVPR2020)

2.1多粒度特征提取

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

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

2.2多粒度超图

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

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

  超边的传播:
基于视频的行人再识别(7)--MGH(CVPR2020)
  如上图所示,基于超图,我们设计了一个超图神经网络(HGNN)来传播图信息和更新节点特征。给定一个节点viv_i,使用Adj(vi)={e1,e2,...,eki}Adj(v_i)=\{e_1,e_2,...,e_{ki}\}来表示包含该节点的所有超边.。这些超边包含与viv_i节点相关性最高的节点。然后在超边上定义一个聚合操作,以捕获特征相关性。
具体地,我们将除节点viv_i以外的超边中的所有节点特征进行平均操作,作为超边的特征.
mikl=jivjekhjl1,ekAdj(vi)(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)
式中,hjl1h_j^{l-1}表示HGNN第l1l-1层的节点特征vjv_j。然后,通过计算节点特征和超边特征之间的相关性,来评估每个超边的重要性。
zik=ϕ(hil1,mikl)(4)z_{ik}=\phi(h_i^{l-1},m_{ik}^l)\qquad \qquad \qquad(4)
式中,ϕ\phi用于计算特征之间的相似性(本文采用余弦距离).然后利用Softmax函数对重要性权重进行归一化,接着聚合超边信息。
γik=exp(zik)jexp(zik)(5)\gamma_{ik}=\frac{exp(z_{ik})}{\sum_{j}exp(z_{ik})}\qquad \qquad \qquad(5)
nil=kγikmikl(6)n_i^l=\sum_{k}\gamma_{ik}m_{ik}^l\qquad \qquad \qquad(6)
  获得超边的信息之后,通过concat之前的节点特征和超边特征信息,使用一个全连接层来更新节点特征.
hil=σ(Wl[hil1,nil])(7)h_i^l=\sigma(W^l[h_i^{l-1},n_i^l])\qquad \qquad \qquad(7)
式中,WlW^l是一个权重矩阵(FC),σ\sigma是一个**函数。重复上述特征更新步骤L轮,获得一系列的特征节点输出Op={hiL},ekAdj(vi)O_p=\{h_i^L\},\forall e_k\in Adj(v_i).

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

3.损失函数

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

4.结果

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

5.总结

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

结语

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

相关文章:

  • 2021-07-12
  • 2021-10-25
  • 2021-06-12
  • 2022-12-23
  • 2021-12-07
  • 2021-04-11
  • 2021-06-28
猜你喜欢
  • 2021-05-13
  • 2021-05-25
  • 2021-08-11
  • 2022-01-12
  • 2021-06-26
  • 2021-05-04
  • 2021-06-30
相关资源
相似解决方案