Partial Person Re-identification with Part-Part Correspondence Learning
行人重识别中的部分对部分的对应学习
论文地址:Paper
解决的问题
将重点放在识别部分(有缺陷的)输入,借助部分-部分对应学习(PPCL),这是以种自监督学习框架,无需任何额外的部分级监督即可学习图像块之间的对应关系。同时将本文的模型应用于人脸识别中,效果也能提高。
文章概述
本文提出一个部分-部分对应学习(PPCL)解决部分行人重识别问题。提出门控布局整流器(GLRec)和相应的区域定位器(CRLoc)
GLRec:门控变换回归CNN模块,输入为拍摄的任意图像 x p x^p xp,输出具有预测仿射变换系数的校正效果 x r x^r xr。**减少输入空间,获得具有适当比例和布局的校正部分图像。**为了测量矫正后的部分图像和参考图像之间的相似性,通过主干网络提取它们的空间特征并使用CRLoc模块根据部分图像在参考图像中产生相应的patch,最后仅基于共享的语义对应区域来计算两幅图像之间的相似度。
训练CRLoc模块,提出两种self-training的训练:
Part-Part Cycle constraint(PP-Cycle):利用功能的双重性来寻找相应的区域,假设如果CRLoc模块能够根据 x r x^r xr预测而y中相应的patch,那么它也能转换回 x r x^r xr。
Part-Part Triplet constraint(PP-Triplet):对于给定的部分输入,利用两个图像块之间的最佳对应区域的唯一性。将给定的部分输入视为锚,CRLoc模块的输出视为正样本。和参考图像的随机采样的负样本,形成一个三元组约束。
我们的方法期望根据给定的部分查询图像在参考图像上自动找到语义上对应的区域,而无需任何额外的监督。它还提供了新的见解函授学习部分部分匹配。
实验结果
数据集
Market-1501上训练,Partial-REID和Partial-iLIDS数据集上测试。
- | Market-1501 | Partial-REID | Partiak-iLIDS |
---|---|---|---|
图像数 | 32668个 | 600个 | 238个 |
身份数 | 1501个 | 60个 | 119个 |
特征 | 6个摄像机each image | 5副全身5副具有不同视点的背景图像each identity | 一副全身和一副局部each identity |
部分图像是通过裁剪同一个人图像的未遮挡部分生成的。
度量标准使用CMC累计匹配特征曲线来评估性能。
模型配置
GLRec:选择轻量级的ResNet18作为主干,负责输出4个自由度的几何变换和1个自由度的门控训练。
GLRec:使用自监督的方式进行训练。
特征提取采用ResNet-50作为主干网络。使用交叉熵损失和三重损失来优化re-ID主干。三重损失有hard mining strategy。
实验结果
PPCL的作用主要有两部分组成:1)GLRec可以获取任意的输入并且提供修正之后的结果。2)CRLoc将局部图像和整体图像之间的对应区域关联起来,并在度量相似性时剔除不相关的区域。
我们的方法显示了两个关键的优点:1)我们不依赖任何细粒度的标签,如关键点或分割图,或训练有素的模型,隐含编码额外的监督。2)由于PPCL是位姿不可知的,我们能够将它推广到处理任意输入,即使输入比率低于30%。 基于姿势的方法在极低的输入比率下会失败。
PPCL具有部署在更复杂的真实世界场景中的优点,尤其是在姿态估计不成功的情况下。
消融实验
GLRec和CRLoc
1)部分输入直接用于常数填充并送入到主干网络
2)部分输入直接调整大小并直接送到主干网络
3)只使用GLRec模块
4)同时采用GLRec和CRLoc
通过自适应的识别和调整部分输入图像的比例和位置,本文的方法优于baseline
PP-Cycle和PP-Triplet
只使用其中的一个训练GLRec和CRLoc模块得到的结果,单独应用其中一个既有利于CRLoc模块的学习,又基于GLRec模块产生了显著的性能增益。
当将两个约束结合在一起时(PPCL),它们仍然以显著的优势相互促进,表明这两个项目在部分-部分对应学习上是互补的。
定性分析
PP-Cycle根据给定的输入利用功能的双重性(duality of functionality)来寻找相应的区域。如果一个人可以找到从一个图像到另一个图像的相应区域,它必须能够执行反向定位,并且相应的补丁对在向前-向后扭曲后匹配它们自己。
实验中假设CRLoc模块生成对应区域总是最优区域,因此最优对应对之间的相似性总是大于次优区域。使用PP-Triplet使得次优对应对被随机采样。而PP-Cycle更像是PP-triple的正则化项,使其在训练过程中保持稳定。因此,这两个制约因素共同促成了PPCL。
PPCL
PPCL可以处理任意输入。首先改变部分图像的输入比率,当输入比率足够大(>0.5)仅适用PP-Cycle红线优于仅适用PP-Triplet绿线。输入比率较小时时,PPTriplet>PP-Cycle。
GLRec模块配备了门控方面,能够自动区分部分和整体图像。
损失函数
损失函数的平衡项通过消融实验得到 λ c y c = 10 , λ t r i = 1 \lambda_{cyc}=10,\lambda_{tri}=1 λcyc=10,λtri=1.
GLRec模块能够将部分输入与整体图像粗略对齐,但对于给定的部分输入,学习区域是固定的,不能定制为参考图像,这带来了很大的对应噪声。相比之下CRLoc模块能够准确、自适应的提出不相关的部分区域。
我们的GLRec模块通过常识成功地预测了布局(蓝色边界框)(腿通常出现在图像的底部),但是在遮挡的情况下失败,因为它不能根据参考图像校正相应的区域。而我们的PPCL(红色边界框)能够将参考图像考虑在内,并学习适应各种场景的图像对之间的对应关系。
时间分析:
GLRec是轻量级的,CRLoc只包含3个卷积层和1个全连接层,在计算每对图像的相似度时,我们只对之前生成的特征图执行CRLoc,而不是运行整个模型。
算法原理
所提出的PPCL框架主要包括一个门控布局整流器,包括R、G、T (GLRec)、主干网络F和相应的区域定位器L (CRLoc)。GLRec模块是一个门控变换回归CNN模块,它接收任意部分图像,并输出校正结果。然后利用特征提取模块进行特征提取,然后利用特征匹配学习模块进行零件间的匹配。GLRec和CRLoc模块都是以自我监督的方式进行训练的,以获得两幅图像之间的相应补丁,而无需任何部件级监督。
给定输入人物图像 x p ∈ χ p x^p \in \chi^p xp∈χp,首先得粗略预测他在整体图像中属于哪个区域,模型使用GLRec模块产生一组仿射变换系数,指示在特征提取之前应该如何变换部分输入。为了根据给定的部分输入 x p x^p xp定位参考图像中的相应区域,提出PP-Cycle约束和PP-Triplet约束协同训练的CRLoc模块。最后在相应部分区域中计算部分输入图像和参考图像之间的相似性。
模型架构
x p x^p xp部分图像 x r x^r xr整张图像
GLRec(Gated Layout Rectifier):看局部图像是否出现在整体图像中的意思,如果为完整输入则不用管,若为部分输入则用变换恢复为校正的对应图像。
组成:回归模块R:由堆叠卷积层和全连接层组成。负责则给定 x p x^p xp的放射变换系数t和部分图像置信度 η \eta η: [ t , η ] = R ( x p ) , R : R h × w × c → R n + 1 [t,\eta]=R(x^p),R:\mathbb R^{h \times w \times c} \rarr \mathbb R^{n+1} [t,η]=R(xp),R:Rh×w×c→Rn+1,h,w,c代表 x p x^p xp的高宽和通道,n是几何变换的自由系数,输出则是置信度得分(0,1),表示输入是否是这一部分图像。
门模块G:开关作用,若 η ≥ 0.5 \eta \geq 0.5 η≥0.5则认为输入图像是完整的输入且保持不变 x r = x p x^r = x^p xr=xp。否则认为是部分输入。然后利用仿射变换将部分图像 x p x^p xp恢复为校正的对应图像,几何变换模块T: x r = T ( x p , t ) x^r = T(x^p,t) xr=T(xp,t).
非参数的几何变化模块t。
GLRec优势:训练阶段通过随机裁剪训练图像样本来模拟部分输入,从而得到已知的变换系数t。自监督损失在批量B的条件下可表示为:
L
R
=
1
B
∑
i
=
1
B
∣
∣
R
(
x
i
p
)
−
t
∣
∣
2
2
\mathcal L_R = \frac 1 B \sum^B_{i=1}||R(x^p_i)-t||^2_2
LR=B1i=1∑B∣∣R(xip)−t∣∣22
为了简单起见,省略了
η
\eta
η它与标准二元交叉熵损失一起优化。
特征提取:输入为上一步得到的图像经过去掉全连接层的ResNet50主干网络,得到下采样的特征图 h p r h^r_p hpr, x r ∈ χ r x^r \in \chi^r xr∈χr,r代表修正的图像。使用 L F \mathcal L_F LF作为损失函数训练模型。
对应区域定位器:对于部分的图像输入,最大的挑战是找到输入对应的区域。该模型的作用是:**将 h x r , h y h^r_x,h_y hxr,hy**作为输入,根据前者输入后者的区域: h x → y = L ( h x r , h y ) h_{x \rarr y}=L(h^r_x,h_y) hx→y=L(hxr,hy),括号内共享着相同的语义。
首先计算括号里面的相关性来获取信息特征。
L
f
(
h
x
r
,
h
y
)
=
e
x
p
(
h
x
r
(
u
)
h
y
(
v
)
⊤
)
∑
v
exp
(
h
x
r
(
u
)
h
y
(
v
)
⊤
)
L_f(h^r_x,h_y) = \frac {exp(h^r_x(u)h_y(v)^{\top})} {\sum_v \exp(h^r_x(u)h_y(v)^{\top})}
Lf(hxr,hy)=∑vexp(hxr(u)hy(v)⊤)exp(hxr(u)hy(v)⊤)
u和v是隐藏表示中空间位置。生成的相关图能够引起对参考要素的交叉关注,而不是简单地连接在一起而没有任何指令。
最后设计
L
l
L_l
Ll根据相关图为给定图像产生相应的区域。它的输出是在后者中找到相应区域的精确坐标。
L
(
h
x
r
,
h
y
)
=
L
l
(
L
f
(
h
x
r
,
h
y
)
)
L(h^r_x,h_y)=L_l(L_f(h^r_x,h_y))
L(hxr,hy)=Ll(Lf(hxr,hy))
PP-Cycle (Part-Part Cycle Constraint)
训练CRLoc模块,假设最佳补丁对在前向-后向扭曲后可以相互匹配。若CRLoc模块能够根据
x
r
x^r
xr定位到对应的区域y中的
h
x
→
y
h_{x \rarr y}
hx→y,那么自然就可以翻译回来得到原来的
x
p
x^p
xp。所以对每一个batch,随机shuffle,对所有
x
i
n
X
,
y
∈
Y
x \ in \mathcal X,y \in \mathcal Y
x inX,y∈Y,将此输入到F总分别提取空间特征和高度特征,
h
x
r
=
F
(
x
r
)
,
h
x
=
F
(
x
)
,
h
y
=
F
(
y
)
h^r_x = F(x^r),h_x = F(x),h_y = F(y)
hxr=F(xr),hx=F(x),hy=F(y)
注意
X
,
Y
\mathcal {X,Y}
X,Y属于训练集合中随机采样的原始数据,而不是GLRec模块中随机处理过的。在shuffle后可能y的batch size和x不同,这里需要进行PPCL处理。
L p p , c y c l e = l ( h x → y → x , h x ) \mathcal L_{pp,cycle} = l(h_{x \rarr y \rarr x,h_x}) Lpp,cycle=l(hx→y→x,hx)。l是转换后网格点的均方误差MSE。
PP-Triplet(Part-Part Triplet Contraint)
三重损失目的是学习一种保持相似数据点之间的距离接近和不同数据点之间距离远离的数据表示。PP-Triplet倾向于使对应区域对之间的相似性大于不相关区域对之间的相似性。
h
x
r
h^r_x
hxr是一个anchor,由L对应
h
x
→
y
h_{x \rarr y}
hx→y被视为正样本,PP-Triplet可以被表示为:
L
p
p
_
t
r
i
p
l
e
t
=
1
B
∑
i
=
1
B
[
∣
∣
h
x
r
−
h
x
→
y
∣
∣
2
2
−
∣
∣
h
x
r
−
h
y
∗
∣
∣
2
2
+
α
]
\mathcal L_{pp\_triplet} = \frac 1 B \sum^B_{i=1}[||h^r_x-h_{x \rarr y}||^2_2-||h^r_x-h_{y*}||^2_2+\alpha]
Lpp_triplet=B1i=1∑B[∣∣hxr−hx→y∣∣22−∣∣hxr−hy∗∣∣22+α]
其中,
h
y
∗
h_{y*}
hy∗是负样本对,
α
\alpha
α是正负样本对之间强制的余量。
三元损失中负样本是随机采样的:1)正负样本之间的重叠必须低于预定的阈值 β \beta β,这保证两个样本来自不同的区域。2)如果二者之中一个涉及到另一个,那个重叠比例也应该低于 β \beta β,这减少了与锚无关的噪声区域。本文根据经验设为0.5。
一般来说,三元组损失允许语义上对应的区域位于同一流上,同时扩大了到无关区域的距离。
训练性能
损失计算为:
L
L
=
λ
c
y
c
L
p
p
_
c
y
c
l
e
+
λ
t
r
i
L
p
p
_
t
r
i
p
l
e
t
\mathcal L_L = \lambda_{cyc}\mathcal L_{pp\_cycle} + \lambda_{tri}\mathcal L_{pp\_triplet}
LL=λcycLpp_cycle+λtriLpp_triplet
在测试中,只测量由GLRec和CRLoc模块生成的语义对应区域之间的距离。
总结(自己的理解)
-
PPCL主要包括两部分:
- 门控布局整流器:负责为部分输入图像预测合适的布局
- 相应区域的定位器:学习根据另一个数据样本在一个数据样本中找到相应的区域。
-
缺少零件及标签,提出两个约束:PP-Cycle和PP-Triplet。使用自我监督的方式训练相应的区域定位器。
- PP-Cycle
- PP-Triplet
-
模块之间的作用
- CRLoc模块能够准确、自适应的提出不相关的部分区域。
- GL-Rec是看局部图像是否存在与整体图像中,并且看其是否需要变换。
-
PPCL能够将参考图像考虑在内,并学习适应各种场景的图像对之间的对应关系。可以处理遮挡情况下的行人重识别问题。