PCB

PCB

论文:Beyond Part Models: Person Retrieval with Refined Part Pooling,ECCV,2018

链接:论文链接

代码:PCB_RPP

背景介绍
目前利用局部特征做 Re-ID 的方法大致分为下面两类:

  1. 利用在其他数据集上训练好的姿势估计模型无监督迁移到 Re-ID 数据集上,得到局部特征的定位,根据这些提取到的关键点信息,利用图像处理(图像区域联结)的方法,得到各个部件(如头、上身,下身、手,脚等),然后基于这些分割开的部件,提取局部特征信息(part-level features),如下图CVPR2017的工作Spindle Net (http://openaccess.thecvf.com/content_cvpr_2017/papers/Zhao_Spindle_Net_Person_CVPR_2017_paper.pdf) 就利用了14个人体关键点来提取局部特征,Spindle Net直接利用这些关键点来抠出ROI;

img

2.不使用额外的类似于姿势估计的模型,因此也就不需要单独对每个人体部件进行标注,而是用统一的分块方式,最常用的就是水平切块(stripe)(例如对一个行人均匀分割为固定数目的水平块)或者采用 attention 机制去locate等。

使用第一种方法虽然可以显式的定位这些人体的部件,但是也要忍受从姿势估计这个任务迁移到行人重识别任务过程中,由于 姿势估计的数据集和Re-ID的数据集之间肯定存在很大的数据偏差(datasets bias ),从而引入了新的误差,如果通过姿势估计定位带来的提升大于引入误差导致的性能降低,那么整体也是可以接受的;但是引入姿势估计一方面是模型训练的时间消耗较大,另一方面是标注的成本增加。

这篇文章第一部分PCB模型属于第二类方法,使用得是均匀水平切块(分成6块)。且对不同part用不同loss去训练(6块对应6个loss)。但是对于均匀分割来说,一个致命的问题就是:不同图像在同一part可能因为没有对齐而出现不同的语意信息(比如第一张图的从上到下的第一个水平块对应这个人的头部,但是由于第二张图顶部有很大的背景空余,导致同一个ID的人的头部出现在第四个水平块,这样会给模型的学习带来很大的干扰)。具体可以看下面这张图:

img

因此,有一些论文就针对分块提出了对齐的策略,如AlignedReID (https://arxiv.org/pdf/1711.08184.pdf) 就提出了基于SP距离的自动对齐模型,在不需要额外信息的情况下来自动对齐局部特征。而采用的方法就是最短路径距离。

而本文作者提出了 RPP(Refined Part Pooling) 对统一分割进行精修,这也是本文的一大亮点。(给我的感觉有那么一点像目标检测里two stages的Faster RCNN,第一步先得到proposals也就是比较粗略的信息,然后通过第二步进行回归精修得到准确的信息,只不过这边的第二步利用了局部信息,相当于在全局信息上增加了attention)

摘要

背景:提取局部特征为行人描述提供了细粒度的信息,并在最近的文献中被证实有益于行人的检索,但前提是每个行人图像的各个part之间要能准确的定位到,也就是能准确定位到行人的各part 部件,不能只是严格的均匀的分割区域,否则就会有很大的对齐问题需要解决。

贡献:本文没有采用姿态估计等外部线索直接定位局部特征,而是注重各局部特征间的相关性,本文贡献如下:1、作者首先设计了新的更强的baseline网络PCB(Part-based Convolutional Baseline),输入一张行人的图片,可以得到由几个part 级别的特征得到的综合描述用于Re-ID 任务的行人匹配。

2、用于后续精修的池化部分RPP(Refine Part Pooling),统一的划分不可避免地会在每一个part中带来些误差,(比如有些part 明明更像下一部分,却因为强制划分在了上一部分去了),因此RPP重新指定和分配这些part到更接近真实part的那部分去,使得精修后的每一part更具代表性,也就是学习到更具有区分性的部件信息。

RPP加上PCB,可以达到很好的实验效果,例如在Market-1501数据街上,达到了 (77.4+4.2)% mAP 和 (92.3+1.5)%rank-1 accuracy,+号后面的数字代表加上RPP后提升的效果。

引言

主要是介绍Re-ID是在一个大的数据库里,给你一个query,检索到和这个query身份一致的人,目前大部分都是用到深度学习的方法,而且当局部特征聚合时,一般都能取得比较好的效果,最新的取得 state of the art 的方法基本都是借助了 part-informed deep features,如下图所示:

img

前面提到过,要想学习到有区分性的局部特征,一个很重要的先决条件是:各part之间要能准确的 located 到。近期的这些state of the art 的方法主要就是在行人划分partition的方法上做五花八门的改变。

作者思考如何能够使得部件更好地对齐,考虑到如果引入语义分割肯定会得到比较好的指引信息,更好地学习到局部特征,但是同时也不可避免地引入了姿势估计的误差,因此本文就从另一个角度出发,强调each part的一致性,因此作者就想到了先得到一个粗略的划分,然后通过refined来得到更好的更一致性的局部信息

Method

1、PCB: A Part-based Convolutional Baseline

本文的backbone 主要采用了ResNet50, 在 **全局平均池化GAP层(global average pooling)**之前的结构和原始的Backbone模型也就是Resnet50完全一样,主要不同在于GAP层的改变,以及Resnet50 GAP后面的层都被移除了。

img

具体实现:

当输入一张行人图片H,经过backbone网络得到 Tensor T,接着将Tensor 分为p个水平块,在对p个水平块做average pooling 得到p个局部特征g(1x1xchanel),然后在用1x1卷积降低g的维度,使其降到256维,得到新的局部特征h,最后每一个h单独经过一个全连接层,都会被单独送入一个分类器中,即用p个n分类的softmax作为分类器进行训练。

在训练阶段时,通过 最小化(minimizing)交叉熵损失函数的 sum (p个分类器p个loss) 来优化PCB的训练;

在测试阶段时,分别串联向量g和h作为行人图像的特征表示

PCB的重要参数和细节:

一些超参数如

  • 输入图像的size(H和W)
  • 深度特征 tensor T的空间size(图2中T的尺寸M和N)
  • 池化后的 column vectors 的数量(p)

对PCB的效果影响很大,因此需要选择正确的超参数

其中,深度特征tensor T的空间size (M和N 是由backbone 模型的空间降采样的比例决定的)

**同时还借鉴了目标检测中的思想,减少降采样(down-sampling)的比例可以有效的提高特征的细粒度,**作者去掉了Resnet50的最后一次down-sampling,从而增大了tensor T 的size,这是PCB取得好的效果之一,这步操作增加了很少的时间消耗,却取得了可观的准确率提升。

因此,通过实验对比,作者得出PCB的最优设置参数如下:

  • 图像 resize 到 384x128 ,图像高宽比(H:W)为3:1
  • 深度特征 tensor T的空间尺寸MxN 为 24x8
  • T最后被均等地划分为6个 horizontal stripes ,即 p 取6

2、Within-Part Iconsistency

这部分描述了part内部信息不一致的现象,揭示了这种强制划分存在的问题

因为虽然这种强制均等划分简单有效,但同样会出现不可避免地由于划分的不精准带来的part与partz之间的误差,必然会降低模型的学习区分特征的能力。

因此本文从一个新的视角去分析这种 partition errors :从 the within-part inconsistency 方面,也就是part内部的不一致性

作者认为同一个part 内的column vector 应该彼此之间相似,而不同part 之间应该有差异。(和triplet loss 相似,相同ID 的人靠近)

训练PCB到收敛后,通过比较每一个column vector f 和 g 的相似度,即测量它们之间的余弦距离,找到离每一个column vector f 距离最近的 part ,具体看下面图 ,每一个 column vector 通过一个小矩形块来表示,而且根据距离其最近的part画上不同的颜色,这样就很容易进行观察。

img

我们可以看到存在很多前面说到的误差 outliers,比如Part 1 里面有一些其他颜色的小矩形,这就说明,有些column vectors更像另一个part的,所以这样的强制均匀划分是存在问题的,需要进一步改进。

3、Refine Part Pooling

由于上面提到的存在很多的误差outliers,所以文中提出了refined part pooling(RPP)来纠正这些part内的不一致现象,目标是通过column vectors f 和其最相似的part 来对齐所有的column vectors f,让他们回到属于自己的那个part 去,这些误差outliers 就能被重新定位,找到属于它自己的位置。

更具体是,在数值上测量f 和 每一个P(part)的相似度S,然后column vector f根据计算得到的S值来重采样到最相似的那个part上,公式如下:

img

(其中,F是tensor T 中所有的column vector f的集合,{}表示重采样操作,形成一个新的集合)

假定我们已经完成了上面公式1的重采样操作,并更新了每一个part,然后之前测试过的S 就不起作用了,因为位置都发生变化了,所以就需要不断的重复“相似度测量”—>“重采样操作”,直到收敛。

所以,RPP不再通过测量每一个 f 和 P之间的相似度,而是对每一个 f 用 6个 part classifier (假设共有6个parts)去预测img的值(即 f 属于某一个P 的概率),文中是通过线性函数W加Softmax来实现 ,公式2如下:

img

(其中,p是设定的分成的part的数目,这里取6;W是提到的part classifier 分类器中可训练的权重矩阵)

因此RPP做的是一个“soft”的和自适应的划分操作,来精修前面PCB的“hard”和均匀划分,且由于均匀划分带来的误差 outliers 会被重新分配它们应该属于的位置,这些都是RPP带来的好处。

结合了RPP 之后,PCB结构变为:

img

RPP 和 part classifier 和后续的降采样操作,取代了原来的 average pooling 操作,而其他层跟图2是一样的,没有变化把每个part对应的 attention map 权值叠加回 tensor T 里(即上图的 GAP过程),得到各 part 的spatial 空间压缩后的 feature vector g 后续步骤都和PCB一样

RPP部分的重新划分操作其实就是给每个像素一个空间注意力叠加,只不过这里的注意力用的是对每一个像素进行分类而得到的注意力。然后再进行均等划分。

权重矩阵W不需要各部件的label就可以训练。下面介绍如何训练part classifier.

4、Induced Training for Part Classifier

这一小节主要介绍如何训练RPP,因为没有part label 信息的辅助训练,所以使用已经学习到的PCB训练好的模型,来引导新加入的RPP的训练,RPP只有一项参数W,训练分如下几步:

1、Tensor 均等划分,并训练PCB至收敛

2、将原来的Tensor T 后面的average pooling 层替换为一个P分类的part calssifier

3、固定PCB的其它层的参数只训练part classifier 的W 参数

4、放开全部参数,fine tune 以达到overall optimization

在上面的训练过程中,第一步训练好的PCB模型会引导后续的 part classifier 的训练。第三步和第四步收敛得非常快,大约总共只需要10 多个 epochs 即可。

Experiments

1、Datasets and setting

这一小节主要介绍实验数据集和配置。

  • Datasets:Market-1501,DuckMTMC-reID,CUHK03 (new training/testing protocol)
  • setting:single-query,without re-ranking(因为re-ranking会对mAP的提升效果显著)

2、Implementation details

这一小节主要介绍一些实验的细节部分。

进行IDE作为对比实验(IDE is a commonly used baseline in deep re-ID systems),且做了一些改进(same backbone network,i.e., ResNet50, and with several optimizations over the original one),最终作者实验出来的IDE模型效果稍好过原来的(On Market-1501, our implemented IDE achieves 85.3% rank-1 accuracy and 68.5% mAP, which is a bit higher than the implementation)。

然后是2种PCB的结构进行实验比较,用相同的 backbone network ,有不同的结构to learn part-level features :

  • Variant 1:不再基于每个 img 去进行单独的ID prediction,而是合并所有的 img 成为一个img,然后得到一个ID prediction 向量。测试时同样concat所有的g或h,因为concat了,所以只有一个loss;
  • Variant 2:和 图2 一样的PCB结构,所有的 FC classifiers 的分支共享参数。

训练时,对训练集进行了水平翻转和normalization的增强操作,batch size 设置为64,以0.1的基础学习率训练模型60个epochs ,在40个epochs之后降低到 0.01 。backbone model 在 ImageNet 上进行预训练。

实验用2块NVIDIA TITAN XP GPUs ,框架使用Pytorch , 在 Market-1501 (12,936 training images)上训练一个 IDE model 和一个标准的 PCB大约分别需要 40 和 50分钟。PCB训练上消耗多的10多分钟主要是因为去掉了最后的降采样层,使得 tensor T 扩大了4倍。

3、Performance evaluation

1、变体实验

实验结果如下图:

img

结论:

  1. PCB是一个strong的baseline模型。相比 IDE,PCB 的 mAP 提升8.9-15.3%;
  2. RPP可以有效改善PCB的效果,特别是mAP。RPP 对 PCB 的 rank-1 提升 1.5-3.1%,mAP 提升 3.1-4.2%,mAP提升效果更加明显,因为rank-1是描述找到最佳匹配的衡量标准,而mAP是描述找到所有匹配的衡量标准,因此就说明RPP对于找到more challenging的匹配是有效的;
  3. 使用p个losses的有效性。图2中,最后用到了p 个分支的损失,通过对比上一小节的Variant 1单loss,可以看到Variant 1的准确率没有PCB高,多损失比单损失提升明显,mAP 提升约 10-15%,这也就说明了对每个part 分别使用一个loss去约束,对学习到每个part的区分性特征十分有效;
  4. p 个分类器(identity classifiers)不共享参数的有效性。通过对比本文的PCB(不共享参数),以及上一小节的Variant 2的共享参数,p 个分类器不共享参数相比共享参数提升 mAP 2.4-7.4%。

2、Table 2是Market-1501数据集上 state of the art 方法之间的对比:

img

只依靠统一均匀划分的PCB就超过了其他所有的方法,甚至包括那些需要额外的辅助part labels 来故意对齐part的方法。

3、Table 3是在DukeMTMC-reID and CUHK03数据集上的比较:

img

最终,本文的PCB+RPP方法对于Market-1501, Duke and CUHK03这三个最权威的Re-ID数据集:mAP = 81.6%, 69.2%, 57.5% 以及 Rank-1= 93.8%, 83.3% and 63.7% ,在三个数据集上均达到了 state of the art !且没有用到re-ranking,当用了re-ranking之后,在Market-1501数据集上,mAP 和 Rank-1 提升到了 91.9% and 95.1%

总结

本文主要有2点贡献来解决Re-ID的问题:

1.设计了**新的更强的baseline网络-PCB(Part-based Convolutional Baseline)**来学习 part-informed features,目的是作为后续的RPP的引导信息,PCB采用的是强制统一均匀划分,PCB 达到了 state of the art 的水平, 未来应该会是一个广泛应用于Re-ID任务的 strong baseline 模型;

2.不过PCB太过于暴力,因此还需要 refined 一下,于是作者又提出了用于后续精修(refined)的池化部分RPP(Refined Part Pooling),用来增强每一个 part 内部的信息一致性。Refinement 之后,相似的 column vectors 会被划分到相同的 part 内,使得每一个 part 内部信息更加趋于一致。RPP不需要 part labeling information ,并且能够很大程度改善PCB的效果。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值