李宏毅2022机器学习hw6

本文档是李宏毅2022年机器学习课程的第六次作业,目标是生成1000张二次元人脸。数据集来源于Crypko并提供了百度网盘链接。作业中探讨了四种不同的基线方法:基础代码运行、增加训练次数、将DCGAN改进为WGAN以及应用style-gan。
部署运行你感兴趣的模型镜像

目录

​Machine Learning HW6

一、任务

二、数据集

         Crypko:

三、结果

四、改进方法

        4.1 Simple line 

                运行课程上给的基础代码。

        4.2 Medium Baseline 

                增加训练次数

        4.3 Strong Baseline

                把DCGAN转化成WGAN

··              修改gp函数

                 修改loss函数

        4.4 Boss Baseline 

                 style-gan


Machine Learning HW6

一、任务

        二次元人物脸的生成,最后的目标是生成1000张二次元人物的人脸 

二、数据集

         Crypko:

        百度网盘:

        链接:https://pan.baidu.com/s/10QORgGHFEZ-nYETL_1miCw?pwd=a37q 
        提取码:a37q

三、结果

四、改进方法

        4.1 Simple line 

                运行课程上给的基础代码。

        4.2 Medium Baseline 

                增加训练次数

                将n_epoch调大 

"n_epoch": 50,
"n_critic": 2,

        4.3 Strong Baseline

                把DCGAN转化成WGAN

# 去掉discriminator最后一个sigmoid层。
# nn.Sigmoid()
# 使用nn.InstanceNorm2d层
def conv_bn_lrelu(self, in_dim, out_dim):
        return nn.Sequential(
            nn.Conv2d(in_dim, out_dim, 4, 2, 1),
            #nn.BatchNorm2d(out_dim),
            nn.InstanceNorm2d(out_dim),
            nn.LeakyReLU(0.2),
        )

··                修改gp函数

    def gp(self, r_imgs, f_imgs):
        Tensor = torch.cuda.FloatTensor
        alpha = Tensor(np.random.random((r_imgs.size(0), 1, 1, 1)))
        interpolates = (alpha*r_imgs + (1 - alpha)*f_imgs).requires_grad_(True)
        d_interpolates = self.D(interpolates)
        fake = Variable(Tensor(r_imgs.shape[0]).fill_(1.0), requires_grad=False)
        gradients = autograd.grad(
            outputs=d_interpolates,
            inputs=interpolates,
            grad_outputs=fake,
            create_graph=True,
            retain_graph=True,
            only_inputs=True,
        )[0]
        
        gradients = gradients.view(gradients.size(0), -1)
        gradient_penalty = ((gradients.norm(1, dim=1) - 1)**2).mean()
        return gradient_penalty

                修改loss函数

gradient_penalty = self.gp(r_imgs, f_imgs)
loss_D = -torch.mean(r_logit) + torch.mean(f_logit) + gradient_penalty
......
loss_G = -torch.mean(self.D(f_imgs))

        4.4 Boss Baseline 

                style-gan

!pip install stylegan2_pytorch
#训练模型
!stylegan2_pytorch --data faces --image-size 64 --batch-size 16 --num-train-steps=20000
#训练结束后,利用模型生成图片,可选择使用哪个epoch的模型来生成
!stylegan2_pytorch --generate --num_generate=4 --num_image_tiles=8
#生成转换动画
!stylegan2_pytorch --generate-interpolation --interpolation-num-steps 100

         

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想的小鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值