Human Semantic Parsing for Person Re-identification
作者:Mahdi M. Kalayeh, Emrah Basaran等人 2018CVPR
1. 摘要
global和local特征的结合很有效,但当前reid存在两个弊端:首先,为了结合global和多个locla特征,常像ZZD的属性reid(APR)那样构建多支路的模型,有必要吗?其次,当前locla特征依赖于boungding box,不够精细。而作者根据这两个问题分别切入,为应付第一个问题,作者指出用两个支路的Inception_V3或ResNet(计算更复杂而效果和Inception_V3参不多)就可以完成结合global和local特征的任务;而对于问题2使用语义分割(更具体点是human semantic parsing),能在像素级避免bounding box的误差。作者的模型能解决reid中的pose,背景,不对齐现象,性能在当前确实很高(比”人类水平“的AlignedReID还要高出几个点),但其实其计算量很大。
2. 贡献
- 网络很简洁,用上了global+local特征(语义分割进行部件检测)、大分辨率的输出等提点的tricks
- SPReID在reid和human semantic parsing上的both SOTA
3. 方法
3.1. Inception_V3回顾
- 48层,比ResNet浅但计算更快,效果差不多甚至更好
- 用GAP代替FC,任意size的输入都可以(作者要用到)
- 网络结构:前几层(两个卷积和一个max pool,stride都是2)得到为输入size的1/8的特征图,然后给3个Inception Block和2个grid reduction(夹在3个Inception Bolck之间)网络,Inception Block不改变空间size(h,w)而grid reduction将空间size减半而channel增倍。最后一个Inception Block输出结果给GAP去展示2048d的特向。
3.2. Human Semantic Parsing Model
图1下支路,用的是修改的Inception_V3*。为了保证最终概率图的分辨率足够(3030),将最后一个grid reduction的stride从2改成了1,在这里输出的特征图size比直接Inception_V3这里的输出加倍了;这导致最后一个Inception Block计算增加,于是用空洞卷积代替其中的卷积;移去GAP,代之以一个atrous spatial pyramid pooling (rates=3,6,9,12)【DG-Net表6中也有使用】+11卷积作为像素分类器(语义分割)。
DG-Net传送门:DG-Net
3.3. Person Re-identification Model
上支路由于下支路的语义分割需要大的size,因此有两个双线性插值,第一个是为了缩小size使得Inception_V3获得的感受野增大,从而提取像素周围的信息(像素周围的像素和改像素属于同一类别的可能性很大),而第二个是为了和下支路最终输出size一致,类似于U-Net等分割网络的的先下采样后上采样结构。上支路先走GAP支路,能用reid数据预训练Inception_V3网络,而下支路应该也是先预训练让下支路具有一定的分割能力,然后就是reid数据进行fine-tune,图像输入后分别走上支路和下支路(L1 norm之后)得到30302048和30305的feature map,其中5是前景(global)和4和local(头,上肢,下肢,鞋子—鞋子在reid中是很重要的一个线索,如ARP中就说明了这一点)。然后:
for 30*30*1的i in 下支路的概率图(30*30*5):
Step1: i = i的空间size展平为900*1,X = 上支路的输出响应展平为900*2048
Step2: X = X.T * i ,即图1中的weighted sum,下支路概率图就是所谓的weight,能
让关注的区域在上支路的输出响应中更大而其他区域更小(这里是矩阵乘法)
Step3:if i 不是前景:
这里作者说的是元素级max,但没有理解其到底怎么做的,代码是chainer写的也没看懂
因此以下操作仅代表个人猜想:i_头,i_上肢,i_下肢,i_鞋这四个2048*1的向量并排,
逐元素取max,得到2048*1的结果(不熟悉chainer,从代码看可能是这样)
最后就是X_前景,GAP的输出,Step3的输出进行concat,得到2048*3的结果(图1中是2048*5,这里不理解,
我觉得图1的2048*5结果可能是表示仅weighted sum而不经过Step3的结果,对这个结果的后四行执行max
得到2018*2,和GAP结合得到2018*3的结果)即为行人描述符,而max的目的据说是为了减少计算量(2048*5
-->2048*3)
4. 实验
训练细节:
不同backbone对性能的影响:
Icneption_V3是baseline,即上支路;w/fg表示用前景的效果(其他部件也有),而wo/fg表示没有前景(其他部件照旧)的效果,combined指全有且使用L1-norm和concat的结果(max等操作)。
右表表示不共享权重效果更好,但其实该网络本身计算量就很大,不共享权重更大。