Y-Autoencoders: disentangling latent representations via sequential-encoding

论文链接:https://arxiv.org/pdf/1907.10949.pdf
代码链接:https://github.com/mpatacchiola/Y-AE

前言

Y-Autoencoders是2019年CVPR上的一篇的论文,这篇论文的创新点在于之前的Autoencoders的输入和输出一致,所以其主要用于图像压缩方面,对于Autoencoders的架构不清楚的可以参考我这篇博客,但是本文首次使用Autoencoders进行图像之间的翻译,也即是输出和输出不一致而且取得了较好的结果。

论文架构


1:简介 Y-Autoencoders是Autoencoders的一种变形,原始的Autoencoders的输入图像和输出图像一致,所以其主要用在数据的降维方面。按照原论文的说法Y-Autoencoders能够用在(图像翻译,image-to-image),分割图像风格和内容(separation of style and content) 。我们结合原论文的架构图分析一下模型架构的意义。为了便于理解我们首先定义一下模型中的相关参数,f表示编码器,g表示解码器,i表示隐层特征,y,e表示图像的类别:

2:编码器部分
模型的输入部分是系统输入一张图像x,然后经过编码器f得到两个隐层特征,e和i。相对于之前的Autoencoders中的而言,Y-Autoencoders的编码器的输出部分增加了一个类别标签e,而且类别标签e和原始的标签计算一个损失值。该损失函数的保证了编码器具有分类功能,进而保证每张图像经过编码器之后输出的隐层特征i具有一定意义。

3:图像重构
图像重构部分为上图左边,图像标签y和隐层特征i经过解码器g生成图像Xi,Xi和原始图像X使用均方误差保证保证输入图像和输出图像一致。对于这个操作的理解就是输入一张图像,然后得到了一个低维向量i,然后低维向量i又能恢复到原始图像。通过使用均方误差重构图像的损失,保证了低维向量i具有图像本身的特征(也即是其能恢复到原始的图像之中)。

4: 图像转化:image-to-image
在图像重构部分,我们知道了隐层特征i是一个具有输入图像原始特征的向量。现在我们探究一下Y-Autoencoders是如何实现不同类别图像之间的转化的。图像转化部分即是上图的右侧部分,将隐层特征i和一个相反的标签y~放到解码器中得到生成图像Xr。
注意此时理论上已经能够实现从男人到女人的转化了。但是为什么论文后面还要加上编码器f呢?我认为是有两个原因:第一模式坍塌,第二仅在以上的架构下很难实现图像类别之间的变化。话说之前我曾做过类似的实验PS(鄙人研一时的论文),整体架构和上述的方法一致,在mnist数据集上的时候,我发现能够实现输入图像转化成不同类别。但是将数据集换成celeba的时候很难转化,而且模型坍塌严重。但是得出的结论是经过编码器之后得到的低维向量非常接近,所以相对于使用随机噪音而言,其更有可能加剧模式坍塌。而且向量非常接近的话对应的y标签起到的作用就会更小。

生成图像和重构图像的编码操作
我们可以看到在得到重构图像Xi和生成图像Xr之后,对于这两幅图像我们使用编码器得到两者的对应的隐层特征Ii和Ir。
按照我上面说的,我们假设其存在的目的是为了解决模式坍塌和图像转化困难的问题。然后我们推测一下其为何能解决上述问题。
首先我们可以确定的是左图的重构图像Xi能够保证其和原始图像非常接近。然后生成图像Xr呢?其可能存在模式坍塌生成一种图像。但是我们通过增加一类损失函数保证Xr和Xi接近,这样的话就能保证生成的图像和原始图像的特征要接近,进而解决方式坍塌。

损失函数

我们把该篇论文的架构分成了四个部分,然后我们看一下每个部分对应的损失函数怎么设计的。

编码器部分的损失函数
编码器部分的损失函数只有计算类别损失值,其实对于深度学习中对于类别的损失函数,盲猜就是交叉熵。

在这里插入图片描述
图像重构的损失函数
图像重构部分是计算真实图像和重构图像的差异,这个一般都是均方误差。如下所示。
在这里插入图片描述
图像转化的损失函数
此部分要保证的是转化后的图像要尽可能符合我输入的标签,按照上图也即是尽可能的把我的图像判断为男人。其损失函数即为标签。
在这里插入图片描述
生成图像和重构图像的编码的损失函数
对于这部分的损失函数我们可以这样理解,重构图像部分的损失函数的目的是我尽可能的使其保留原始女性图像的特征。生成图像的部分的目的是尽可能的使的生成图像接近男人。通过训练最后的生成图像既有了原始图像的特征有看起来像个男人。
在这里插入图片描述
总损失函数
总的损失函数即为以上所有损失函数的总和,但是作者在论文中也讨论生成图像和重构图像的编码的损失函数和图像转化的损失函数这两部分损失函数的意义,做法就是把对应的系数设置为0或者1.
在这里插入图片描述

总结

我这人读论文大多只看结果的,但是单论结果而言这篇文章不算是多么惊艳,而且AE的一个通病生成图像模糊这个问题也没解决。但是单单是从能够使用Autoencoders进行图像翻译方面,这点还是不错的。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值