FineGAN:细粒度对象生成和发现的无监督层次解耦

摘要

  我们提出一个新颖的无监督GAN框架FineGAN,它能够解耦背景、对象形状和对象的外观来层次地生成细粒度对象分类的图像。为了不使用监督来解耦这些变量,我们的核心思想是使用信息原理来将每个变量和一个隐编码相关联,用一个特定的方法来训练这些编码之间的关系,以诱导需要的层次。通过大量的实验,我们证明FineGAN达到了期望的解耦,生成细粒度类别的鸟类、狗和汽车的真实和多样的图像。利用FineGAN的自动学习特征,我们还对真实图像进行聚类,作为解决无监督细粒度对象类别发现这一新问题的首次尝试。我们的code/模型/demo放在这个github链接

1 Introduction 

  考虑上面这些图片:如果给定一个任务,将任意图像分为一组,作为人类,我们可以轻松地说出A、B和C、D不会被分为一组,因为他们有完全不同的背景和形状。但是C和D呢?他们共享相同的背景,形状和大概的颜色。然而,经过仔细观察,我们发现甚至C和D都不能被分为一组,因为C的喙是黄色的,尾巴有大大的白色斑点,而D的喙是黑色的,它的尾巴有细的白色条纹。这个例子证实,聚类细粒度的对象类别不仅需要对背景、形状和外观(颜色/纹理)进行解耦,还需要自然地以一种分层的方式进行。

  在这篇文章的工作中,我们的目标是开发一个模型,它可以做到:不使用任何手动的细粒度标注,通过层次解耦背景、对象的形状和外观,对细粒度对象类别进行建模。特别地,我们在解决无监督细粒度对象聚类(或称“发现”)这个新问题上进行首次尝试。尽管无监督对象发现和细粒度识别都已经有了很长的历史,在无监督对象分类发现上的先验工作仅仅关注聚类入门级的类别(例如:鸟类、汽车、狗),而现有的细粒度识别工作仅仅关注有监督的环境,即提供ground truth的细粒度类别标注。

  为什么无监督发现会是这样一个困难的问题?我们有两个关键的动机。第一,细粒度标注需要相关领域的专家。因此,总体的标注过程是非常昂贵的,并且不能使用标准的众包技术,这限制了能够被收集到的训练数据的数量。 第二,无监督学习使数据中那些没有被标注者标注过的隐结构的发现变得可能。例如,细粒度图像数据集常常有固有的层次组织,类别可以首先基于一个特征(例如形状)分组,接下来再基于另一个(例如外观)进行区分。

  主要Idea:我们假定一个有“层次地生成细粒度细节图像”能力的生成式模型,也可以对真实图像的细粒度分组有用。因此,我们提出FineGAN,一个新颖的层次无监督生成对抗网络框架,它可以生成细粒度类别的图像。

  FineGAN通过层次地生成和缝合一个背景图,一个捕捉对象的一个变量的父图像,和一个捕捉另一个变量的子图像,生成一张细粒度的图像。为了不使用任何监督地解耦这个对象的两个变量,我们使用信息论,和InfoGAN相似。特别地,我们强制以下两种互信息是高的:(1)父隐编码和父图像,(2)子隐编码,由父隐编码训练得出,和子图像。通过在父和子隐编码关系上的强制约束(特别地,通过对子编码进行分组,每一组有着相同的父编码),我们可以诱导父和子编码来分别捕获对象的形状和颜色/纹理细节。见图1。这是因为在许多细粒度数据集中,对象常常在相近的形状上有不同的外观。(例如‘Yello-billed Cuckoo’和‘Black-billed Cuckoo’,他们分享相同的形状,但是它们的喙的颜色和翅膀纹理是不同的)

 图1.FineGAN解耦背景、对象形状(双亲),和对象外观(孩子)来层次地生成细粒度对象,不使用遮罩或细粒度标注。

  此外,FineGAN自动地在父与子阶段生成遮罩,可以帮助训练隐编码,使它们专注对应的对象factor,且将生成的图像跨阶段拼接在一起。最终,通过这个无监督层次图像生成过程学习到的特征可以被用于将真实图像聚类到它们的细粒度类别。

 Contributions:我们的工作有两个主要的贡献:

  (1)我们介绍了FineGAN,一个学习层次地生成细粒度对象类别的背景、形状和外观的无监督模型。通过多种质量评估,我们证实了FineGAN有能力精确地解耦背景、对象形状和对象外观。更多地,在三个benchmark数据集上的质量评估(CUB,Stanford-dogs,Stanford-Cars)证实了FineGAN在生成真实和多样图像上的强大。

  (2)为了无监督细粒度对象类别的发现,我们使用FineGAN学习到的解耦表征来聚类真实图像。 它产生显著比当前最先进的无监督聚类方法(JULE和DEPICT)更加精确的细粒度的聚类。据我们所知,这是在无监督环境下聚类细粒度类别的首次尝试。

