Pytorch卷积自动编码器输出模糊,如何改进它?

bjp0bcyl  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(122)

我使用Pytorch创建了卷积自动编码器,并试图改进它。
对于编码层,我使用来自torchvision.models.resnet的预训练ResNet 18 model的前4层。
我有一个只有一个Convolutional layer的中间层,输入和输出通道大小为512。对于解码层,我使用Convolutional layers,然后是BatchNormReLU激活函数。
解码层减少每层的信道:512 -> 256 -> 128 -> 64 -> 32 -> 16 -> 3,并通过插值来增加图像的分辨率,以匹配编码部分中相应层的尺寸。对于最后一层,我使用sigmoid而不是ReLu
所有的Convolutional layer都是:

self.up = nn.Sequential(
                nn.Conv2d(input_channels, output_channels, 
                    kernel_size=5, stride=1,
                    padding=2, bias=False),
                nn.BatchNorm2d(output_channels),
                nn.ReLU()
            )

输入图像被缩放到[0, 1]范围并具有224x224x3形状。样本输出是(第一个来自训练集,第二个来自测试集):
First image
First image output
Second image
Second image output
知道为什么输出模糊吗?所提供的模型已经使用lr=0.00005Adam优化器围绕160 epochs~16000图像进行了训练。我正在考虑在上面给出的self.up中再添加一个Convolutional层。这将增加模型的复杂性,但我不确定这是否是改进模型的正确方法。

fnatzsnv

fnatzsnv1#

您可能对像素值使用了L2或MSE损失。截至2016年,SOTA将使用感知损失-一种使用CNN特征提取器的奇特方式(只需删除最终分类头)并使用特征的L2/MSE错误。
https://arxiv.org/abs/1603.08155

相关问题