NTU ML2023Spring Part3.6 Diffusion model

License: CC BY-NC-SA 4.0

上来要做 data augmentation,于是翻了一下 pytorch 的官方文档。发现 torchvision.transforms.v2 更好。

TL;DR We recommending using the torchvision.transforms.v2 transforms instead of those in torchvision.transforms. They’re faster and they can do more things. Just change the import and you should be good to go. Moving forward, new features and improvements will only be considered for the v2 transforms.

大锅乱炖了一些 augmentation。

self.transform = v2.Compose([
    v2.ToImage(),
    v2.RandomRotation(15),
    v2.RandomAutocontrast(),
    v2.RandomHorizontalFlip(p=0.5),
    v2.RandomResizedCrop(image_size, scale=(0.9, 1.0)), # resize
    v2.ToDtype(torch.float32, scale=True)
])

运行的时候发现 torchvision 版本太旧不支持 v2,所以白改了。

然后要 plot the sampling process,于是把上一个作业(ml2025hw4)中展示图片的函数稍微改改直接拿来用。发现 javascript error,又白改了。

随后运行了一发。跑了大概一个小时不出结果,开始怀疑人生。4700s 时突然报了个错。好在看了输出记录后发现是训练完后才报的错。

发现生成的图片有旋转,鉴定为 data augmentation 里旋转太多导致的。

报错是因为 Inference 的部分中没找到文件:

ckpt = '/content/drive/MyDrive/ML 2023 Spring/model-55.pt'

(这一行应该是没改干净,不过可以看出来要训练至少 55000 次)

这是 step=1000 时产生的图片:

image

感觉像带花纹的布料。

step=2000:

image

不知道为什么都是偏暖色系的,可能和随机数有关。眼睛开始成形了。

step=4000:

image

有人脸的形状了。

step=6000:

image

这次是冷色系的。开始出现旋转的问题。

step=10000:

image

一眼看上去比较像,但多看看还是能发现问题。

修改了一下 data augmentation(最大旋转角度从 15 度改成了 5 度),再跑了一次,从上次的模型接着训练。

step=12000:

image

人脸有些扭曲,不知道是不是 data augmentation 的锅。

step=15000:

image

有的图片还可以,有的就感觉五官放错了位置。

step=20000:

image

其实和 step=15000 没什么本质差别。

调一次参即使是在有 GPU 的情况下也要等好久,果然 diffusion 这种东西还是不适合平民玩家(

posted @ 2025-04-05 21:39  383494  阅读(14)  评论(0)    收藏  举报