2 Related Work

 这里列举了四个方面的相关工作,分别是细粒度类别识别、视觉对象的发现和聚类、解耦表征的学习、GANs和stagewise图像生成 

3 Approach

  令\chi =\left \{ x_{1},x_{2},...,x_{n} \right \}为一个包含无标签细粒度对象类别图像的数据集。我们的目标是学习一个无监督生成式模型,FineGAN,产生和真实数据分布p_{data}(x)匹配的高质量图像,同时也学习解耦\chi中图像相关的factors。

  我们考虑到对象的背景、形状、外观和姿势/位置作为变体factors。如果FineGAN可以成功地将每个隐编码和一个特定的细粒度类别aspect(例如:一只鸟的形状和翅膀颜色)关联起来,那么它学习到的特征也可以被用于分组\chi中的真实图像,用于无监督细粒度对象分类发现。

 3.1 层次细粒度解耦

  图2展示了我们的FineGAN结构,用于建模和生成细粒度对象图像。总体过程有三个相关的的阶段:背景,父,和子。背景阶段生成一个真实背景图像B。父阶段生成对象的轮廓(形状),并且将它拼接到B,生成父母图P。孩子阶段用适当的颜色和纹理填充对象的轮廓,生成最终的孩子阶段图像C。完整过程的目标函数是:

  下标b,p和c的分别表示背景、双亲和孩子阶段的目标函数,\lambda,\beta,\gamma分别表示它们的权重。所有阶段的训练都是端到端的。

  不同的阶段根据不同的隐编码进行,如图2所示。FineGAN的输入:i)一个连续噪声向量z\sim N(0,1);ii)一个分类背景编码b\sim Cat(K=N_{b},p=1/N_{b});iii)一个分类双亲编码p \sim Cat(K=N_{p},p=1/N_{p});iv)一个分类孩子编码c \sim Cat(K=N_{c},p=1/N_{c})

图2.层次细粒度图像生成的FineGAN结构。背景阶段,给定随机向量z和背景编码b的条件,生成背景图B。双亲阶段,给定条件z和双亲编码p,用B作为遮盖来生成双亲图P,P能够捕获对象的形状。孩子阶段,给定c作为条件,使用P作为遮盖来生成最终孩子图像C,将对象的外观细节拼合到形状轮廓中。

  隐编码之间的关系:

(1)双亲编码和孩子编码。我们假设\chi中存在隐式层次结构——如前所述,细粒度类别通常可以首先基于常见形状进行分组,然后根据外观进行区分。为了帮助发现此层次结构,我们施加了两个约束:(i)双亲编码的类别数目被设定为小于孩子编码\left ( N_{p} < N_{c} \right ),(ii)对于每个双亲编码p,我们为它绑定一个固定的孩子编码c的数目(多个孩子编码共享相同的双亲编码)。这些约束帮助推动p来捕获形状,c来捕获外观。例如,假如p捕获到的形状实体是一只鸭子,那么绑定到这个pc的集合都会共享这个相同的鸭子形状,但是它们的颜色和纹理不同。

(2)背景编码和孩子编码。对象和它被发现的背景(例如,鸭子在水中)之间经常有一些关联。因此,为了避免对象和背景之间产生矛盾(一个真/假判别器能够轻松地说出一张图片是假的),我们设置背景编码和孩子编码在训练中相同\left ( b=c \right )。然而,我们可以轻松地在训练中解开这个约束(例如生成一直在树上的鸭子)

3.1.1 背景阶段 Background stage

  背景阶段合成一个背景图像B,作为双亲和孩子阶段的遮盖来拼接不同的前景aspects到B上。因为我们的目标是解耦背景,将背景作为一个分离的factor,B就不应当包含任何前景信息。因此我们将背景阶段从双亲和孩子阶段中分离出来,共享一个共同的特征pipeline。这个阶段包括一个生成器G_{b}和一个判别器对D_{b}D_{aux}G_{b}给定的条件是隐背景编码b,它控制不同的(未知)背景类别(例如:树木,水,天空),和隐编码z,控制类内背景细节(例如树叶的位置)。为了生成北京,我们假定可以使用一个对象边界框探测器,可以探测超类的物体(例如鸟)。我们用这个超类的探测器来在每个真实图像x_{i}上定位无对象的背景patches。接下来使用两个目标函数来训练G_{b}D_{b}L_{b}=L_{bg\_adv}+L_{bg\_aux},其中L_{bg\_adv}是对抗loss,L_{bg\_aux}是辅助的背景分类loss。

  对于对抗lossL_{bg\_adv},我们在patch level使用判别器D_{b}(我们假定背景可以很轻松地被建模为纹理)来预测一个N\times N的网格,每个成员表示相关的输入图像中的patch的真/假评分:\

   辅助分类lossL_{bg\_aux}使背景生成任务更加明确,它也是在patch级别上计算的。特别地,在真实图像中探测到的对象的内部和外部进行的patches为前景(1)和背景(0)建立训练集,同时被用于通过交叉熵损失来训练一个二元分类器D_{aux}。接下来,我们用D_{aux}来训练G_{b}

  ​​​​​​  这个loss更新了G_{b},因此D_{aux}分配了一个高的背景概率给生成的背景patches。

