AI 科技评论按:本文首发于知乎行人重识别专栏,AI 科技评论获其作者郑哲东授权转载。
1.Motivation
近年来,对行人重识别(person re-ID)问题的研究也越来越多了。类比于自然语言处理(nlp)的话,大家或者集中于语义层面的设计(比如设计 loss,triplet loss,identi+verif loss),或者集中于语法层面上(利用人体的内在结构,比如水平切割,pose预测)。
这篇文章集中于语法层面上,也就是利用人体结构来增强识别能力。现阶段行人重识别的发展一部分是归因于大数据集和深度学习方法的出现。现有大数据集往往采用自动检测的方法,比如 DPM 来检测行人,把行人从背景中切割出来。或者花钱,邀请很多标注者一起来抠人,标注数据。
那么我们如何定义什么样的二维变换是好的变换呢? 需要额外的监督信息来学习么,比如行人 pose 的 groundtruth?
不需要额外的信息标注。 本文提出一个想法,直接用我们识别人这个信息就好了。 因为 行人对齐和行人识别是可以互利互惠的两个问题。 当我们做行人识别的时候,行人人体是高亮的(可以见如下的热度图),背景中不含重要信息,自然就区分出来了。所以我们可以依此来把人体抠出来,预测输入的变换方式。 而反过来,当行人数据对齐得好的时候,行人识别也可以识别得更准。 达到互相帮助的目的。
下图为对齐的效果 (上一行为原始检测,下一行为对齐后的结果)。可以看到我们的方法对于两种常见检测错误都有作用,过多背景(比如把树和操场也包含了) 和 部件缺失(比如腿没了)。 在对齐后,图像输入回到了同一个尺度(比如人脸大小差异不是那么大了),更容易做人与人之间的比较。
2.Method
实验方法也相对直接。网络包含两个 CNN 分类网络 蓝色部分(Base Branch + Alignment Branch),一个映射预测网络 橙色部分(Affine Estimation)。
接下来我们按顺序来介绍。
Base Branch 其实就是一个传统的 finetune 的 ResNet。在 Market1501 中包含 751 个不同行人的训练数据,故在示例图像中,最后 fc 是到 751 类,执行行人识别的预测。
而 Affine Estimation 其实也是一个 CNN,输入为 base branch 的 Res4 Block 的输出(大小为 14x14x1024),其中已经蕴含了对人体的 attention(可视化就是刚才的热度图), 输出为 6 维的向量 θ。
如果大家熟悉二维仿射变换的化,其实这 6 维向量 θ 也没什么神秘的。就是下面这个公式中的 xy 变换对应的系数而已。
我们可以将这个变换应用于原图(224x224x3),不过,网络前几层都是用来提取边缘信息,基本可以共享,所以实际上在设计中,我们直接把这个变换应用在 Res2Block 的输出上(56x56x256),在仿射变换之后得到的的输出也为(56x56x256).
现在我们再把另一个分类网络(图中下半部)接上去。输入 56x56x256 的 tensor, 也执行一个 751 类分类就好了。
好,为了帮助理解,我们再反过头思考一下这个网络是怎么 work 起来的。进行一下梳理。
在反向传播的时候,因为只有两个 loss,流向如上图。红色为第一个分类 loss,第二个 loss 为从调整过的输入这边过来的分类 loss。而关键的 θ 其实也是由第二网络的 loss 来进行调整,也就是一开始说的,利用识别行人的 loss 来指导 行人对齐网络的学习,不需要额外的标注信息。
3.Experiments
光用识别人的 loss 真的可以有效果么?一开始我们也担心这个。如下为实验中,将θ应用于原图得到的效果。在三个数据集(两个自动检测,一个人为标注)上,我们都可以看到调整后的效果。虽然也有限,但还是有些我们希望的效果。(背景过多的,我们切掉; 背景过少,缺部件的,我们用 0 来填,0 就是图中的黑色像素。)这样可以减轻后面分类网络的压力,make it easy。
量化的行人重识别指标也都不错。(注:其中 cuhk03 跑的是新的 test setting,图像一半训练一半测试,所以指标相对低一些)
在 Market 上 对齐以后的结果,并没有超过原来的 base 的结果。这可能是 market 真的有太多剧烈的变化了,检测结果 bias 大。 反而是在一些人为抠行人的数据集上,我们一开始会认为没有太大提升。但对齐后往往可以有 3% 的 rank1 提升,说明网络克服相对小的 bias 很拿手。
另外, 当我们把 base 和 alignment 两个网络的 embedding 接在一起,可以进一步提升效果,在一些数据集上达到了state-of-the-art。
4.额外实验
另外,还是比较好奇,这样训练出来网络的对齐是不是真的靠谱。所以我们用不断变小的输入,来看这个对齐是不是鲁棒。实验效果如下面这些 gif。左侧是输入,右侧为对齐后的结果。
更多细节可以在论文对应 github上找到。
领取专属 10元无门槛券
私享最新 技术干货