SceneSketcher: Fine-Grained Image Retrieval with Scene Sketches

SceneSketcher: Fine-Grained Image Retrieval with Scene Sketches

Scroll Down

SceneSketcher: Fine-Grained Image Retrieval with Scene Sketches

到学校了,可以效率高一点学习了,背景是实验室工位开始的样子。
简单总结一下这篇论文,用GCN同时表达场景中不同物体的feature、label以及场景layout,并把sketch和image映射在同一特征空间。根据问题设计比较相似性的方法,并设计符合问题的loss。

1、Overview

1.1 Sketch Based Image Retrival问题

对于Sketch Based Image Retrival(后面简称为SBIR问题),这是属于Image Retrieval问题的一种。简单进行描述就是,根据徒手画出来的轮廓在gallery中搜索对应的图像也就是,sketch--->image这样一个过程,具体的如下所示。
image.png

SBIR问题又有很多分类,比如上图举例的是category的问题,就是说,画一个兔子的轮廓图,在搜索出来的图像中只是针对类别的信息。另外还有细粒度上的问题,即画一个兔子,这个兔子有不同的pose等信息,搜索出来的就是对应这个pose的细粒度的object。

接下来是和本文相关的在场景级别上的问题,和上述类似也分为粗粒度细粒度两种类型。把四种常见类型示意图举例如下:
image.png

1.2 问题难点

SBIR看起来是一个很有趣的任务,那它的难点存在于哪里呢?

首先,对于一个轮廓图和真实图像,直接看也会觉得无法对二者进行比较,二者之间存在很大的差距,因此如何把它们放在同一个特征空间是一个问题;其次,如何来比较二者的相似性;最后是损失函数的确定。

2、Scene-level FG SBIR

下面介绍本篇论文中的问题以及解决方案。

2.1 难点

除了1.2节中叙述的问题,在这个任务中还存在其他的一些问题。由于场景中包含不同的目标,而且除了目标的视觉特征,物体之间也有位置以及布局等信息,如何同时表达这些特征现在还是个问题。

2.2 Solution

网络结构如下所示。
image.png

本文主要用图来编码轮廓和图像,通过图将物体的信息和layout以及label都编码在一个节点当中,边来表示节点之间的联系,同时表达信息的同时,也将sketch以及image映射到了同一个特征空间;通过GCN处理之后,构造两种方法来比较输出之间的相似性,最后使用Triplet loss来计算loss,进而对网络进行更新。

2.3 具体流程

2.3.1 Scene Graph Generate

为了将多种信息都融合在一起同时表达,作者使用了图这种结构,每个节点都是蕴含这么多信息,每条边代表节点之间的关系。对于节点的构造,每个节点包含物体的visual features,label以及空间上的位置。作者使用DL模型来踢去深度视觉特征,使用word2vec将对应的label映射为向量,用一个四维的向量表示spatial position,其实就是对角的坐标,之后concat在一起作为一个node的信息。对于边的构造也较为简单,
image.png

其中的D代表着两个节点间的欧式距离。

2.3.2 Graph Encoder

这里就是基本的GCN update的流程,输入是上一层的特征矩阵以及这个节点的邻接矩阵,接着使用
image.png

进行更新。

2.3.3 Graph Similarity Function

通过上一节计算,得到了两个g1以及g2,具体的做法是构造一个特征矩阵,尺寸为 (g1中节点个数 x g2中节点个数),计算对应每个点的cosine距离,接着取每一行最大的,加一起去个平均,就是下面这个公式。
image.png

2.3.4 categroy-wide IoU

这个是基于IoU的一点改进,是用场景中的目标mask的并查集来进行交并的比较,公式如下。

image.png

2.3.5 Triplet Loss

本文使用triplet loss作为目标函数进行网络更新。它的思路就是让预测和gt距离尽可能的近一些,和负标签尽可能的远一些。说起来的公式就贼直白。
image.png

这里的d就是距离,那么有关这个d的定义呢,就是

image.png
好了,结束

2.4 结果

由于现有的sbir数据集都没有场景相关且细粒度的,所以他们自己从SketchCOCO里自己抽取了一些又按照规范采集了一些,做了自己的数据集,和现有方法比较,结果好了不少,但是自己的方法毕竟是根据这个新任务设计的,高也正常,最后的点数也不是太高。

image.png