Text Guided Person Image Synthesis

152 阅读7分钟

CVPR 2019 《Text Guided Person Image Synthesis》


在这里插入图片描述

本文完成的工作主要是根据具体文字描述来操纵行人图像,改变行人的外观。作者所提出的方法主要分为以下两个阶段:

  • stage 1:根据文字描述生成行人合理的姿态
  • stage 2:结合前一阶段生成的目标姿态,根据文本合成一个逼真的、外型转换的行人图像

作者认为所提出的方法可以从文本中提取足够的信息来建立文字空间和图像空间之间的映射,从而实现根据一定的描述文本生成对应的图像,基本上的效果就是这样


在这里插入图片描述

本文的主要贡献:

  • 提出了一种基于自然语言描述的人的图像处理新方法

  • 提出了一种基于GAN的人体姿态推理网络,可根据文本描述生成人体姿态

  • 提出了一种基于文本引导的生成行人图像两阶段框架,通过引入基于注意力机制的上采样和多模态损失,建立图像、姿态和自然语言描述之间的语义关系。两阶段的过程简单的如下所示


    在这里插入图片描述

  • 提出了VQA感知评分来评估与特定身体部位相对应的属性变化的正确性


Method

整个模型的主要目的是根据文字描述来转换给定图像中行人的外观,对于训练集中的行人用元组 ( x , x ′ , p , t ) (x,x',p,t) (x,x′,p,t)表示,其中 x x x为给定的原图像, x ′ x' x′为目标生成的图像, p p p是行人的姿态, t t t是文字描述。下面从两个阶段来具体的看一下实现原理。

Stage-I

这一部分的模型如下所示


在这里插入图片描述

在训练阶段,首先根据训练集归纳出一系列行人的基本姿态,如上basic poses所示。当给定一段文字描述后,使用LSTM将其转换为嵌入向量 φ t \varphi_{t} φt​,接着使用方位选择网络 F o F^o Fo根据 o = arg ⁡ max ⁡ o F o r i ( φ t ) , o ∈ { 1 , … , K } o = \arg \max _{o} F^{\mathrm{ori}}\left(\varphi_{t}\right), o \in\{1, \ldots, K\} o=argmaxo​Fori(φt​),o∈{1,…,K}依据文本描述从基本姿态集中选择一个方位最相符的姿态 p o b a s i c p_{o}^{basic} pobasic​,最后使用生成器 G 1 G1 G1来调整关节来得到细粒度的姿态 p ~ \tilde{p} p~​。

作者认为直接从文字中 生成对应姿态的行人图像有些困难,因此这里借助一个中间过程来缓解这个问题。首先根据训练集中行人的方向将其聚成 K K K个簇,然后对于每一个簇计算平均姿态 p i b a s i c p_{i}^{basic} pibasic​,从而得到基本姿态集 { p i  basic  } i = 1 K i \left\{p_{i}^{\text { basic }}\right\}_{i=1}^{K^{i}} {pi basic ​}i=1Ki​。

当得到生成的假姿态后,使用判别器 D 1 D_{1} D1​来判别它是否符合文本描述,从而迫使 G 1 G_{1} G1​更多的关注文本描述中的细节信息。 G 1 G_{1} G1​和 D 1 D_{1} D1​的损失函数为 L G 1 = − E t ∼ p  data  [ log ⁡ D 1 ( G 1 ( p o  basic  , φ t ) ) ] \mathcal{L}_{G_{1}}=-\mathbb{E}_{t \sim p_{\text { data }}}\left[\log D_{1}\left(G_{1}\left(p_{o}^{\text { basic }}, \varphi_{t}\right)\right)\right] LG1​​=−Et∼p data ​​[logD1​(G1​(po basic ​,φt​))] L D 1 = − E p ∼ Pr ⁡ ( p ) [ log ⁡ D 1 ( p ) ] − E p ~ ∼ Pr ⁡ ( p ~ ) [ log ⁡ ( 1 − D 1 ( p ~ ) ) ] \begin{aligned} \mathcal{L}_{D_{1}}=&-\mathbb{E}_{p \sim \operatorname{Pr}(p)}\left[\log D_{1}(p)\right] \\ &-\mathbb{E}_{\tilde{p} \sim \operatorname{Pr}(\tilde{p})}\left[\log \left(1-D_{1}(\tilde{p})\right)\right] \end{aligned} LD1​​=​−Ep∼Pr(p)​[logD1​(p)]−Ep~​∼Pr(p~​)​[log(1−D1​(p~​))]​但作者发现仅用上述的对抗损失项不能很好的生成行人的结构,因此这里又添加了一个均方误差项 L m s e = ∥ p ~ − p ∥ 2 \mathcal{L}_{\mathrm{mse}}=\|\tilde{p}-p\|^{2} Lmse​=∥p~​−p∥2来帮助更好的生成行人的结构,因此第一阶段总的损失项为 L  Stage-l  = L G 1 + λ 1 L m s e + λ 2 L c l s \mathcal{L}_{\text { Stage-l }}=\mathcal{L}_{G_{1}}+\lambda_{1} \mathcal{L}_{\mathrm{mse}}+\lambda_{2} \mathcal{L}_{\mathrm{cls}} L Stage-l ​=LG1​​+λ1​Lmse​+λ2​Lcls​。

Stage-II

根据第一阶段生成的姿态 p ~ \tilde{p} p~​以及文字描述来编辑行人的外观,比如衣服的颜色等,从而生成最终的图像。这部分的模型架构如下所示:


在这里插入图片描述

上图中最重要的一个部分便是Attention Upsampling Module(AU) ,可以更好地将不同模式和空间尺度的信息整合到图像生成中。AU接收 e e e和 s i s_{i} si​作为输入,然后计算一个动态的text-to-visual注意力得分,这个分数表示了文字描述中的每一个词对于生成图像每个局部区域的影响程度,计算公式为 F i a t t n ( e ^ i , v ‾ i ) = e ^ i Softmax ⁡ ( e ^ i ⊤ v ‾ i ) F_{i}^{\mathrm{attn}}\left(\hat{e}_{i}, \overline{v}_{i}\right)=\hat{e}_{i} \operatorname{Softmax}\left(\hat{e}_{i}^{\top} \overline{v}_{i}\right) Fiattn​(e^i​,vi​)=e^i​Softmax(e^i⊤​vi​)。然后使用 u i = F i u p ( z i , s i , u i − 1 ) u_{i}=F_{i}^{\mathrm{up}}\left(z_{i}, s_{i}, u_{i-1}\right) ui​=Fiup​(zi​,si​,ui−1​)进行上采样,最终得到 u m u_{m} um​,然后将其传给生成器生成图像 x ~ \tilde{x} x~。

为了计算了visual-to-text 表示与文本特征矩阵之间的相似性,作者使用了multi-scale visual-to-text distance D ( Q , T ) = ∑ i = 1 m log ⁡ ( ∑ j = 1 N exp ⁡ ( r ( c i j , e j ) ) ) \mathcal{D}(Q, T)=\sum_{i=1}^{m} \log \left(\sum_{j=1}^{N} \exp \left(r\left(c_{i j}, e_{j}\right)\right)\right) D(Q,T)=i=1∑m​log(j=1∑N​exp(r(cij​,ej​)))同时使用多模态相似 L M S L_{MS} LMS​评估句子和图像在成批配对时的交互响应 L M S = − ∑ i = 1 I log ⁡ P ( t i ∣ x i ) − ∑ i = 1 I log ⁡ P ( x i ∣ t i ) \mathcal{L}_{\mathrm{MS}}=-\sum_{i=1}^{I} \log P\left(t_{i} | x_{i}\right)-\sum_{i=1}^{I} \log P\left(x_{i} | t_{i}\right) LMS​=−i=1∑I​logP(ti​∣xi​)−i=1∑I​logP(xi​∣ti​)

第二阶段的损失项为 L  Stage-Il  = L G 2 + γ 1 L 1 + γ 2 L M S \mathcal{L}_{\text { Stage-Il }}=\mathcal{L}_{G_{2}}+\gamma_{1} \mathcal{L}_{1}+\gamma_{2} \mathcal{L}_{\mathrm{MS}} L Stage-Il ​=LG2​​+γ1​L1​+γ2​LMS​,其中 L 1 = ∥ ( x ~ − x ′ ) ⊙ M ∥ 1 \mathcal{L}_{1}=\left\|\left(\tilde{x}-x^{\prime}\right) \odot M\right\|_{1} L1​=∥(x~−x′)⊙M∥1​。而生成器和判别器的损失项为: L G 2 = − E x ~ ∼ Pr ⁡ ( x ~ ) [ log ⁡ D 2 ( x ~ , e ) ] ⎵  text conditional loss  − E x ~ ∼ Pr ⁡ ( x ~ ) [ log ⁡ D 2 ( x ~ , p ) ] ⎵  pose conditional loss  + − E x ~ ∼ Pr ⁡ ( x ~ ) [ log ⁡ D 2 ( x ~ , e , p ) ] ⎵  text and pose conditional loss  \begin{aligned} \mathcal{L}_{G_{2}}=& \underbrace{-\mathbb{E}_{\tilde{x} \sim \operatorname{Pr}(\tilde{x})}\left[\log D_{2}(\tilde{x}, e)\right]}_{\text { text conditional loss }} \underbrace{-\mathbb{E}_{\tilde{x} \sim \operatorname{Pr}(\tilde{x})}\left[\log D_{2}(\tilde{x}, p)\right]}_{\text { pose conditional loss }}+\\ & \qquad \underbrace{-\mathbb{E}_{\tilde{x} \sim \operatorname{Pr}(\tilde{x})}\left[\log D_{2}(\tilde{x}, e, p)\right]}_{\text { text and pose conditional loss }} \end{aligned} LG2​​=​ text conditional loss  −Ex~∼Pr(x~)​[logD2​(x~,e)]​​ pose conditional loss  −Ex~∼Pr(x~)​[logD2​(x~,p)]​​+ text and pose conditional loss  −Ex~∼Pr(x~)​[logD2​(x~,e,p)]​​​



VQA Perceptual Score

原理图如下所示,简单易懂:


在这里插入图片描述

实验

详情可见原论文~

总结

整体来看并不太属于text-to-image的任务,所以也就随便看了以下。另外前段时间看到同样是CVPR上的一篇文章,它可以在不生成行人骨骼图、姿态图等的情况下,直接生成清晰的行人图像,用于下游的行人检测任务,但是具体名字忘记啦。