Retrieval based on EI tree

针对于图像检索中替换属性的问题,属性的表示贯穿训练始终,但是属性之间的关系却没有被利用好。本文使用了EI-tree的结构,表示属性间的关系。

1. EI tree使用背景

图像检索的深度学习方法已经非常流行,但是深度学习中向量的难以解释的含义阻碍了用户反馈和图像检索的整合。同时,有许多在线购物网站根据产品分类和领域知识将时尚商品组织成层次结构。本文就是使用EI Tree的结构来建立商品间的层次结构。

2. Retrieval based on EI tree核心要点

1. EI Tree

假设我们有一组属性C={上衣、领口、袖子、颜色、裤子,腰部分的衣服(rise),fry}C=\{上衣、领口、袖子、颜色、裤子,腰部分的衣服(rise),fry\}C={上衣、领口、袖子、颜色、裤子,腰部分的衣服(rise),fry},(这里fry是指的bottom的什么位置?google也搜不到)EI树中有两种关系,排他性和独立性。涉及属性的概念一般都是独立的,比如裤子长度和颜色。而涉及产品的概念都是都是排他的,比如上衣和裤子。通过这两种关系,我们就可以建立EI树:

实线表示同层具有排他性,虚线表示同层具有独立性。

2.文本&图像学习

本文使用了在ImageNet上进行了预训练的ResNet-50,来进行图像检索的训练。给定一个224$\times224的图像I,经过前向传播得到特征向量224的图像I,经过前向传播得到特征向量224的图像I,经过前向传播得到特征向量f_{I}\in R^{2048}。所以anchor图像。所以anchor图像。所以anchor图像f_{I_{a}}和neg图像和neg图像和neg图像f_{I_{n}}$可以表示为:
fIa=Fresnet(Ia),fIn=Fresnet(In)f_{I_{a}}=\mathcal{F}_{resnet}(I_{a}),f_{I_{n}}=\mathcal{F}_{resnet}(I_{n}) fIa​​=Fresnet​(Ia​),fIn​​=Fresnet​(In​)
而对于文本描述的属性问题,作者使用了BLSTM计算文本表示。使用索引t=1,...,Tt=1,...,Tt=1,...,T表示单词在句子中的位置,基本LSTM的隐藏单元用下述公式来计算:
ht⃗=LSTM(Wembxt,ht−1⃗)\vec{h_{t}}=LSTM(W_{emb^{x_{t}}},\vec{h_{t-1}}) ht​​=LSTM(Wembxt​​,ht−1​​)
这里的xtx_{t}xt​是单词xtx_{t}xt​的向量表示,WembW_{emb}Wemb​是文本嵌入矩阵。双向的训练可以用ht⃗\vec{h_{t}}ht​​和ht←\stackrel{\leftarrow}{h_{t}}ht​←​来表示。最终的文本是用max pooling融合ht⃗+ht←\vec{h_{t}}+\stackrel{\leftarrow}{h_{t}}ht​​+ht​←​后的fSf_{S}fS​表示。

