Retrieval based on EI tree
针对于图像检索中替换属性的问题,属性的表示贯穿训练始终,但是属性之间的关系却没有被利用好。本文使用了EI-tree的结构,表示属性间的关系。
1. EI tree使用背景
图像检索的深度学习方法已经非常流行,但是深度学习中向量的难以解释的含义阻碍了用户反馈和图像检索的整合。同时,有许多在线购物网站根据产品分类和领域知识将时尚商品组织成层次结构。本文就是使用EI Tree的结构来建立商品间的层次结构。
2. Retrieval based on EI tree核心要点
1. EI Tree
假设我们有一组属性C = { 上 衣 、 领 口 、 袖 子 、 颜 色 、 裤 子 , 腰 部 分 的 衣 服 ( r i s e ) , f r y } C=\{上衣、领口、袖子、颜色、裤子,腰部分的衣服(rise),fry\} C = { 上 衣 、 领 口 、 袖 子 、 颜 色 、 裤 子 , 腰 部 分 的 衣 服 ( r i s e ) , f r y } ,(这里fry是指的bottom的什么位置?google也搜不到)EI树中有两种关系,排他性和独立性。涉及属性的概念一般都是独立的,比如裤子长度和颜色。而涉及产品的概念都是都是排他的,比如上衣和裤子。通过这两种关系,我们就可以建立EI树:
实线表示同层具有排他性,虚线表示同层具有独立性。
2.文本&图像学习
本文使用了在ImageNet上进行了预训练的ResNet-50,来进行图像检索的训练。给定一个224$\times224 的 图 像 I , 经 过 前 向 传 播 得 到 特 征 向 量 224的图像I,经过前向传播得到特征向量 2 2 4 的 图 像 I , 经 过 前 向 传 播 得 到 特 征 向 量 f_{I}\in R^{2048}。 所 以 a n c h o r 图 像 。所以anchor图像 。 所 以 a n c h o r 图 像 f_{I_{a}}和 n e g 图 像 和neg图像 和 n e g 图 像 f_{I_{n}}$可以表示为:f I a = F r e s n e t ( I a ) , f I n = F r e s n e t ( I n )
f_{I_{a}}=\mathcal{F}_{resnet}(I_{a}),f_{I_{n}}=\mathcal{F}_{resnet}(I_{n})
f I a = F r e s n e t ( I a ) , f I n = F r e s n e t ( I n )
而对于文本描述的属性问题,作者使用了BLSTM计算文本表示。使用索引t = 1 , . . . , T t=1,...,T t = 1 , . . . , T 表示单词在句子中的位置,基本LSTM的隐藏单元用下述公式来计算:h t ⃗ = L S T M ( W e m b x t , h t − 1 ⃗ )
\vec{h_{t}}=LSTM(W_{emb^{x_{t}}},\vec{h_{t-1}})
h t = L S T M ( W e m b x t , h t − 1 )
这里的x t x_{t} x t 是单词x t x_{t} x t 的向量表示,W e m b W_{emb} W e m b 是文本嵌入矩阵。双向的训练可以用h t ⃗ \vec{h_{t}} h t 和h t ← \stackrel{\leftarrow}{h_{t}} h t ← 来表示。最终的文本是用max pooling融合h t ⃗ + h t ← \vec{h_{t}}+\stackrel{\leftarrow}{h_{t}} h t + h t ← 后的f S f_{S} f S 表示。
和图像表示一样,文本表示也输入anchor文本和neg文本,特征向量表示为:f S a = F b l s t m ( S a ) , f S n = F b l s t m ( S n )
f_{S_{a}}=\mathcal{F}_{blstm}(S_{a}),f_{S_{n}}=\mathcal{F}_{blstm}(S_{n})
f S a = F b l s t m ( S a ) , f S n = F b l s t m ( S n )
最终通过rank lossfunction进行迭代,使用的余弦相似法:KaTeX parse error: No such environment: align* at position 8:
\begin{̲a̲l̲i̲g̲n̲*̲}̲L_{rank}=\frac{…
这里的m是边距,N是训练样本的数量。
最后我们将文本向量和图像向量进行融合:f = f I a + f S a
f=f_{I_{a}}+f_{S_{a}}
f = f I a + f S a
3. 利用EI Tree学习
先看一张图:
图中的f f f 就是我们刚刚讲的融合后的特征向量,但是这个特征向量是比较难以解释的。作者想将f f f 解释成属性概率值向量p p p 。怎么解释f f f 呢?设想在一张图片里,红色属性的出现的概率,可以理解为在颜色属性出现的基础上,红色出现的概率乘以颜色属性在图像中出现的概率。所以解释f f f 可以利用EI tree的结构,自下而上的层次性的用属性进行解释。一般地,假设C 0 C_{0} C 0 是根节点,即图像。那么图像中具有某一属性C n C_{n} C n 的路径可以表示为C 0 → C n C_{0}\rightarrow C_{n} C 0 → C n 。设W E I ∈ R 2048 × C W_{EI}\in R^{2048\times C} W E I ∈ R 2 0 4 8 × C 为E I EI E I 权重矩阵,则一张图像中具有某一属性的概率可以表示为:p ( c n ∣ c 0 → c n , f , W E I ) = p ( c 1 ∣ c 0 , f , W E I ) ⋅ p ( c 2 ∣ c 1 , f , W E I ) ⋅ ⋅ ⋅ p ( c n ∣ c n − 1 , f , W E I )
p(c_{n}|c_{0}\rightarrow c_{n},f,W_{EI})=p(c_{1}|c_{0},f,W_{EI})\cdot p(c_{2}|c_{1},f,W_{EI})\cdot\cdot\cdot p(c_{n}|c_{n-1},f,W_{EI})
p ( c n ∣ c 0 → c n , f , W E I ) = p ( c 1 ∣ c 0 , f , W E I ) ⋅ p ( c 2 ∣ c 1 , f , W E I ) ⋅ ⋅ ⋅ p ( c n ∣ c n − 1 , f , W E I )
图中的实线表示了独立性的stepl c n − 1 c n ∈ ε I l_{c_{n-1}c_{n}}\in \varepsilon_{I} l c n − 1 c n ∈ ε I ,虚线表示了排他性的stepl c n − 1 c n ∈ ε E l_{c_{n-1}c_{n}}\in \varepsilon_{E} l c n − 1 c n ∈ ε E 。因为排他性是有你没我的,所以我们使用softmax计算这部分概率,因为独立性表示互相独立的关系,所以我们用sigmoid函数计算这部分概率,公式如下:p ( c n ∣ c n − 1 , f , W E I ) = { e x p ( f T ⋅ W E I ⋅ c n ) ∑ k ∈ E S C n e x p ( f T ⋅ W E I ⋅ c n ) l c n − 1 c n ∈ ε I σ ( f T ⋅ W E I ⋅ c n ) l c n − 1 c n ∈ ε E
p(c_{n}|c_{n-1},f,W_{EI})=\begin{cases}
\frac{exp(f^{T}\cdot W_{EI}\cdot c_{n})}{\sum_{k\in ES_{C_{n}}}exp(f^{T}\cdot W_{EI}\cdot c_{n})}& l_{c_{n-1}c_{n}}\in \varepsilon_{I}\\
\sigma(f^{T}\cdot W_{EI}\cdot c_{n})&l_{c_{n-1}c_{n}}\in \varepsilon_{E}
\end{cases}
p ( c n ∣ c n − 1 , f , W E I ) = ⎩ ⎨ ⎧ ∑ k ∈ E S C n e x p ( f T ⋅ W E I ⋅ c n ) e x p ( f T ⋅ W E I ⋅ c n ) σ ( f T ⋅ W E I ⋅ c n ) l c n − 1 c n ∈ ε I l c n − 1 c n ∈ ε E
这里的c n c_{n} c n 就是结点c n c_{n} c n 的one hot vector。拿图中的neckline到root的概率来说,这部分可以表示为:p ( n e c k l i n e ∣ r o o t → n e c k l i n e , f , W E I ) = e x p ( f T W E I C u p ) e x p ( f T W E I C u p ) + e x p ( f T W E I C b o t t o m ) ⋅ σ ( f T W E I C n e c k l i n e )
p(neckline|root\rightarrow neckline,f,W_{EI})\\=\frac{exp(f^{T}W_{EI}C_{up})}{exp(f^{T} W_{EI}C_{up})+exp(f^{T}W_{EI}C_{bottom})}\cdot
\sigma(f^{T}W_{EI}C_{neckline})
p ( n e c k l i n e ∣ r o o t → n e c k l i n e , f , W E I ) = e x p ( f T W E I C u p ) + e x p ( f T W E I C b o t t o m ) e x p ( f T W E I C u p ) ⋅ σ ( f T W E I C n e c k l i n e )
这部分是由交叉熵损失函数来更新:L E I = − 1 N ∑ a = 1 N [ y a l o g ( p a ) + ( 1 − y a ) l o g ( 1 − p a ) ]
L_{EI}=-\frac{1}{N}\sum_{a=1}^{N}[y_{a}log(p_{a})+(1-y_{a})log(1-p_{a})]
L E I = − N 1 a = 1 ∑ N [ y a l o g ( p a ) + ( 1 − y a ) l o g ( 1 − p a ) ]
这里的y是表示标签的true情况,即为1.
最终的损失函数为:L = L E I + λ L r a n k
L=L_{EI}+\lambda L_{rank}
L = L E I + λ L r a n k
4. 图片相似度计算方法
将第2节中的f f f 向量和第3节中的p p p 向量进行连接,得到图像属性的向量表达:v = [ p , f ] v=[p,f] v = [ p , f ] 。因为EI树中的一个结点对应一种属性,并且是一种层次性的结构,所以我们通过聚集属性间的局部相似度来描述服装整体的相似度。定义两张图片之间的距离为:d ( v i , v j ) = ( v i − v j ) T D ( v i − v j )
d(v_{i},v_{j})=\sqrt{(v_{i}-v_{j})^{T}D(v_{i}-v_{j})}
d ( v i , v j ) = ( v i − v j ) T D ( v i − v j )
这里的D是半正定对角矩阵。显然,相似度高的图像距离要小,相似度低的图像距离要大,作者希望给定一个图像,找出K个最相邻图像。也就是说,对于图像i i i ,i j i~j i j 是i的邻居,其他图像为l l l .训练的三元集就可以表示为Γ = { ( i , j , l ) : i ∼ j , i ≁ l } \Gamma = \{(i,j,l):i\sim j,i\nsim l\} Γ = { ( i , j , l ) : i ∼ j , i ≁ l } .因此,学习目标可表示为:m i n i m i z e D ∑ i ∼ j d 2 ( v i , v j ) + u ∑ ( i , j , l ) ∈ Γ ξ i j l s u b j e c t t o ∀ ( i , j , l ) ∈ Γ , ξ i j l ≥ 0 , d 2 ( v i , v l ) − d 2 ( v i , v j ) ≥ 1 − ξ i j l , D a a ≥ 0 a n d D a b = 0 i f a ≠ b
\begin{aligned}\mathop{minimize}\limits_{D}\quad &\sum_{i\sim j}d^{2}(v_{i},v_{j})+u\sum_{(i,j,l)\in \Gamma}\xi_{ijl}\\
subject\,to\quad & \forall(i,j,l)\in \Gamma,\xi_{ijl}\geq 0,\\
& d^{2}(v_{i},v_{l})-d^{2}(v_{i},v_{j})\geq 1-\xi_{ijl},\\
& D_{aa}\geq 0\, and\, D_{ab}=0 \,if\,a\neq b
\end{aligned}
D minimi ze s u b j e c t t o i ∼ j ∑ d 2 ( v i , v j ) + u ( i , j , l ) ∈ Γ ∑ ξ i j l ∀ ( i , j , l ) ∈ Γ , ξ i j l ≥ 0 , d 2 ( v i , v l ) − d 2 ( v i , v j ) ≥ 1 − ξ i j l , D a a ≥ 0 a n d D a b = 0 i f a = b
这个学习距离问题可以使用LMNN解决。
5. 属性修改
因为第三节中的p p p 向量已经很好的表示了图片中是否具有某种属性,所以当用户显式的表示我还想要某种属性时,只需要将原p p p 向量更新即可,更新公式如下:∀ c ∈ C , P t + 1 [ c ] = { 1 c ∈ R t , 0 c ∈ R t ˉ , p t [ c ] o t h e r s .
\forall c\in C,P_{t+1}[c]=\begin{cases}
1&c\in R_{t},\\
0&c\in \bar{R_{t}},\\
p_{t}[c]&others.
\end{cases}
∀ c ∈ C , P t + 1 [ c ] = ⎩ ⎪ ⎨ ⎪ ⎧ 1 0 p t [ c ] c ∈ R t , c ∈ R t ˉ , o t h e r s .
3. Retrieval based on EI tree流程
上图就是本文的整体结构。输入为pos,neg文本以及pos,neg图像。主要流程如下:
将文本集通过BLSTM训练,将图像集通过Res-net50训练,得到综合特征向量f f f
将f f f 通过EI loss进行训练,进一步训练得到权重矩阵W E I W_{EI} W E I
在test时,输入的图片或文字经过之前已经训练好的各种权重,并加上用户的属性修改,得到全局特征向量v v v ,并利用图片相似度计算方法,计算出K个最相近图片。
4.总结
疑问
1.对p向量理解不足。从原文4.2节可以看出,p是一个c维向量。(c即属性个数),那么为什么v是直接f与p相连就可以了,f和p的维度都不一致,在后续的距离公式里,向量f和向量p对于距离的影响是不是也不一样?这里我觉得是我理解的不到位,但是我实在不理解。
总结
性个数),那么为什么v是直接f与p相连就可以了,f和p的维度都不一致,在后续的距离公式里,向量f和向量p对于距离的影响是不是也不一样?这里我觉得是我理解的不到位,但是我实在不理解。
总结
EI tree的方法让我眼前一亮,又吊打了AMNet,但是又有许多不理解的地方。