LDM算法实验实践记录-Diffusion Models系列5

上篇文章向大家介绍了LDM算法的多个应用生成场景,这篇文章将记录LDM的实践过程中需要注意的一些细节。我们将以训练lsun数据集中lsun_churches子数据集为例进行说明。

LSUN(Large-scale Scene Understanding)数据集是一个用于图像理解和生成的广泛使用的数据集。我们基于LSUN数据集的church子数据集进行LDM相关实验,LSUN数据集采用了lmdb的格式进行的打包,在下载到本地后需先用unzip解压,然后用python的脚本程序进行导出。关于LSUN数据集的使用方式可以参考引文2。

关于LDM算法的开源实现这里加以说明几点:1、AutoEncoderKL类实现了一个扩展版本的VAE模型,增加了感知损失函数和GAN相关损失函数;2、CrossAttention等基于空间图像的Attention实现首先对四阶张量进行变形为三阶张量后和NLP中的transformer中的自注意机制的计算方式一样,其中crossattention中多了一个context的变量,如果没有传入context则自动退化为self attention的计算;3、DDPM和DDIM的采样均有实现,DDPM主要用于训练,DDIM主要是推理过程中进行采样;4、configs目录和models目录都定义了两个阶段模型的训练的配置文件,都可以作为–base这个选项的值传入,main.py是作为训练VAE和LDM两个模型的统一启动桥本文件,通过yaml文件的配置进行了训练任务的定义,main.py通过解析这个配置文件以支持不同的训练任务;5、可以通过conda创建特定的env来搭建实验环境,其中需要注意的是transformer的版本需要再补充定义一下(经验证transformer==3.0.0版本满足实验要求),可能当时开源这个代码的时候是和代码兼容的,但最新的transformer版本出现了不兼容的问题;6,在ddpm.py的1030行加上一句self.logvar = self.logvar.to(self.device),实现变量在同样的设备上,否则可能出现一个在cpu设备上一个在gpu设备上的运行时error。实验过程的一些问题记录可以参考引文3。

References


by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *