摘要
- 弱监督下复杂场景的条件图像生成。
- 用户可以对场景中出现的对象进行精细控制。
- 利用稀疏语义遮罩来控制对象的形状和类。
- 利用文本描述或属性来控制局部和全局样式。
- 提出了一种分解背景和前景的两步生成方案。
方法
骨架
我们主要关注的是复杂场景的有条件生成,即用户可对场景中出现的对象进行精细的控制。之前的工作主要集中在从真实mask生成物体、或基于简单手绘mask生成户外场景,但前者需要大量标注工作,后者不适用于复杂数据集(如COCO)。我们提出的模型以mask与文本/属性为条件,使用户可以通过各种图像操作生成不同的图像(移动、删除实例、改变物体颜色、改变整体风格等)(通过mask、属性、文本的不同去控制)。其中,通过文本控制是无监督学习。
稀疏mask:
我们不需要精确的语义分割mask,而是用从large-vocabulary detector自动产生的mask。与基于语义分割的弱监督设置相比,这个过程更少需要人工标注。我们对类的设置包括了可数物体(人、车),物体的一部分(灯、窗、门),与不可数的物体(草地、水、雪)。对于后一类,对象检测器仍然可以提供有关背景的有用稀疏信息,同时保持模型自治以填补空白。
两步生成:
没有约束的情况下,模型会从数据集中学习物体间的相关性,例如狗常站在绿草坪上,而斑马常站在黄色草坪上。但如果我们想要改变图中某一个物体(把狗换成斑马),这种关联是不可取的(否则小改变将带来整张图片的不同)。所以,我们采用两步生成的策略,第一步生成图像的背景,第二部生成图像的前景。背景包括静态或不可数的物体(建筑、道路、草坪、树、湖等),前景包括动态且可数的物体(车辆、动物)。所以,在改变前景时,我们可以通过冻结背景来避免上述问题。
属性:
允许童虎使用属性控制实例样式,例如颜色、材质(木材,玻璃)、属于特定类别(无叶、雪白)。也可以融合多个属性(黑+白)或没有属性(生成器采用预设方案)。
文本:
也可通过文本控制图片风格,这种控制关注图像的全局风格(如天气、一天中的时间)。自然语言比上述的属性更难学习,我们在此引入一个新的注意力模型解决它。
结构
我们设计的条件机制有足够的通用性,可以附加到现有的条件生成模型中。我们的实验用SPADE作为骨架,
D:multi-scale discriminator + feature matching loss
G:pretrained VGG + perceptual loss
一步模型:
通过修改生成器的输入层和CBN(conditional batch normalization)层,在模型中加入属性/文本等信息。也就是图中的S块,具体结构在后面。
S块:
对于类语义,输入的稀疏mask通过像素级embedding变成64维向量,To add style information, we optionally concatenate another 64D representation to the class embedding (pixel-wise)。
将得到的特征映射与一个3×3的核进行卷积,通过一个ReLU非线性并再次卷积,分别生成两个特征映射γ和β,即CBN的增益(gain)和偏差(bias)。
之后,可以求得y:y= BN(x)⊙(1 +γ) +β,其中BN()是无参数BN。
属性:
对于属性,我们采用bag-of-embedding的方法,从每个属性中学习到一个64维向量。将他们分配到每个实例并广播到这个实例的轮廓,加起来,并与上面的class embedding 进行拼接。
我们创造了“multi-hot Attribute mask”,1所在的位置表示该属性应用到这个实例,0表示没有。将这个mask通过1*1卷积,64通道输出。
文本:
用注意力,BERT,微调了最后的一层。这里不细看了。
两步生成:
如图,G1生成背景、G2生成符合背景的前景。
G1:
一个难题是:数据集中没有单纯的背景图片,所以无法针对G1训练鉴别器。为此,我们使用一个单一的最终鉴别器,并以鉴别器的梯度(加上辅助损耗)重定向到正确的生成器。
α是一个单通道图像,在[0,1]由一个sigmoid限定。α=1,梯度被定向到前景,α=0,梯度被定向到背景。我们监督αf产生二元交叉熵损失,并随时间衰减。
G1要在不渲染前景信息的前提下利用前景信息,它将背景mask输入s块得到γ与β。又将全部mask输入savg块(加了一个平均池化),移除位置信息。这样,前景信息只用于偏置G1,无法在精确的空间位置渲染。
G2:
运用相同的S块,但不同是它采用前景mask作为输入。