简介
提出了一种能反映披萨制作过程的生成模型,基于GAN实现了可组合的模块操作,可以实现对披萨添加/删除特定的配料,甚至可以选择烹饪或者不烹饪输入的披萨。特别地,文章将图层分解问题表述为几个连续的不成对的图像到图像的转换。并且在合成的披萨图像和真实的披萨图像上进行了实验,实验结果表明:
- 在没有任何像素级监督的情况下,以弱监督的方式检测和分割比萨饼配料;
- 填充下方隐藏的内容;
- 在没有任何深度排序监督的情况下推断浇头的排序情况。
模型
- G + G^+ G+是用来添加对象到输入图像 I r − I^{r-} Ir−中的生成器; G − G^- G−是用来从输入图像 I r − I^{r-} Ir−中删除对象的生成器;
- 对应输入图像 I ∈ R H × W × 3 I\in{\Bbb{R}}^{H\times{W}\times{3}} I∈RH×W×3 图中 M + , M − ∈ [ 0 , 1 ] H × W M^+,M^-\in[0,1]^{H\times{W}} M+,M−∈[0,1]H×W,为图层蒙版,用来指示如何添加或删除图层的每个像素;
- A + ∈ R H × W × 3 A^+\in{\Bbb{R}}^{H\times{W}\times{3}} A+∈RH×W×3是用来捕获增加图层的外观的图像, A − ∈ R H × W × 3 A^-\in{\Bbb{R}}^{H\times{W}\times{3}} A−∈RH×W×3是用来捕获被删除图层遮挡的图像外观的图像。
- ⨀ \bigodot ⨀表示按元素乘机
生成器模型:
判别器模型: 判别器的作用是判断输入图像的真伪以及对所有类别的输入图像执行多标签分类任务。
损失函数
-
对抗损失:用来保证生成图像的真实性
-
分类损失:防止生成器增加或删除未指定的对象
-
循环一致性损失:防止两个生成器相互驳斥。在一张原始图像上添加图层之后在 删除该图层时,应该停止对原始图像的重构。
同时在增加并删除一个图层后,图像蒙版应该在对应的像素上保持不变,所以用同样的方式: -
正则损失:
-
总的损失函数:
图层顺序
做一个简单地实验,两个重叠的圆形,红色和绿色,上面一行先把红色移除,再把绿色移除;下面一行先把绿色移除,再把红色移除。这样做的区别是,可以观察到,先移除红色的情况下生成的两个图像蒙版的重叠部分较多;而先移除绿色的情况下生成的图像蒙版的重叠为0
因此我们可以通过查看哪些排序置换导致生成的蒙版之间的重叠度更高,来预测两个对象之间的排序。
但是在实际中,预测m个图层的顺序需要进行m!次排列组合,这显然是不可行的。因此可以通过仅查看m层之间的成对顺序来预测完整顺序,这只需要m次排列组合。
实验