3.1.2 Parent stage

  如前所述,我们通过一个经由双亲和孩子阶段的两级前景生成过程,对真实数据分布p_{data}(x)进行建模。双亲阶段可以被看作对对象的高等级信息进行建模,例如它的形状,孩子阶段以双亲阶段为条件,可以被看作对低等信息进行建模,例如颜色,纹理。

  用这种方法捕获多级别信息可以得到隐含的优势。首先,它使总体的图像生成过程更加规范,同时更加易于解释;和那些整个网络生成一张图像的模型对比,我们的模型不同的子网络可以仅关注合成它们关心的对象实体。第二,对于细粒度生成,它可以使模型在以对象的形状作为条件,生成外观细节时更加轻松,而不需要担心背景和其他因素。相同的原因下,和平级特征表征相比,这样的层次特征——双亲捕获形状,孩子捕获外观——也可以对细粒度类别产生好处。

  现在我们讨论双亲阶段的工作细节。如图2所示,G_{p}包括一组卷积层和残差块,将zp映射到特征表征F_{p}。如前面讨论的那样,这个阶段的需求只是生成一个前景实体,然后将它拼合到现有的背景图B。因此,两个生成器G_{p,f},G_{p,m}F_{p}转换到双亲前景P_{f}和双亲遮罩P_{m}P_{m}可以被用于将P_{f}拼合到B,以此来获得双亲图P

  其中P_{f,m}=P_{f}\odot P_{m}B_{m}=\left ( 1-P_{m} \right )\odot B表示有遮罩的前景和反转遮罩的背景图,如图2绿色箭头所示。这个生成一个遮罩并将其用于拼接的idea是受到了LR-GAN的启发。 

  我们又在双亲阶段使用一个判别器,将其表示为D_{p}。它的功能与其他阶段的判别器不同。这是因为和背景以及孩子阶段对比,在这两个阶段我们知道真实的建模分布,而在双亲阶段的真实分布PP_{f,m}是未知的。(即我们有真实的背景patch样本和对象的真实图像样本,但是我们没有任何真实的中间图像样本,使对象的一个factor(如形状)是存在的,另一个factor(如外观)是缺少的)。因此,我们不能使用标准的GAN目标函数来训练D_{p}

  因此,我们只使用D_{p}来诱导双亲编码p来表征层次概念,即对象的形状。不使用图像标签的监督,我们利用信息论来以完整的无监督模式来探索这个概念,类似InfoGAN。特别地,我们最大化互信息I\left (p,P_{f,m} \right )D_{p} 近似于后验P\left ( p \mid P_{f,m} \right )

  我们使用P_{f,m}代替P,因此D_{p}单独基于前景对象(形状)来做决策,而不被背景影响。简而言之,D_{p}P_{f,m}中重建隐层次类别信息(p),这个信息在它的合成过程中已经被编码。我们在3.1节中给定了约束,双亲类别少于孩子类别\left ( N_{p}<N_{c} \right ),多个孩子编码共享同一个双亲编码,FineGAN尝试将p编码到P_{f,m}:(i)仅靠它自己,不能捕获所有的细粒度类别细节,(ii)对多个细粒度类别很普遍,这是层次的本质。

3.1.3 Child Stage

  前面的阶段的结果是一张图像,包含背景和对象的轮廓。剩下的任务就是用适当的纹理和颜色来填充这个轮廓,生成最终的细粒度对象图像。

  如图2所示,我们用孩子编码c来编码颜色和纹理信息。和F_{p}连接,特征结果chunk被输入到G_{c}中,包含一组卷积层和残差块。和双亲阶段相似,两个生成器G_{c,f},G_{c,m}将特征结果表征F_{c}映射到孩子前景C_{f}和孩子遮罩C_{m}。拼合以获得完整的孩子图像C

  现在我们讨论孩子阶段判别网络D_{adv}D_{c}:(i)使用D_{adv}判别\chi中的真实样本和生成式分布的虚假样本;(ii)使用D_{c}来近似后验P\left ( c\mid C_{f,m}\right ),将隐编码c和细粒度对象细节(例如颜色和纹理)关联起来。loss函数因此可以被分为两个部分:

   我们使用C_{f,m}代替C,因此D_{c}基于对象(颜色/纹理和形状)单独做出决策,不受背景影响。形状已经通过双亲编码p被捕获,孩子编码c现在可以只关注形状内部的颜色和纹理。

3.2 细粒度对象类别发现

给定我们训练好的FineGAN模型,我们现在可以用它来计算真实图像x_{i}\in \chi的特征,将它们聚类到细粒度对象类被。利用最终合成的图像\left \{ C_{j} \right \}和它们相关的双亲和孩子编码来学习一个从图像到编码的映射。请注意,我们不能直接使用双亲和孩子判别器D_{p},D_{c}——分别将\left \{ P_{f,m} \right \}\left \{C_{f,m} \right \}分类到其中一个双亲和孩子编码——因为真实图像的前景遮罩不可获得。取而代之,我们训练一对卷积网络\left ( \phi _{p},\phi_{c} \right )来预测最终的合成图像\left \{ C_{j} \right \}的双亲和孩子编码。

  为了精确地从C_{j}中预测双亲编码p,\phi_{p}需要仅关注对象的形状。。。。

 

 

 

 

 

 

 

 

 

 

 

 

   

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值