介绍

任务:使用scene graph生成图像

输入:scene graph

输出:image

方法

image-20191114213812669

  • GCN:处理scene graph,生成每个object的embedding vector
  • OLN:使用embedding vector预测每个object的bounding box和segmentation mask,产生layout
  • CRN:根据layout生成image
  • 使用2个判别器进行对抗训练,分别用于判别image和object

Scene Graph

令 $\mathcal{C}$ 表示object category集合,$\mathcal{R}$ 表示relationship集合,则scene graph是一个元组 $(O, E)$,其中

$$ \begin{aligned} O&=\left\{o_{1}, \dots, o_{n}\right\},o_{i} \in \mathcal{C}\\ E &\subseteq O \times \mathcal{R} \times O \end{aligned} $$

GCN

在输入graph中,每个node和edge具有 $D_{in}$ 维的向量,GCN将给每个node和edge计算出 $D_{out}$ 维的向量。

给定输入向量 $v_{i}, v_{r} \in \mathbb{R}^{D_{i n}},\forall o_{i} \in O,\left(o_{i}, r, o_{j}\right) \in E$,GCN使用三个函数 $g_{s}, g_{p}, g_{o}$计算出输出向量 $v_{i}^{\prime}, v_{r}^{\prime} \in \mathbb{R}^{D_{o u t}}$

计算edge的输出向量:

$$ v_{r}^{\prime}=g_{p}\left(v_{i}, v_{r}, v_{j}\right) $$

计算node(object)的输出向量:

$$ \begin{aligned} V_{i}^{s} &=\left\{g_{s}\left(v_{i}, v_{r}, v_{j}\right):\left(o_{i}, r, o_{j}\right) \in E\right\} \\ V_{i}^{o} &=\left\{g_{o}\left(v_{j}, v_{r}, v_{i}\right):\left(o_{j}, r, o_{i}\right) \in E\right\} \\ v_{i}^{\prime}&=h\left(V_{i}^{s} \cup V_{i}^{o}\right) \end{aligned} $$

即根据 $o_i$ 的入边和出边计算输出向量。其中 $h$ 是一个pooling函数,它将一个向量集合pool成一个向量。

image-20191115000356337

Object Layout Network

为了生成图像,我们必须从graph domain转移到image domain。OLN使用object embedding向量生成scene layout,它包含每个object的segmentation mask和bounding box。

image-20191115001752398

Mask Regression Network

输入 $o_i$ 的 $D$ 维向量 $v_i$,输出 $M\times M$ 的binary mask $\hat{m}_i$。

Box Regression Network

输入 $o_i$ 的 $D$ 维向量 $v_i$,输出bounding box $\hat{b}_{i}=\left(x_{0}, y_{0}, x_{1}, y_{1}\right)$。

将embedding向量、mask与box通过双线性插值连接得到object layout,将所有object layout相加得到scene layout。

Cascaded Refinement Network

CRN由一系列convolutional refinement modules组成,空间分辨率依次升高。每个module以scene layout和前一个module的输出作为输入(第一个module则以高斯噪声 $z \sim p_{z}$ 和scene layout为输入)。

最后一个module的输出再经过2个卷积层后得到输出图像。

Discriminators

$D_{img}$ 用于保证生成图像realistic,$D_{obj}$ 用于保证每个object realistic以及类别正确。

$$ \mathcal{L}_{G A N}=\underset{x \sim p_{\text {rata }}}{\mathbb{E}} \log D(x)+\underset{x \sim p_{\text {date }}}{\mathbb{E}} \log (1-D(x)) $$

Training

损失函数:

  • Box loss:

$$ \mathcal{L}_{b o x}=\sum_{i=1}^{n}\left\|b_{i}-\hat{b}_{i}\right\|_{1} $$

  • Mask loss:$\mathcal{L}_{m a s k}$
  • Pixel loss:

$$ \mathcal{L}_{p i x}=\|I-\hat{I}\|_{1} $$

  • Image adversarial loss:$\mathcal{L}_{G A N}^{i m g}$
  • Object adversarial loss:$\mathcal{L}_{G A N}^{o b j}$
  • Auxiliary classifier loss:$\mathcal{L}_{A C}^{o b j}$

在实现中,在所有scene graph中添加一个特殊的image结点,保证图是连通的。

实验

  • COCO-stuff数据集(左4列)
  • Visual Genome数据集(右4列)

image-20191115003455109

Last modification:November 15th, 2019 at 12:41 am
如果觉得我的文章对你有用,请随意赞赏