【论文笔记-02】Beyond Part Model Person Retrieval with Refined Part Pooling

论文链接:https://arxiv.org/pdf/1711.09349.pdf

【Abstract】这篇paper主要采用 part-level 特征来做re-ID,采用part-level特征来做re-ID有个很重要的前提条件,就是每个part都应该位于正确的位置。那就涉及到一个问题,在一张行人图片中,如何去定义这个 part ?而本文主要从每个 part 内的图像内容应该保持尽可能的一致,来给出part的定义。

这篇paper的贡献主要有两个:1. 提出了PCB,给定一张输入图像,通过PCB网络提取其若干part-level特征,作为输入图像的卷积特征描述符 2. 提出RPP方法,均匀划分不可避免地会在每个part产生outliers,在这些outliers实际上跟其他part更为相似。通俗的讲,就是这些outliers被分到一个错误的part内,而RPP就是将这些被分错的outliers重新被分配到尽可能正确的part内。实验显示,在Market-1501数据集取得(77.4+4.2)%mAP ,rank-1的准确率为(92.3+1.5)%。

【PCB:A Stong Convolutional Baseline】

  • PCB结构

Backbone network,本篇paper采用ResNet50。

From backbone to PCB, 我们对backbone network做出一些修改,修改后的网络结构如下图所示:

  1. 全局平均池化层之前的结构与ResNet-50保持完全的一致,区别在于全局平均池化层和后面的结构被删除。 
  2. 将最后一层feature map 或者说全局平均池化操作前的 feature map(此时特征图的大小为[None, 7, 7, 2048])分成p个horizontal stripes,并分别对p个horizontal stripes做global average pooling就得到了p个局部特征。
  3. 此时p个column vetors g 的模板数为2048,对其进行1*1*256卷积操作,降维到256。
  4. 将每个column vector h 作为输入,输入到分类器。分类器的实现是全连接层和一些列的Softmax层。损失函数采用交叉熵损失函数。
  5. 测试期间,将向量g或者向量h的p个片段连接起来,作为输入图像的最终描述符。 向量g组合起来作为输入图像的描述符,虽然性能上有所提升,但是要付出巨大的计算开销。

【Important Parameters】

PCB得益于细粒度空间的整合。一些重要的参数,像输入图像的分辨率[H,W],tensor T的空间大小[M, N],T被分成horizontal strapes的数目p。

通过本文实验,获得最优化的PCB参数如下:

  1. 输入图像的分辨率为[384, 128],高度与宽度比率为3:1;
  2. T的空间大小为[24, 8];
  3. T被均匀的分成6个horizontal strpes。

【Potential Alternative Structures】

对于给定的backbone网络,这里存在一些潜在的可选择的结构去学习到part-level特征。本文列举了两种结构与PCB结构进行比较。

变体1. PCB结构在做ID 预测时候是基于每一个hi(i=1,2,...,p),变体1是将p个hi进行平均得到一个向量h,后面全连接一个FC分类器,在测试期间,输入图像的描述符不作变化。

变体2. 采用与图2中PCB结构相同的结构,不同之处在于FC分类器处所有参数都共享一套参数。

这两组变体实验在性能上都没有PCB结构的好,PCB 相对于变体1的优越性体现于:不仅仅是输入图像的卷积输入符本身,而且每个part的监督对学习都是至关重要的。PCB相对于变体2 的优越性体现于:在降低过拟合风险的同时,为分类器贡献全中权重会降低所学到part-level特征的识别能力。

【Refined Part Pooling】

对PCB进行Uniform partition 是一种简单、有效、有待改进的方法,本文在这里首先解释了 Uniform partition 所产生的不一致现象。然后提出了RPP作为在 within-part consistency的补救办法。

【within-part Inconsistency】

以tensor T在空间的划分为研究对象,我们对within-part inconsistency直观理解为:T的同一个part的列向量f应该是相似的,并且与其他part的列向量是不同的;否则会产生with-part Inconsistency 现象,这就意味着part的划分不当。

将PCB训练为收敛后,我们比较每一个列向量fg_{i}\left ( i=1,2,...,p \right )。比如:每个stripe的average-pooled 列向量,采用cosine距离作为相似性度量距离。如果fg_{i}足够的相似,那么可以推断f最接近第i个part。相应的,通过这样的操作,我们可以找到每个f与哪个part最接近。如下图所示:每个列向量可由一个小矩形表示,并绘制在其最接近part的颜色。

观察到两种现象,首先,同一个horizontal stripe中大多是列向量是聚集在一起的。其次,在训练过程中,有许多outliers倍指定到一个特定的part(这是因为outliers与这一特定part相似),这些outliers的存在表明它们与另外一part中的列向量更为一致。 

【Relocating Outliers】

为了解决within-part inconsistency问题,这篇paper提出了RPP方法来纠正。本文目标是根据每个列向量与每个part的相似性,来对每个列向量进行分配。所以,那些被分错的outliers可以被重新分类。本文需要对tensor T中所有列向量进行动态分配part。基于已经学习到的tensor T,本文使用一个Linear Layer,后面接一个softmax激活层作为part分类器,如下所示:

P(P_{i}|f)=softmax(W_{i}^{T}f)=\frac{exp(W_{i}^{T}f)}{\sum_{j=1}^{p}exp(W_{i}^{T}f)}

其中,P(P_{i}|f)是预测f属于part g_{i} 的概率,p 是事先定义part的数量(比如:这里p=6), W是part分类器的可训练权重矩阵,其训练过程将在下面进行详细说明。

给定一个tensor T中的列向量ff属于part g_{i} 的概率,我们以P(P_{i}|f)为置信度将f分配到part g_{i}。相应的,每一个part P_{i}(i=1,2,..,p)可以看作是以P(P_{i}|f)作为采样权重,从所有的列向量f采样而来。如下:

P_{i}=\left \{ P(P_{i}|f) \times f,\forall f\in F \right \}

其中,F是tensor T中列向量全部的集合,{*}表示要形成聚合的采样操作。

这样,本文提出的RPP方法进行了一个“soft”和自适应的划分去改善原始的“hard”划分和Uniform partition,并重新分配那些因为Uniform partition而产生的outliers。综合上面所描述的RPP,将PCB结构进一步整理为如下图所示。part分类器连同后面的采样操作一起替换了原始的平均池化操作。所有其他层的结构保持不变。

 

【Induced Training for Part Classifier】

在公式1中,缺少用于学习Part分类器W的显示监督信息,本文设计一个引导训练过程,如下所示:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值