使用encoder编码器-decoder解码器加GAN网络的生成式图像修复

发布时间 2023-04-23 17:19:35作者: 榫ning

论文链接

https://openaccess.thecvf.com/content_cvpr_2016/papers/Pathak_Context_Encoders_Feature_CVPR_2016_paper.pdf

简介

作者提出了一种基于上下文像素预测无监督视觉特征学习算法,它既完成了特征提取,也完成了图像修复

通过与自动编码器的类比,提出了上下文编码器(Context encoders),这是一种经过训练的卷积神经网络,可以根据周围环境生成任意图像区域的内容,也就是遮挡部分的内容。

为了成功完成这项任务,上下文编码器既需要理解整个图像的内容,也需要为缺失的部分生成一个合理的假设分布

这篇论文结合了Encoder-Decoder网络结构和GAN网络,AlexNet网络和一些卷积神经网络,E-D阶段用于学习图像特征生成待修补区域对应的预测图,使用GAN对抗学习来优化模型。

网络结构1---Encoder-Decoder

 

上下文编码器作为生成网络。通过编码器传递上下文图像,以获得使用全通道连接层连接到解码器的特征,随后解码器产生图像中缺失的区域。

此处的Channel-wise Fully Connected全通道连接层使得解码器中的每个单元可以对整个图像内容进行推理去解码,如果仅仅只使用全连接层而不是使用Channel-wise Fully Connected层来代替它的话会导致参数爆炸。

上述流程图产生的是缺失部分。

如果使用AlexNet网络进行特征提取、修复,它使用的也是编码器,解码器,但它解码生成的是原始尺寸大小的。

网络结构2---Encoder

其中一个编码器结构就是源自于AlexNet结构,但不是为了Imagenet分类而训练的,而是用随机初始化的权重重新为上下文预测而训练的网络,也就是为了我们的提取特征进行解码而训练的编码器AlexNet结构。

Encoder:我们使用的是pool5,也就是第五层卷积层之后的那一层池化层之前的所有内容,(AlexNet是由5层卷积层+3层池化层构成的,pool5表示为最后一层池化层对应的第五层卷积层,因此叫做pool5,也就是处在第五层卷积的池化层,即全连接层之前的那个AlexNet架构,把他提取出来使用到我们的编码器里,然后再经过全通道连接层连接我们的解码器,使用解码器+上采样把他生成到和原始图一样的尺寸的内容。)

网络结构3---Channel-wise fully connected layer

 全通道连接层是对普通全连接层fc的一种改进,传统的fc层参数太多,因此作者提出可以在fc中去掉feature map层间的信息交流,从而减少参数规模,在fc之后会接一个步长stride为1的卷积层,来实现层间的信息交流,从而达到参数规模的效果。

网络结构4---Decoder

使用编码器产生的特征生成像素图像,然后在全通道连接层之后设置5个具有学习能力的filter的up-conv层,每一层都使用ReLu激活,产生解码,产生我们想要的图像。

损失函数1---Reconstruction Loss(重建loss)

使用的是MSE(L2)的损失函数

M:代表遮挡矩阵,里面是由1和0构成的,1代表被遮挡,0代表不被遮挡

 x:代表原始的输入图,即原始没有破损的那个输入图

:代表逐元素相乘

1-M代表遮挡部分置为0,去乘以x我们的原始图,说明我们被遮挡的部分就被置成了空白图像,因为rgb三通道的彩图之后,被设置为0就代表着x,1-M代表遮挡部分置为0,其余部分置为1,那么不被遮挡的部分就不变

:代表原始图像减去遮挡部分,即被遮挡图形

 

 

损失函数2---Joint Loss(联合loss)