Transferable Joint Attribute-Identity Deep Learning for Unsupervised Person Re-Identification阅读总结

Transferable Joint Attribute-Identity Deep Learning for Unsupervised Person Re-Identification(TJAIDL)阅读笔记

这篇文章时第一次在无监督跨域reid之中引入属性的paper。

最经典的属性reid的文章当然是ZL老师组的:Improving Person Re-identifification by Attribute and Identity Learning(APR),这篇paper不仅是第一篇在reid中引入属性的,还标注Market和Due的属性,贡献很大。
但思想很简单:
在这里插入图片描述
图很清楚的描述了整个过程:一条支路做reid的IDE分类,另一条支路分为M条子支路,每条子支路做一个属性的二分类。然后所有损失相加(多任务)。

到那时,其实有不合理的地方。所有任务共享CNN的backbone,也就是说用于reid的支路的特征也必须用在属性分类支路。也就导致CNN学的特征必须既有利于属性分类,又有利于reid,最后就只能到底一个折衷的共享空间,即都能做,但都不强。

于是本文作者抓住这一点,提出了TJAIDL。怎么做的?
在这里插入图片描述

大体上还是一样,但最明显的是CNN的backbone用了两个,每个CNN都专注于自己分支的任务。上分支专门做reid,保证鉴别力。下分支做属性分类,但其实也包含了用于reid的信息,为什么这么说呢?这是因为其和c模块之间的损失做到的。具体地, x i d x_{id} xid送给IIA模块,编码出一个更能表示行人ID最关键信息的特征,与此同时,由于IIA模块是重建 x i d x_{id} xid,因此不需要目标域的id标签,只要输入样本,经过a自然会得到 x i d x_{id} xid(当然目标域就不会有 L i d L_{id} Lid损失的监督)。之后, e I I A e_{IIA} eIIA这个与ID高度相关的特征属性分支的特征提取结果(这个分支用 L a t t L_{att} Latt监督来的,因此学习到属性信息)做 L I D − t r a n s f e r L_{ID-transfer} LIDtransfer损失监督。这个损失不像 L i d , L r e c , L a t t L_{id},L_{rec},L_{att} Lid,Lrec,Latt那样常见(分别是交叉熵,MSE,交叉熵损失),给出其定义如下:
在这里插入图片描述
不难看出其实也是一个MSE损失,其致力于让属性预测分支提取的特征与ID分支的结果很近似。什么意思?

其实作者这里和APR有相通之处,也有明显的区别。APR中,属性和ID共享同一个特征空间,也就可以最终目标是让ID特征中包含属性信息,属性特征中包含ID信息。但作者指出,这样是不对的,但不对的是ID特征中包含属性信息,因为ID特征不够纯粹,也就不够鉴别力。而至于属性特征中包含ID信息,那我们根本不care,因为我们并不做属性,属性只是在辅助,污染就污染了吧(当然,如果两者高度独立,只具有对应关系,效果应该会更好)。作者的模型也是这么做的:

首先ID分支,作者让其与属性分支独立,于是设计用两个CNN backbone,而不是一个;其次,就是污染部分,作者通过让ID相关信息( e I I A e_{IIA} eIIA)和属性信息做MSE损失以尽量接近,那就导致属性特征中包含了ID信息,当然,这种污染也是必要的,因为属性是为了辅助ID,如果属性不和ID之间建立任何联系,那加了属性和没加也就没有区别。而这里作者选择 e I I A e_{IIA} eIIA和属性信息做MSE损失就更加高明了,因为直接用 x i d x_{id} xid和属性信息做MSE损失,那就个APR没什么区别,同样导致属性信息中有ID信息,ID中也有属性信息,这是我们不希望看到的。作者通过IIA的处理就有效避开了这一点:其让 e I I A e_{IIA} eIIA这个ID信息中包含属性信息,属性信息中包含 e I I A e_{IIA} eIIA的ID信息,这样就不会直接去污染 x i d x_{id} xid,同时又建立了ID和属性的联系。当然, e I I A e_{IIA} eIIA肯定也是会在BP时污染到 x i d x_{id} xid,但就比直接污染的影响小多了。

最后,还有一个 L a t t , I I A L_{att,IIA} Latt,IIA没有解释,其到底是干嘛的?
这一块也很简单,由于前面我们说 e I I A e_{IIA} eIIA的ID信息中其实包含了属性信息,但这个属性信息只是通过MSE损失得到的,如果只是MSE的话就很玄乎,会得到一个平滑的结果,未必是真实利于属性分类的,于是不妨用 e I I A e_{IIA} eIIA直接去像 x a t t + I D x_{att+ID} xatt+ID那样做一个属性预测,也就是属性分类任务,那样就能有效强化其中属性的信息。
对比两处属性预测:
在这里插入图片描述
在这里插入图片描述
其中:
在这里插入图片描述
在这里插入图片描述

基本上是一样的。

最终IIA模块的损失为:
在这里插入图片描述
用以更新IIA模块,其中:
在这里插入图片描述

属性分支的损失为:
在这里插入图片描述
用以更新属性分支(加上 L I D − t r a n s f e r L_{ID-transfer} LIDtransfer的目的是让属性分支的信息中包含ID信息,也就是属性分支中是 x a t t + I D x_{att+ID} xatt+ID而不是 x a t t x_{att} xatt的原因)。注意这里:在源域时, L a t t L_{att} Latt的GT就是真实属性标签,但在目标域时, L a t t L_att Latt其实没有属性标签,于是作者充分利用了 e I I A e_{IIA} eIIA中的属性信息,对用 e I I A e_{IIA} eIIA做属性预测/分类的结果(式5中的 p I I A p_{IIA} pIIA,但只取该软标签,不打成one-hot的硬标签)作为属性伪标签,来给 L a t t L_{att} Latt当作GT。如下图:
在这里插入图片描述
红色箭头表示拉近距离。

ID分支的损失为:
在这里插入图片描述
用来更新ID分支。不过在目标域的时候,就不能更新,只能forward了(没有ID标签)。

于是,整个算法流程如下:

在这里插入图片描述

最后就是效果了:
在这里插入图片描述
在Market上达到了58的跨域rank@1,其实是很不错的效果了,而且还是第一次在跨域中引入属性,很新颖。

消融:
在这里插入图片描述
独立监督指的是两个支路分别训练,然后对两个支路的结果直接concat作为行人特征;联合监督指的是APR那样的。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值