【行人重识别】Part-Aligned Bilinear Representations for Person Re-identification论文阅读

Part-Aligned Bilinear Representations for Person Re-identification



0 论文简介

该论文从整体上看,主要就是采用了一个two-stream的网络结构,对行人进行重识别。

1 论文主要技术

1.1 网络结构

这里写图片描述

对于一张输入的图片,同时在两个分支中计算。第一个分支用于提取Appearance map,也就是人体的表面表征图。第二个分支用于提取Part map,也就是人的肢体关键点的表征图。对于表征图,一种直观的看法就是一种热力图,表明该位置的置信度。
在两个分支中分别计算后,会得到两组特征图,分别是AP,然后将这些特征图并联Bilinear pooling,得到特征向量f,最后采用l2正则化进行normalization得到输出结果。
对于网络结构,第一个分支采用GoogleNet-V1结构,第二个分支采用OpenPose的前三个stage
本文提出了一个双线性池化层。对于输出的特征图A与特征图P,先进行双线性转换,然后再进行空间全局池化。对于池化层没有太多区别,主要就是对于一个矩形范围内的所有输出进行平均池化。主要的改变在与将 pxy p x y 向量与 axy a x y 向量采用叉乘方式进行融合。公式如下:

fxy=vec(axypxy)f=poolingxy{fxy}=1Sxyfxy f x y = v e c ( a x y ⊗ p x y ) f = p o o l i n g x y { f x y } = 1 S ∑ x y f x y

此时已经得到了融合后的特征图,再进行一次归一化处理。
f˜=f||f||2 f ~ = f | | f | | 2

联立上面的公式:

f˜xy=vec(a˜xyp˜xy)a˜xy=axy||f||2p˜xy=pxy||f||2f˜=1Sxyf˜xy f ~ x y = v e c ( a ~ x y ⊗ p ~ x y ) a ~ x y = a x y | | f | | 2 p ~ x y = p x y | | f | | 2 f ~ = 1 S ∑ x y f ~ x y

可视化效果:
这里写图片描述

1.2 损失函数

损失函数采用三元损失函数进行训练,对于一个人体分别使用 Iq I q 表示查询数据, Ip I p 表示正样本数据, In I n 表示负样本数据。 (Iq,Ip) ( I q , I p ) 表示是一个相同身份的人,而 (Iq,In) ( I q , I n ) 表示不同身份的人。对于样本分别定义为: f˜q f ~ q f˜p f ~ p f˜n f ~ n 。三元损失可以定义为下面:

triplet(f˜q,f˜p,f˜n)=max(m+sim(f˜q,f˜n)sim(f˜q,f˜p),0)sim(x,y)=<x,y>=1||(Iq,Ip,In)triplet(f˜q,f˜p,f˜n) ℓ t r i p l e t ( f ~ q , f ~ p , f ~ n ) = m a x ( m + s i m ( f ~ q , f ~ n ) − s i m ( f ~ q , f ~ p ) , 0 ) s i m ( x , y ) =< x , y > L = 1 | T | ∑ ( I q , I p , I n ) ∈ T ℓ t r i p l e t ( f ~ q , f ~ p , f ~ n )

其中 m m 是一个平衡系数,设置为0.2。

1.3 计算相似度

对于输出结果的近似度,可以分解为每一个区域内部的近似度,也就是遍历每一个像素位置。

simI(I,I)=<f~,f~>=1S2<xyf~xy,xyf~xy>=1S2xyxy<f~xy,f~xy>=1S2xyxysim(f~xy,f~xy)

两张图的S区域,共有S*S中组合方式,并不是对应计算。于是对于一个区域S,可以转换为特征向量的近似度,但是特征向量是根据A网络和P网络计算出来的特征图经过融合归一化得到的。所以可以再次进行下一步的分解。

sim(f˜xy,f˜xy)=<vec(a˜xyp˜xy),vec(a˜xyp˜xy)>=<a˜xy,a˜xy><p˜xy,p˜xy>=sim(a˜xy,a˜xy)sim(p˜xy,p˜xy) s i m ( f ~ x y , f ~ x ′ y ′ ′ ) =< v e c ( a ~ x y ⊗ p ~ x y ) , v e c ( a ~ x ′ y ′ ′ ⊗ p ~ x ′ y ′ ′ ) > =< a ~ x y , a ~ x ′ y ′ ′ >< p ~ x y , p ~ x ′ y ′ ′ > = s i m ( a ~ x y , a ~ x ′ y ′ ′ ) s i m ( p ~ x y , p ~ x ′ y ′ ′ )

