当前位置:网站首页>Zero-Shot Image Retrieval(零样本跨模态检索)
Zero-Shot Image Retrieval(零样本跨模态检索)
2022-07-25 11:08:00 【上杉翔二】
上一篇博文简要整理了元学习和少样本学习,本篇文章重点整理几篇利用零样本学习做检索的文章。该问题的难度在于使用人类草图被用作查询以从不可见的类别中检索照片:
- 草图和图片的跨模态域差异大。sketch只有物体的轮廓,与image相比只有很少的信息。
- 由于不同人的绘画风格不一样,sketch的类内方差也很大。
- 怎么适应大规模检索,适应从Unseen中检索出图片。

A Zero-Shot Framework for Sketch Based Image Retrieval
来自ECCV2018。主要是思想是利用生成模型来解决问题,这样做的好处是通过生成模型,可以补充一些sketch信息,从而能使模型能够学会将草图的轮廓、局部形状等特征与图像的相应特征联系起来。具体模型如上图,左边和右边是作者的两个架构CVAE和CAAE,即分别用了两类主流的生成模型做测试(VAE和GAN)。
- CVAE是使用条件变分自编码器,即将某一个特征作为条件参与到VAE的重建,然后直接可以得到有损失 L = − D K L ( a ( z ∣ x i m g , x s k e t c h ) ∣ ∣ p ( z ∣ x s k e t c h ) ) + E [ l o g p ( x i m g ∣ z , x s k e t c h ) ] L=-D_{KL}(a(z|x_{img,x_{sketch}})||p(z|x_{sketch}))+E[log p(x_{img}|z,x_{sketch})] L=−DKL(a(z∣ximg,xsketch)∣∣p(z∣xsketch))+E[logp(ximg∣z,xsketch)]为了保留sketch的潜在对齐关系,加入重建loss,即图中的regularrization loss: L r e c = λ ∣ ∣ f N N ( x i m g ′ ) − x s k e t c h ∣ ∣ 2 2 L_{rec}=\lambda||f_{NN}(x'_{img})-x_{sketch}||^2_2 Lrec=λ∣∣fNN(ximg′)−xsketch∣∣22
- CAAE是使用对抗性自编码器。同样的,沿用GAN的对抗想法,前面的特征生成器作为生成器G要最小化损失 E z [ l o g p ( x i m g ∣ z , x s k e t c h ) ] + E i m g [ l o g ( 1 − D ( E ( x i m g ) ) ) ] E_z[log p(x_{img}|z,x_{sketch})]+E_{img}[log (1-D(E(x_{img})))] Ez[logp(ximg∣z,xsketch)]+Eimg[log(1−D(E(ximg)))]而判别器D要最大化损失 E [ l o g [ D ( z ) ] ] + E i m g [ l o g ( 1 − D ( E ( x i m g ) ) ) ] E_[log[D(z)]]+E_{img}[log (1-D(E(x_{img})))] E[log[D(z)]]+Eimg[log(1−D(E(ximg)))]同样也加上重建loss L r e c = λ ∣ ∣ f N N ( x i m g ′ ) − x s k e t c h ∣ ∣ 2 2 L_{rec}=\lambda||f_{NN}(x'_{img})-x_{sketch}||^2_2 Lrec=λ∣∣fNN(ximg′)−xsketch∣∣22
作者实验证明CVAE比CAAE更好,可能由于CAAE的对抗模型训练不稳定。

Semantically Tied Paired Cycle Consistency for Zero-Shot Sketch-based Image Retrieval
来自CVPR2019.其复杂的结构如上图,共有4个生成器和3个判别器。
- 四个生成器各有作用,分别学习不同方向的映射语义,可以兼顾对模态内语义的学习,也可以完成跨模态的语义对齐 G s k : X − > S , G i m : Y − > S , F s k : S − > X , F i m : S − > Y G_{sk}:X->S, G_{im}:Y->S, F_{sk}:S->X, F_{im}:S->Y Gsk:X−>S,Gim:Y−>S,Fsk:S−>X,Fim:S−>Y
- 而判别器也对应分别是判别两个模态内自己的特征,还有一个用于模态间特征的判别。
比较有趣的是Cycle Consistency Loss,这个博主在跨模态检索中整理过,算是解决跨模态的老办法了。使得特征不仅能映射到对应的语义空间,也能从语义空间再映射回原始的特征空间,这样可以加强特征的学习。 L c y c = E [ ∣ ∣ F s k ( G s k ( x ) ) − x ∣ ∣ 1 ] + E [ ∣ ∣ G s k ( F s k ( s ) ) − s ∣ ∣ 1 ] L_{cyc}=E[||F_{sk}(G_{sk}(x))-x||_1]+E[||G_{sk}(F_{sk}(s))-s||_1] Lcyc=E[∣∣Fsk(Gsk(x))−x∣∣1]+E[∣∣Gsk(Fsk(s))−s∣∣1]

Doodle to Search Practical Zero-Shot Sketch-based Image Retrieval
来自CVPR2019.还是尝试找映射关系,只是引入GRL提供Reward来指导嵌入。其中会有三个损失:
- Triplet loss,构建正例对和负例对,然后这使pair属于相同的类的分数高于不同类。
- Domain loss,使用GRL将两个模态的特征投影到同一空间,以获得一个与域无关的嵌入。
- Semantic loss,这里就会有引入word Embedding来加强两者的联系。即强制嵌入包含语义信息通过重构词语义。
最后的损失函数由他们三者组成: L = α 1 L t + α 2 L d + α 3 L s L=\alpha_1L_t+\alpha_2L_d+\alpha_3L_s L=α1Lt+α2Ld+α3Ls

Zero-Shot Sketch-Based Image Retrieval via Graph Convolution Network
来自AAAI2020.作者认为以上的一些生成模型,对于生成可能的图像特征并不能有效地利用侧信息,并且也不稳定。所以提出了一个GCN模型来缓解上述缺点。 模型图如上,SketchGCN模型包含三个子网络,即编码网络、语义保持网络和语义重建网络。
- 编码网络试图将草图和图像嵌入到一个共同的语义空间中。
- 而语义保持网络以特征作为输入,利用侧信息迫使它们保持类别级关系。这里主要就是想学习类别之间的关系(毕竟任务的关键是从seen到unseen的学习,所以类别知识很重要),以转移知识。所以这里直接用特征信息构图然后GCN就行了。 H ( l + 1 ) = σ ( A ′ H ( l ) W ( l ) ) H^{(l+1)}=\sigma(A'H^{(l)}W^{(l)}) H(l+1)=σ(A′H(l)W(l))这里的图构建其实就是用语义特征计算相似度 a i , j = e − ∣ ∣ s i − s j ∣ ∣ 2 2 t a^{i,j}=e^{-\frac{||s_i-s_j||^2_2}{t}} ai,j=e−t∣∣si−sj∣∣22
- 语义重构网络进一步迫使提取的特征保留它们的语义关系。这里就和前面的一些模型一样,用CVAE,重构loss,语义loss等一起约束空间的学习。

Learning Cross-Aligned Latent Embedding for Zero-Shot Cross-Modal Retrieval
来自AAAI2020,这篇工作是用文本去跨模态检索。方法上不直接使用类嵌入作为语义空间,而训练了一个多模态变分自动编码器(VAE),学习的潜在嵌入,特别是用class作为bridge,然后通过匹配它们的参数化分布来对齐。模型如上图,先为这三个模态各自学习一个VAE,然后image和text做循环一致性的转换,再各自重建。
比较有意义的是在跨膜空间的对齐做了两个约束:
- 以类嵌入为桥梁,对潜在嵌入的多元高斯分布进行两两模式对齐。具体是算了一个2-Wasserstein distance。
- 由于图像和文本模式之间的关联是通过类嵌入隐式构建的,因此在这里考虑了另一种方案来显式地增强这两种模式的语义相关性。具体是算了maximum mean discrepancy (MMD)。
最后的loss还是以上各个loss的加和。

Correlated Features Synthesis and Alignment for Zero-Shot Cross-Modal Retrieval
来自SIGIR2020,作者和上一篇文章是一样的,所以做法也比较类似,但是将VAE换成了GAN,然后对模态内和模态间做工作。
模型架构图如上,先对class和image之间做WGAN,再对class和text做WGAN(所以其实和上篇比较相似的点是将class作为桥梁),然后也是各自判别器算loss,再算统一的Semantic Space的循环一致性和分布对齐loss,最后也是整集所有的loss。
边栏推荐
- 一文入门Redis
- JS process control
- Varest blueprint settings JSON
- A beautiful gift for girls from programmers, H5 cube, beautiful, exquisite, HD
- Teach you how to configure S2E to UDP working mode through MCU
- winddows 计划任务执行bat 执行PHP文件 失败的解决办法
- OSPF综合实验
- 如何解决“W5500芯片在TCP_Client模式下,断电重启之后无法立即连接到服务器”的问题
- 布局管理==PYQT5
- Experimental reproduction of image classification (reasoning only) based on caffe resnet-50 network
猜你喜欢
随机推荐
Management of software defects
Return and finally? Everyone, please look over here,
Summary of combination problems of Li Kou brush questions (backtracking)
Web APIs(获取元素 事件基础 操作元素)
LeetCode 50. Pow(x,n)
Brief description of model deployment
Flinksql client connection Kafka select * from table has no data error, how to solve it?
What is the global event bus?
Introduction to pl/sql, very detailed notes
Talking about Devops monitoring, how does the team choose monitoring tools?
W5500多节点连接
【高并发】高并发场景下一种比读写锁更快的锁,看完我彻底折服了!!(建议收藏)
W5500上传温湿度到oneNET平台
各种控件==PYQT5
MySQL historical data supplement new data
Common linear modulation methods based on MATLAB
Eigenvalues and eigenvectors of matrices
任何时间,任何地点,超级侦探,认真办案!
JS interview question: handwriting throttle function
如何解决“W5500芯片在TCP_Client模式下,断电重启之后无法立即连接到服务器”的问题