和图像表示一样,文本表示也输入anchor文本和neg文本,特征向量表示为:
fSa=Fblstm(Sa),fSn=Fblstm(Sn)f_{S_{a}}=\mathcal{F}_{blstm}(S_{a}),f_{S_{n}}=\mathcal{F}_{blstm}(S_{n}) fSa​​=Fblstm​(Sa​),fSn​​=Fblstm​(Sn​)
最终通过rank lossfunction进行迭代,使用的余弦相似法:
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲L_{rank}=\frac{…
这里的m是边距,N是训练样本的数量。

最后我们将文本向量和图像向量进行融合:
f=fIa+fSaf=f_{I_{a}}+f_{S_{a}} f=fIa​​+fSa​​

3. 利用EI Tree学习

先看一张图:

图中的fff就是我们刚刚讲的融合后的特征向量,但是这个特征向量是比较难以解释的。作者想将fff解释成属性概率值向量ppp。怎么解释fff呢?设想在一张图片里,红色属性的出现的概率,可以理解为在颜色属性出现的基础上,红色出现的概率乘以颜色属性在图像中出现的概率。所以解释fff可以利用EI tree的结构,自下而上的层次性的用属性进行解释。一般地,假设C0C_{0}C0​是根节点,即图像。那么图像中具有某一属性CnC_{n}Cn​的路径可以表示为C0→CnC_{0}\rightarrow C_{n}C0​→Cn​。设WEI∈R2048×CW_{EI}\in R^{2048\times C}WEI​∈R2048×C为EIEIEI权重矩阵,则一张图像中具有某一属性的概率可以表示为:
p(cn∣c0→cn,f,WEI)=p(c1∣c0,f,WEI)⋅p(c2∣c1,f,WEI)⋅⋅⋅p(cn∣cn−1,f,WEI)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(cn​∣c0​→cn​,f,WEI​)=p(c1​∣c0​,f,WEI​)⋅p(c2​∣c1​,f,WEI​)⋅⋅⋅p(cn​∣cn−1​,f,WEI​)
图中的实线表示了独立性的steplcn−1cn∈εIl_{c_{n-1}c_{n}}\in \varepsilon_{I}lcn−1​cn​​∈εI​,虚线表示了排他性的steplcn−1cn∈εEl_{c_{n-1}c_{n}}\in \varepsilon_{E}lcn−1​cn​​∈εE​。因为排他性是有你没我的,所以我们使用softmax计算这部分概率,因为独立性表示互相独立的关系,所以我们用sigmoid函数计算这部分概率,公式如下:
p(cn∣cn−1,f,WEI)={exp(fT⋅WEI⋅cn)∑k∈ESCnexp(fT⋅WEI⋅cn)lcn−1cn∈εIσ(fT⋅WEI⋅cn)lcn−1cn∈εEp(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(cn​∣cn−1​,f,WEI​)=⎩⎨⎧​∑k∈ESCn​​​exp(fT⋅WEI​⋅cn​)exp(fT⋅WEI​⋅cn​)​σ(fT⋅WEI​⋅cn​)​lcn−1​cn​​∈εI​lcn−1​cn​​∈εE​​
这里的cnc_{n}cn​就是结点cnc_{n}cn​的one hot vector。拿图中的neckline到root的概率来说,这部分可以表示为:
p(neckline∣root→neckline,f,WEI)=exp(fTWEICup)exp(fTWEICup)+exp(fTWEICbottom)⋅σ(fTWEICneckline)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(neckline∣root→neckline,f,WEI​)=exp(fTWEI​Cup​)+exp(fTWEI​Cbottom​)exp(fTWEI​Cup​)​⋅σ(fTWEI​Cneckline​)
这部分是由交叉熵损失函数来更新:
LEI=−1N∑a=1N[yalog(pa)+(1−ya)log(1−pa)]L_{EI}=-\frac{1}{N}\sum_{a=1}^{N}[y_{a}log(p_{a})+(1-y_{a})log(1-p_{a})] LEI​=−N1​a=1∑N​[ya​log(pa​)+(1−ya​)log(1−pa​)]
这里的y是表示标签的true情况,即为1.

最终的损失函数为:
L=LEI+λLrankL=L_{EI}+\lambda L_{rank} L=LEI​+λLrank​

4. 图片相似度计算方法

将第2节中的fff向量和第3节中的ppp向量进行连接,得到图像属性的向量表达:v=[p,f]v=[p,f]v=[p,f]。因为EI树中的一个结点对应一种属性,并且是一种层次性的结构,所以我们通过聚集属性间的局部相似度来描述服装整体的相似度。定义两张图片之间的距离为:
d(vi,vj)=(vi−vj)TD(vi−vj)d(v_{i},v_{j})=\sqrt{(v_{i}-v_{j})^{T}D(v_{i}-v_{j})} d(vi​,vj​)=(vi​−vj​)TD(vi​−vj​)​
这里的D是半正定对角矩阵。显然,相似度高的图像距离要小,相似度低的图像距离要大,作者希望给定一个图像,找出K个最相邻图像。也就是说,对于图像iii,iji~ji j是i的邻居,其他图像为lll.训练的三元集就可以表示为Γ={(i,j,l):i∼j,i≁l}\Gamma = \{(i,j,l):i\sim j,i\nsim l\}Γ={(i,j,l):i∼j,i≁l}.因此,学习目标可表示为:
minimizeD∑i∼jd2(vi,vj)+u∑(i,j,l)∈Γξijlsubjectto∀(i,j,l)∈Γ,ξijl≥0,d2(vi,vl)−d2(vi,vj)≥1−ξijl,Daa≥0andDab=0ifa≠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} Dminimize​subjectto​i∼j∑​d2(vi​,vj​)+u(i,j,l)∈Γ∑​ξijl​∀(i,j,l)∈Γ,ξijl​≥0,d2(vi​,vl​)−d2(vi​,vj​)≥1−ξijl​,Daa​≥0andDab​=0ifa​=b​
这个学习距离问题可以使用LMNN解决。

5. 属性修改

因为第三节中的ppp向量已经很好的表示了图片中是否具有某种属性,所以当用户显式的表示我还想要某种属性时,只需要将原ppp向量更新即可,更新公式如下:
∀c∈C,Pt+1[c]={1c∈Rt,0c∈Rtˉ,pt[c]others.\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,Pt+1​[c]=⎩⎪⎨⎪⎧​10pt​[c]​c∈Rt​,c∈Rt​ˉ​,others.​

3. Retrieval based on EI tree流程

上图就是本文的整体结构。输入为pos,neg文本以及pos,neg图像。主要流程如下:

  1. 将文本集通过BLSTM训练,将图像集通过Res-net50训练,得到综合特征向量fff
  2. 将fff通过EI loss进行训练,进一步训练得到权重矩阵WEIW_{EI}WEI​
  3. 在test时,输入的图片或文字经过之前已经训练好的各种权重,并加上用户的属性修改,得到全局特征向量vvv,并利用图片相似度计算方法,计算出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,但是又有许多不理解的地方。

Retrieval based on EI tree学习笔记相关推荐

  1. Link Cut Tree 学习笔记

    Link Cut Tree 学习笔记 说在前边 最近补 CF 碰见一道 LCT ,就打算学习一下这个东西...顺便复习一下 splay. 具体算法及实现 参考了FlashHu, Candy? P369 ...

  2. K-D Tree 学习笔记

    K-D Tree 学习笔记 最近看了一下k-NN然后它说如果特征空间维数比较低的时候用K-D Tree来求k近邻比较快所以就来补一下学OI时没学的K-D Tree假装写一个学习笔记吧. 是什么? 是一 ...

  3. TGARS 2019: What, Where, and How to Transfer in SAR Target Recognition Based on Deep CNNs ——学习笔记

    1 TGARS-2019论文:What, Where, and How to Transfer in SAR Target Recognition Based on Deep CNNs 链接:http ...

  4. ALV TREE学习笔记

    在这一篇中将学习一下ALV Tree的使用方法.通过名字可以看出,ALV TREE应该是将ALV与TREE这两者进行组合. ALV Tree实现原理:创建一个 cl_gui_alv_tree对象,定义 ...

  5. Decision Tree学习笔记(基础篇)

    写在前面,博客仅供个人学习所用,不得商用.有问题请评论,我也是初学者,大家共同进步. 参考链接:决策树的一些基本概念以及实现原理 决策树python调用 决策树实现代码python 基本概念 决策树的 ...

  6. LSM Tree 学习笔记——MemTable通常用 SkipList 来实现

    最近发现很多数据库都使用了 LSM Tree 的存储模型,包括 LevelDB,HBase,Google BigTable,Cassandra,InfluxDB 等.之前还没有留意这么设计的原因,最近 ...

  7. K-D Tree学习笔记

    引入 K-D Tree 是一种处理高维空间的数据结构. 支持O(nk−1k)O(n^{\frac {k-1}k})O(nkk−1​)查询给定超矩形内的点的信息, kkk 为维数. 可以用替罪羊树的思想 ...

  8. Link/Cut Tree学习笔记

    最近正是实验课的高峰期,我数了一下,除了毛概没有实验课,其他的课都有实验课...不过好在这些实验都不是很难.我尽力挤出时间用来刷题. 简介 Link/Cut Tree和树链剖分很相似,二者处理的问题也 ...

  9. Link Cut Tree学习笔记

    捋一下思路 模板题:https://www.luogu.org/problemnew/show/P3690 推荐LCT的教程,个人认为很详细,本文做了部分引用:https://www.luogu.or ...

最新文章

  1. Inside C++ object Model--构造函数
  2. 同步和原子性---多线程学习笔记(四)
  3. fence机制 linux_Linux ha fence设备测试
  4. python 复习计划
  5. 浅谈Web网站的架构演变过程
  6. 【408考研】数据结构 —— 第一章 绪论
  7. 传智播客杨中科老师的wpf基础视频教程、C#视频教程
  8. 数据结构面试经典问题汇总
  9. python结束函数_python结束函数
  10. 频率响应——频率响应基本概念;单时间常数RC电路频率响应
  11. CentOS7安装twisted报错: src/twisted/test/raiser.c:4:20: fatal error: Python.h : No such file or direc
  12. 关于版权声明的写法(转)
  13. HTML学习1(常用HTML格式、字体标记、图片、连接)
  14. ubuntu下安装telnet服务
  15. 2022.08.15 第三组 高小涵
  16. 基于逻辑回归(Logistic Regression)的糖尿病视网膜病变(Diabetic Retinopathy)检测
  17. 钻石DIAMOND一词来源于古法文DIAMAUND钻石
  18. 基于Vue和SpringBoot的论文检测系统的设计与实现
  19. 大咖面对面 | Suji:从福岛到Mask Network
  20. ifconfig命令结果详解

热门文章

  1. pycharm下debug详解
  2. WPF浏览本地html页面,并实现js交互
  3. 2020年中国经济蓝皮书(第三部分)
  4. GAE上部署micolog
  5. 手语识别 机器学习_SLR-手语识别挑战赛
  6. python 在线编程 实现_Python从0到1:让你达到独自实现深度学习项目的水准
  7. docker 原理之runc
  8. 你真的了解环形队列吗?(学习数据结构必须掌握的模型)
  9. 计算机网络基础与应用复习提纲,计算机网络基础与应用复习大纲.doc
  10. 用于 LLM 的公开的数值数据