1.4 对比普通模型

普通算法没有关键点预测这个分支,无法映射出关键点的近似度。 pxy p x y 表示 (x,y) ( x , y ) 位置是否是关键点。

pxy=[δ[(x,y)R1],...,δ[(x,y)Rk]] p x y = [ δ [ ( x , y ) ∈ R 1 ] , . . . , δ [ ( x , y ) ∈ R k ] ]

其中 Rk R k 表示第k个关键点的bbox。
δ[x]=1 if x is true otherwise 0 δ [ x ] = 1   i f   x   i s   t r u e   o t h e r w i s e   0

2 实验与分析

2.1 训练过程

对于该双分支的网络结构,实际训练的过程中仅仅只对一个网络流分支进行梯度传播。训练过程只需要人体重识别数据集而不需要人体关键点数据集。在识别人体关键点的网络中使用openpose的训练好的参数矩阵进行初始化。因此只需要最小化reid过程的损失值。

2.2 复现细节

在人体关键点估计分支中输出结果是185-维度,19-维度关键点信度图,38-维度肢体维度(19-x,19-y)和128-维度的特征。输出结果经过一个3x3的卷积层加BN层, 输出是128维特征图。
在GooleNet中,输入时160x80的图像,输出后经过1x1卷积加BN层得到一个512维的输出结果。
将两个结果聚合成512维度的特征向量。不过对于如此高维度的算法计算时对内存的占用率非常大,因此采用一种tensor sketch的方式进行计算。对原始向量进行随机投影获取低维度的向量。tensor sketch过程
训练过程使用SGD算法,learning-rate设置为0.1,weight-decay设置为0.003,momentum设置为0.9。学习率采用自适应降低,随着迭代次数的增加,学习率会逐渐变小。每一次的batch为180,18个身份各10张图。每一次迭代的三元损失对有10*10*(180-10)*18,大约为 3105 3 ∗ 10 5

2.3 验证数据集

Market-1501
CUHK03
CUHK01
DukeMTMC
MARS

验证方式是采用(1)mAP (2)CMC

这里写图片描述

3 解决的问题及对应方案

问题一
由于视角转换和姿态的可变性较强以及检测算法的不可靠性,导致了人体关键点失配的情况。
解决方案
结合openpose进行关键点定位和校准。每一个part-aligned都是使用双线性池化将全局特征图关键点特征图结合得到的。也就是一种十分鲁棒的图像近似度匹配。

问题二
采用人体关键点检测的其他意义。
解决方案
可以提取每一个身体部位的bbox。

Procrutes-Aligned,中文为普鲁克里特斯对准,是一个术语,常用于描述某种标准或规范下的对齐或一致性。 源自希腊神话中的普鲁克里特斯(Procrutes),他是一个残忍的强盗。他有一张铁床,他会邀请过路人入住。如果过客身高超过床的长度,普鲁克里特斯会迫使过客削下自己的脚或头,使其适配床的大小。相反,如果过客身材不够床的长度,普鲁克里特斯会折磨过客直到符合床的大小。 因此,当我们提到"Procrutes-Aligned"时,意味着我们正在寻求一种对齐或调整以满足某种预定的规范或标准。这可以应用于各种领域和情境,如设计、工程、软件开发等。 在设计领域,一个Procrutes-Aligned的设计可能是指遵循特定的尺寸、比例或几何关系以满足特定的审美或功能要求。这意味着设计必须进行某种调整或修改,以在整体上符合这些要求。 在工程领域,Procrutes-Aligned可能指遵循特定的标准、规范或安全要求来进行设计和建造。这意味着工程必须按照这些要求进行调整,以确保达到特定的性能和质量标准。 在软件开发中,Procrutes-Aligned可以指遵循特定的编码规范、设计模式或软件工程实践来编写代码。这意味着开发人员必须符合这些规范和标准,以确保代码的合理性、可读性和可维护性。 总之,Procrutes-Aligned是指根据特定的规范、标准或要求进行调整和对齐的过程。无论是在设计、工程还是软件开发中,这种对齐和调整是为了确保最终产品或结果能够达到特定的要求和期望。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值