行人重识别0-02:DG-Net(ReID)-论文翻译,详细解说(2)

以下链接是个人关于DG-Net(行人重识别ReID)所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号 海量资源。 \color{blue}{ 海量资源}。 海量资源

行人重识别0-00:DG-Net(行人重识别ReID)-目录-史上最新最全:https://blog.csdn.net/weixin_43013761/article/details/102364512

极度推荐的商业级项目: \color{red}{极度推荐的商业级项目:} 极度推荐的商业级项目:这是本人落地的行为分析项目,主要包含(1.行人检测,2.行人追踪,3.行为识别三大模块):行为分析(商用级别)00-目录-史上最新无死角讲解

紧接上篇

直接接着上篇博客进行讲解,废话不多说,当然,得把上节得图示再复制一下:
在这里插入图片描述

Primary feature learning(主要身份特征). 把生成图片作为训练样本,由于交叉ID合成图片的多样性,我们采取了带软标签教师-学生监督学习。首先采用一个教师模型,动态的分配一个软标签给 x i j x_i^j xij,其混合生成的 x i j x_i^j xij,外观来自 x i x_i xi,结构来自于 x j x_j xj

教师网络是一个简单的,使用identification loss的线性CNN网络,在原始训练数据集上面,让身份鉴别器Ea(或者外观编码器)学习鉴别模式的 primary feature,我们把鉴别模块的预测 p ( x j i ) p(x^i_j) p(xji)概率分布,与教师网络预测的 q ( x j i ) q(x^i_j) q(xji)概率分布之间的差异性降到了最低:
(7) L p r i m = ξ [ − ∑ i = 1 K q ( k ∣ x j i ) l o g ( p ( x j i ) q ( x j i ) ) ] L_{prim}=\xi[-\sum_{i=1}^Kq(k|x^i_j)log(\frac {p(x^i_j)}{q(x^i_j)} )] Lprim=ξ[i=1Kq(kxji)log(q(xji)p(xji))]该loss就是为了让生成图片ID的概率值,和真实图片ID的概率值相近。K表示的是什么ID的数字编码,与一般的one-hot编码标签,或者经过平滑的one-hot编码相比,动态的软标签更加适合我们的情况,对于每张合成的图片,其内容都是来自于两张真实图片的组合。根据实验结果显示,一个简单的线性CNN教师模型去提供这个动态的软标签,能改进模型的性能。反正一句话在,就是让教师模型,教我们的Ea身份鉴别模型分类。

Fine-grained feature mining(细致身份特征). 除了直接使用生成的数据学习primary feature之外,还有一个有趣的方案,那就是模仿相同人衣服的改变。如Figure 1
在这里插入图片描述
当用这种组织成的图片进行训练的时候,会迫使鉴别模型去学习身份ID的细节,如头发,身体大小,帽子等),其识别过程会把衣服独立开来。就是说,用这样数据去训练模型,即使行人的衣服不一样,还是能够判断出是不是同一个人。

我们观察,通过一个st code与不同ap codes合成多个同一个人的图像,其合成图片被看作与st code是同一个人,或者一个类别。 训练鉴别模块的fine-grained feature(细节特征)采集,我们使用的是identification loss:
(9) L i d s = ξ [ − l o g ( p ( y i ∣ x i ) ) ] L^{s}_{id}=\xi[-log(p(y_i|x_i))] Lids=ξ[log(p(yixi))]
这种损失额外的为鉴别模块添加了身份监督,此外,他不像之前的一些之前的方法,通过手动标记行人属性,我们的方法会自动从合成的图像中采集细节属性(fine-grained attribute),进一步对比艰难取样的一些方法,不需要去找一些困难的样本(带有详细细节)进行训练。因为我们的鉴别模型可以学习到细节纹理特征的采集。

Discussion 我们认为高质量的合成图片,在自然中,能被看作是"inliers(内围层,与outliers相反)。生成模块生成的图像,总是会改变一些真实图像的一些内容,通过两个特征学习任务,鉴别模块通过对ap code与st code的控制,对在线生成的数据进行了特定的利用。而不是与之前的方法一样,仅仅是使用一个单一的监督。我们通过两个不同的角度,即primary feature 学习与fine-grained feature采集两个方面进行训练。前者注意的是服装不变的信息,后面注重外貌结构不变的信息。

上面时翻译,翻译得其实还行,但是不一定能细致得了解,我给大家总结一下:
1.用了一个学习教师网络,去教Ea(鉴别器)学习主要得身份特征,对一个人的识别。
2.如果主要学习到的特征,判断不出来,我们就细致的去观察,学习到细致的特征。

