建筑物Label to Facade"/>
GAN实战之Pytorch使用pix2pixGAN生成建筑物Label to Facade
pix2pixGAN的相关原理说明参考:
GAN笔记-- pix2pixGAN 网络原理介绍以及论文解读
一、数据集加载
数据集下载:pix2pixGAN训练数据集,建筑物数据集
解压分成后有两个文件夹base和extend,我们将base作为训练集,extend作为测试集进行测试
imgs_path = glob.glob('dataset/base/*.jpg')
annos_path = glob.glob('dataset/base/*.png')transform = transforms.Compose([transforms.ToTensor(),transforms.Resize((256, 256)),transforms.Normalize(0.5,0.5)])class CMP_dataset(data.Dataset):def __init__(self, imgs_path, annos_path):self.imgs_path = imgs_pathself.annos_path = annos_pathdef __getitem__(self, index):img_path = self.imgs_path[index]anno_path = self.annos_path[index]pil_img = Image.open(img_path)pil_img = transform(pil_img)anno_img = Image.open(anno_path)anno_img = anno_img.convert('RGB')pil_anno = transform(anno_img)return pil_anno, pil_imgdef __len__(self):return len(imgs_path)dataset = CMP_dataset(imgs_path, annos_path)
dataloader = data.DataLoader(dataset, batch_size=32, shuffle=True)
二、定义下采样模块和上采样模块
class Downsample(nn.Module):def __init__(self, in_channels, out_channels):super(Downsample, self).__init__()self.conv_relu = nn.Sequential(nn.Conv2d(in_channels, out_channels,kernel_size=3,stride=2,padding=1),nn.LeakyReLU(inplace=True),)self.bn = nn.BatchNorm2d(out_channels)def forward(self, x, is_bn=True):x = self.conv_relu(x)if is_bn:x = self.bn(x)return x
# 定义上采用模块
class Upsample(nn.Module):def __init__(self, in_channels, out_channels):super(Upsample, self).__init__()self.upconv_relu = nn.Sequential(nn.ConvTranspose2d(in_channels, out_channels,kernel_size=3,stride=2,padding=1,output_padding=1),nn.LeakyReLU(inplace=True))self.bn = nn.BatchNorm2d(out_channels)def forward(self, x, is_d
更多推荐
GAN实战之Pytorch使用pix2pixGAN生成建筑物Label to Facade
发布评论