stable_diffusion来了,这个号称是最强的文本生成图片的模型它来了,相比较DAEE等大模型,它能够让我们消费级的显卡也能够实现文本到图像的生成。下面,我们也来试一下。
该服务器上必须要有的基础工具anaconda,wget,git和yum。令我吃惊的是,当我看到wget和yum互为前提的安装时,我头都大了。后来使用curl代替wget解决了yum的安装问题。
由于有官方详尽的介绍,因此很容易完成项目的搭建。
按照官方的地址,我们下载完源码。它是基于latent-diffusion而做的。
创建环境
conda env create -f environment.yaml
conda activate ldm
需要注意的是,里面有两个github的包,可以从github上下载后,放到src下,使用python进行安装,具体可以参考知乎。
额外注意的有以下3个部分:
(1)该项目至少要在torch>=1.9.0以上的环境中运行,否则会报错AttributeError: module 'torch' has no attribute 'inference_mode'
。
(2)当遇到ImportError: cannot import name 'autocast' from 'torch' (/root/anaconda3/envs/ldm/lib/python3.8/site-packages/torch/__init__.py)
问题时,需要注释掉txt2img.py里的import autocast(第14行)以及使用autocast的那一行(第280行),
(3)还有需要注意的是,如果遇到的问题是AttributeError:module ‘distutils’ has no attribute 'version
,那么需要安装低版本:
pip uninstall setuptools
pip install setuptools==59.5.0 //需要比你之前的低
今天是中秋节,我本想使用“海上生明月,天涯共此时”来进行生成,但是很难搞定。只好使用如此笨拙的方式进行生成,还是第一次使用,没有掌握到prompt的精髓,大家可以加以改进。
python scripts/txt2img.py --prompt "There is a bright moon on the sea, and there is a big ship. There are many people on the ship. People look up at the direction of the moon." --plms --outdir ./Workspace --ckpt ./models/ldm/sd-v1-4.ckpt --ddim_steps 100 --H 512 --W 512 --seed 8
关于prompt的使用,需要尽可能的详细描述整个场景,用精准而非通俗的英语单词更能够让画面具有精致的美感。
当然stable diffusion仍然是有很大的缺陷的,例如,对于整体文化上偏向于西方的表达方式,物体的表现缺少事实性和一致性(一幅图里会有许多个月亮,这是事实性错误),对于人物的细节缺少精准的控制。在即将发布的1.5的模型里对于人物的脸部进行了更精致的表现,但是仍然对于手部细节还需要加强。大家可以看一下1.5和1.4版本模型的对比。
幸运的是,相比较latent diffusion,stable diffusion增加了安全检查操作,因此不会出现太离谱的图片了。
今天就是中秋节了,祝大家中秋快乐!也祝各位老师,教师节快乐!