红牌警告,第二个重难点: \color{#FF0000}{红牌警告,第二个重难点:} 红牌警告,第二个重难点:
思想:就好比你认识一个人,假如你去看一个人,一眼没有认出来,那么肯定就去很细微的去观察,或者是观察眼镜,或者是头发颜色,等等其他的东西。那么这种思想,用代码怎么思想的呢?请看我后续的代码详解博客。

3.3. Optimization

我们同时训练外貌与结构的编码,解码器(appearance and structure encoders,decoder),并且鉴别器会去优化全局所有的目标,所以我们定义了总和的loss:
(10) L t o t o l ( E a , E s , G , D ) = λ i m g L r e c o n i m g + L r e c o n c o d e + L i d s + λ i d L i d c + L a d v + λ p r i m L p r i m + λ f i n e L f i n e L_totol(E_a,E_s,G,D)=\lambda_{img}L^{img}_{recon}+L^{code}_{recon}+L^s_{id}+\lambda_{id}L^c_{id}+L_{adv}+\lambda_{prim}L_{prim}+\lambda_{fine}L_{fine} Ltotol(Ea,Es,G,D)=λimgLreconimg+Lreconcode+Lids+λidLidc+Ladv+λprimLprim+λfineLfine
这个鬼,真的难敲。其中的 L r e c o n i m g = L r e c o n i m g 1 + L r e c o n i m g 2 L^{img}_{recon}=L^{img1}_{recon}+L^{img2}_{recon} Lreconimg=Lreconimg1+Lreconimg2,是self-identity (自ID)生成图片的loss, L r e c o n c o d e = L r e c o n c o d e 1 + L r e c o n c o d e 2 L^{code}_{recon}=L^{code1}_{recon}+L^{code2}_{recon} Lreconcode=Lreconcode1+Lreconcode2是latent code通过cross-identity生成器重构的loss, λ i m g , λ i d , λ p r i m \lambda_{img},\lambda_{id},\lambda_{prim} λimg,λid,λprim λ f i n e \lambda_{fine} λfine是控制各种loss之间联系的权重。遵循图像生成的惯例,针对图像重构loss,我们使用了一个比较大的权重 λ i m g = 5 \lambda_{img}=5 λimg=5,因为通过cross-id生成的图片质量,最开始的时候并不是很好,同时 L i d c L^c_{id} Lidc可能会让训练不稳定,所以我们设置 λ i d = 0.5 \lambda_{id}=0.5 λid=0.5,在所有训练过程中,这两个中值都是固定没有改变的。在生成图像没有之前,鉴别器都没有进行 L p r i m , L f i n e L_{prim},L_{fine} Lprim,Lfineloss的学习,例如,在Market-1501数据上进行训练的时候,经过30K迭代之后,才添加 L p r i m , L f i n e L_{prim},L_{fine} Lprim,Lfineloss的学习。在加入 L p r i m , L f i n e L_{prim},L_{fine} Lprim,Lfineloss,使用线性增长0~2(在4K次迭代之前),并且设定 λ f i n e \lambda_{fine} λfine= 0.2 λ p r i m 0.2\lambda_{prim} 0.2λprim

4. Experiments

我们对上述的的研究进行了评估,遵循基准数据的标准协议:Market-1501,DukeMTMC-reID,MSMT17(应该都是数据集)。定性并且定量的对比了目前最先进的生成和鉴别结果。大量的实验证明DG-Net产生了更加真实,多样性的图片,此外比目前最先进的行人重识别准确率还要高。

4.1. Implementation Details

我们的网络是基于PyTorch框架的,使用channel×height×width去表示特征映射的大小:
1. E a E_a Ea(外观编码器)使用的是基于ResNet50预训练的ImageNet模型,并且移除了全局平均池化层和全连接层,然后添加了一个合适的max pooling层去输出ap code a(2048x4x1),然后通过全连接层, 被映射到primary feature f p r i m f_{prim} fprim和 finegrained feature f f i n e f_{fine} ffine
2. E s E_s Es是一个输出st code(128x64x32)的浅层网络,他由四个卷积层然后接着4个跳跃连接块组成。
3. G G G对s处理的时候,也是是个卷积加四个跳跃连接块,其中每个跳跃连接块中都包含了两个instance normalization层,将 a a a可以当作图片缩放的偏置参数。
4. D D D跟随现在流行的多尺度缩放 PatchGAN。我们采用了不同尺寸的图像进行输入,64x32,128x64,256x128。也应用了梯度惩罚,当更新D到稳定的过程中
5.对于输入图像,缩放到256x128,类似于deep re-id的方法。使用SGD优化 E a E_a Ea,其学习率设置为0.002,动能设置为0.9。应用Adam去优化 E s , G , D E_s,G,D Es,G,D,并且设置学习率为0.0001, ( β 1 , β 2 ) = ( 0 , 0.999 ) (\beta_1, \beta_2)=(0,0.999) (β1,β2)=(0,0.999)
6.在测试的时候,我们的从识别的模式只涉及到 E a E_a Ea(只使用两个轻量的头文件-就是说,仅仅对输入图像进行了ID鉴别,不过是两种)。其网络的大小和使用ResNet50作为主干网络是差不多的。联合 f p r i m f_{prim} fprim f f i n e f_{fine} ffine转化为一个1024维度的向量,作为最后的行人表示。

4.2. Generative Evaluations

Qualitative evaluations. 首先我们定性的分析在线喂食,身份监督这个两个因素。如Figure 4:
在这里插入图片描述
没有在线喂食产生的图片,得到模糊的边缘和不好的纹理。进一步移除身份的监督,生成图片的质量非常令人不满意,甚至已经不能准确的生成衣服的颜色和样式。这里明确的展现出,我们的联合生成模式是十分由利于行人重识别的。

下一步,我们还和其他先进的模型进行了比较,其中包含了无条件的 GAN (LSGAN ),开源有条件的GANs (PG2-GAN , PN-GAN,FD-GAN [10]),如
Figure 3所示:
在这里插入图片描述
通过LSGAN产生的图片,有着严重的重影子。FD-GAN倾向于产生模糊的图像,其伴随这很大的恶化效果。PG2-GAN 和 PN-GAN都是以姿势为条件,产生真实的图像,但是依旧包含了视觉模糊,和部件背景的模糊。相比之下,我们的模型,产生的图片更加真实,无论是背景还是前景。

为了模型更好的学习外观特征空间,因为这是行人表示的基础,我们在外观code和对应生成的图像之间,使用了一个线性插值的方法,如Figure 5:
在这里插入图片描述
线性插值的结果,证实了外观空间的连续性,展现出我们模型的空间泛化能力,并不是对图片进行简单琐碎的记忆。作为补充研究,在保证ap code一致的情况下, 也在两个st code之间通过线性插值生成了图片,我们生成模式的展示结果如下,在3个数据集上面:
在这里插入图片描述
DG-Net能够通过不同数据集,去产生真实,且多样的图像。
Quantitative evaluations. 我们通过定性的观察,然后使用两个指标Frechet Inception Distance (FID),Structural SIMilarity (SSIM)进行定量评估。前者是评估生成图像的真实性,后者是评估生成图片的多样性。FID测量的是生成数据和真实数据分布的接近程度,其对视觉部件十分的敏感,从而表明图像生成的真实性。对于身份条件的生成,我们利用SSIM去计算内部类(同一ID)图片的相似度,其可以用来评估生成图像的多样性。如下Table 2:
在这里插入图片描述
通过上面的对比,可以知道,无论是真实性还是多样性,我们的方法都更加的好。显示出我们生成图像的高质量。很明显的观察到,由于姿态,背景等的多样性,生成图像的SSIM值比原训练数据集要高。比如交换st code。

Limitation. 我们注意到,源数据集存在偏置,生产模块更加趋向于学习规律的细节纹理,如衣服条纹和点。不是会忽略一些少见的细节,如logs和衬衫。类似下图:
在这里插入图片描述

4.3. Discriminative Evaluations

Ablation studies. 我们首先学习primary feature 与 fine-grained feature的分布,如Table 3:
在这里插入图片描述
我们首先把原始数据设置为基线,然后使用带有identification loss的ResNet50对每个数据集进行训练,此外其还是学习primary feature的教师模型,对生成模型进行软标签标记。我们发现primary feature相对于基线有了很大的改善,也很显然,单一的fine-grained featur对身份识别是没有帮助的。后面结合primary feature与fine-grained featur有了很大的提升。

Influence of hyper-parameters 再这里,我们展示了如何去设置行人重识别的超参数:
α \alpha α:通过 λ f i n e \lambda_{fine} λfine λ p r i m \lambda_{prim } λprim在训练时候的比例,控制 L f i n e L_{fine} Lfine L p r i m L_{prim } Lprim
β \beta β:结合 f p r i m f_{prim} fprim作为最后行人测试(这段不会翻译,自己也没有看懂)
我们发现,在 Market-1501数据集上面,划分成训练(651个ID)和测试(100ID)数据集,进行训练的时候,选择 α = 0.2 \alpha=0.2 α=0.2 β = 0.5 \beta=0.5 β=0.5最为合适。

在这里插入图片描述
Comparison with state-of-the-art methods(与现在最先进的一些方法进行比较). 最后报告一下,我们的方法和最先进行人重识别方法的比较结果,如下:
Tables 4:
在这里插入图片描述
Tables 5:
在这里插入图片描述
注释:我们没有做任何后续处理,比如排序,多查询融合等等。在每个数据集上面,我们达到了最优效果。

5. Conclusion

在这篇论文中,提出了一种联合学习的框架,也就是数据生成和行人重识别的统一。在生成模块和鉴别模块之间,有一个在线的交互过程,对于他们的任务,会相互收益。这种设计,让行人重识别更好的利用生成的数据。并且在三个数据集上面,证明了我们生成的数据,以及行人从识别的准确率都是目前最高的。

终于翻译完成,相信大家看到这里也不容易,下小节我会讲解代码的评估过程,敬请期待,如果帮助到你什么,要记得给我点赞啊!

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南才尽,年少无知!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值