GAN模型代码修改——3通道改1通道

GAN Model Code Modification — 3 Channels to 1 Channel

这个模型是为处理三通道图像(RGB)而设计的,而我需要处理一些黑白图像数据(灰度),所以我想将“ch”参数改为“1”的“3”。

此处提供完整代码 — https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html

如果我们只是改变这个参数——“nc = 3”-->“nc = 1”——而不调整生成器和判别器的代码块,执行只会给出一条错误消息:

RuntimeError: Given groups=1, weight of size [64, 1, 4, 4], expected input[128, 3, 64, 64] to have 1 channels, but got 3 channels instead

是否有关于如何修改此值或使用 this formula(形状部分)手动计算这些值的指南?

请指教

灰度图像是彩色图像的“特例”:当且仅当红色通道等于绿色等于蓝色时,像素具有灰色。因此,值为 [200, 10, 30] 的像素将呈绿色,而值为 [180, 180, 180] 的像素将呈灰色。
因此,使用预训练的 RGB 模型处理灰度图像的最简单方法是将灰度图像的单通道复制 3 次,以生成具有灰色的三通道类 RGB 图像。

问题是数据集对象创建问题,已得到出色解决 here

所以基本上我们需要替换这部分:

# Create the dataset
dataset = dset.ImageFolder(root=dataroot,
                           transform=transforms.Compose([
                               transforms.Resize(image_size),
                               transforms.CenterCrop(image_size),
                               transforms.ToTensor(),
                               transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),
                           ]))

有了这个:

# Create the dataset
dataset = dset.ImageFolder(root=dataroot,
                           transform=transforms.Compose([
                               transforms.Resize(image_size),
                               transforms.CenterCrop(image_size),
                               transforms.Grayscale(num_output_channels=1),
                               transforms.ToTensor(),
                               transforms.Normalize(0.5, 0.5),
                           ]))