[Paper Share - 6]Video2Shop: Exa
导读
这是一篇阿里巴巴团队发表在CVPR2017关于衣物检索的论文。文章提出从视频到网店商品的检索方法。通过LSTM对视频帧进行处理,提取一系列特征,将这些特征和数据库的特征一起通过一个学习来的树形网络计算得到相似度。文章链接
1. Introduction
这部分主要讲述应用场景,并指出Video2Shop的检索相比stree2shop的检索会面对的难题:比如杂乱的背景,视角挑战,遮挡,不同的光照条件,运动模糊等等。使得Video2Shop更难。于是作者提出一个框架AsymNet来解决这样的问题。如下图Figure 1。
figure 1从图中可以看出,AsymNet分成3部分:IFN,VFN,SN。训练的时候,IFN对shoping image(网店的商品图)进行处理,提取特征m,而该商品对应的视频由VFN处理,VFN先用Faster RCNN进行检测,然后用KCF算法进行跟踪得到一些列的clothing patches,并用IFN提取相应的特征。这些特征进入两层的LSTM后也会输出对应的隐藏层特征,当然你可以设置更多的帧数,获得更多的特征。LSTM输出的特征和上面商品展示图的特征一块传进SN,SN是一个树结构网络,参数可以学习得到。经过网络处理后输出一个相似度。测试时也是同样操作。
文章贡献点主要在于提出了这样的网络结果,并给出一个近似的训练方法来提高训练速度。但是他们没有公开他们的数据和代码,这比较可惜。(没有代码和数据,说个**(手动屏蔽敏感字眼))
2. Related Work
这部分没啥好说的。快进>>>
3. Representation Learning Network
3.1 Image Representation Learning Network
IFN是用来提取图像特征的。网络主体是VGG-16,用的是Faster RCNN的框架。由于衣服多种多样,大小不一,所以为了统一输出特征的大小,在卷积层和全连接层之间插入了一个SSP层。下图Figure 2所示。
Figure 23.2 Video Representation Learning Network
如图1为了学习到时域信息,作者只好上LSTM,对于一个包含n个clothing patch的序列,用IFN提取特征后,灌进LSTM,得到对应的LSTM输出的特征序列。经过作者的实验,一层的LSTM很难学到时域信息,使用两层可以获得较好的效果。
4. Similarity Learning Network
4.1 Motivation
相似度网络的输入包含LSTM的多个特征和shop image的特征,这是个多对一的问题。传统的做法是对LSTM的特征序列进行average pooling或者max pooling,又或者直接取最后一层的特征。但是作者认为这些做法过于简单粗暴,不能很好地处理视频数据多变和复杂的数据。
作者认为这是一个混合估计问题(mixture estimate problem),这类型的问题可以通过拆解多个简单的问题并分别求解,最后结合在一起作为复杂问题的解。于是作者想通过应用专家模型来解决这个问题。多个fusion nodes估计不同视角的相似度,最后加权得到总的相似度。
4.2 Network Structure
如图1中,树结构有两种节点,similarity network node(SNN)和fusion node(FN),对应书的叶子和分支。
SNN
比如LSTM输出的某个状态hi,并且有个图片的特征m,SNN计算hi和m的相似度,SNN的结构是两个全连接层:fc1(输出大小大小256)和 fc2 (输出大小1)。fc2的输出标记为Zi的话,那么SNN最后的输出yi由下面式子计算得到。
FN
SNN是分段平滑的,类似于广义的线性模型。一旦SNN计算好后,fusion score将会通过由FN组成的树结构进行计算。为了简单起见,这里只是展示了两层的树结构。底层(low-level)的FN和SNN链接,而顶层(top-level)的SN指向根节点。
对于底层的FN_ij,即第i个底层FN链接第j个顶层FN,这里说的有点抽象,看图就懂了。定义一个中间变量eij如下:
式子中vij是FN的参数,xij是来自SNN的fc1层的输出。底层FN的输出gij是一个正则化后的权重。正则化时,是对所有链接到同一个顶层FN的底层FN的输出进行正则化。如下式子:
4相似的对于顶层的FN也是类似计算,如FNj,只不过其输入xj是来自底层FN的xij的average pooling,并且也有中间变量ej,
输出则是所有的顶层FN进行正则化。
然后底层输出的权重g和SNN输出的相似度相乘得到底层的加权权重,传递到顶层时,来自不同底层FN的得分相加,再乘以顶层的权重g。最后顶层的得分相加,得到sg。
(看不懂我表述的看下图就懂了)
4.3 Learning Algorithm
接着是训练策略,分两个阶段进行,先是特征表示网络(IFN和VFN)和SNN节点学习,然后固定上面两个网络,学习FN节点。
SNN
对于SNN的学习,可以表示为最小化一个对数函数。
FN
对于某一个来自fc1的特征batch,全局相似度sg可以表示为各个SNN相似度的加权值,如下式子:
其中p(s)和pi(y)是全局相似度和第i个SNN输出的相似度。gj和gij分别是顶层和底层FN输出的权重因子。这个式子的意思是,SNN的相似度通过多层FN传递到最后并产生全局相似度。
然后根据贝叶斯准则,顶层FN和底层FN的后验概率可以表示成下式子:
这样子的话,对于式子6就可以得到一个梯度下降算法。其对数似然函数可以表示为:
9然后对上式求导可以得到,剃度公式如下:
10a是学习率,vj和vij是顶层和底层的FN参数。这样我们就可以学习这个树结构网络了。实验中,作者使用费5层的树结构。每层的FN节点数分别是32,16,8,4,2。
5 Approximate Training
训练简单来说就是对LSTM的hidden state复制2xS份。
6 Experiment
6.2 对比特征表示网络的
主要和下面四个进行对比
- Average pooling,
- Max pooling,
- Fisher Vector [21]
- VLAD[12].
6.3 SN网络的结构选择实验
实验对比了选择不同的level数,和多种不同的FN节点来构建实验。主要考虑两种结构:
- 相同的分支,所有的FN节点有相同数量的分支。这里设计了两个网络,一个只有一层,包含32个FN节点。另一个有5层,包含62个FN节点。
- 不同的分支,设计了6个网络,分支按照增长的3个:4-8,2-4-4,2-2-2-4;分支下降的3个:8-4,4-4-2,4-2-2-2;
表现如图:
46.4 Similarity Learning Network的表现
这里作者将本文方法和一些没有FN节点的方法进行对比。
5可以看到AVG的方法比Max Pooling的方法好。Last的方法比AVG和Max的都好,因为Last的方法学到了全部的时间信息。
6.5 和所有State-of-the-art的方法比较
主要比较下面5个方法。
AlexNet (AL)
Deep Search (DS)
F.T. Similarity (FT)
Contrastive Softmax(CS)
Robust contrastive loss (RC)
从这个表可以知道,直接使用卷积特征的AL和DS效果较差,而带有类别信息的RC要比CS好。对于一些其clothing trajectory没有明显区分度的类别,RC要比本文的AsymNet好。不过整体上AsymNet都是很不错。
另外,作者贴了下AsymNet的一些效果图。
从图可以看出,有些细节比较难区分,比如图案不一致,或者颜色不一致。
7. Conclusion
最后作者说,下一步将会引入衣服属性来提高网络的表现。
好了,今晚的论文分享到这里。坚持就极大可能获得胜利。加油!晚安。
------少侠阿朱,2017.12.08 于深圳