Controlnet训练
使用文本提示词可以生成一副精美的画作,然而无论再怎么精细地使用提示词来指导模型,也无法描述清楚人物四肢的角度、背景中物体的位置、光线照射的角度,使用Controlnet可以通过图像特征来为扩散模型的生成过程提供更加精细控制的方式。
将Controlnet适配到昇腾卡进行训练,可以提高能效、支持更大模型和多样化部署环境,提升昇腾云在图像生成和编辑场景下的竞争力。
本章节介绍SDXL&SD 1.5模型的Controlnet训练过程。
Step1 处理fill50k数据集
使用ma-user用户在容器上执行如下命令解压数据集。
cd /home/ma-user/datasets/fill50k unzip conditioning_images.zip unzip images.zip
接着修改fill50k.py文件,如果机器无法访问huggingface网站,则需要将脚本文件中下载地址替换为容器本地目录。
56 def _split_generators(self, dl_manager): 57 #metadata_path = dl_manager.download(METADATA_URL) 58 #images_dir = dl_manager.download_and_extract(IMAGES_URL) 59 #conditioning_images_dir = dl_manager.download_and_extract( 60 # CONDITIONING_IMAGES_URL 61 #) 62 metadata_path = "/home/ma-user/datasets/fill50k/train.jsonl" 63 images_dir = "/home/ma-user/datasets/fill50k" 64 conditioning_images_dir = "/home/ma-user/datasets/fill50k"
Step2 启动SD1.5训练服务
使用ma-user用户执行如下命令运行训练脚本。
cd /home/ma-user/diffusers sh diffusers_controlnet_train.sh
Step3 启动sdxl训练服务
cd /home/ma-user/diffusers sh diffusers_sdxl_controlnet_train.sh
训练执行成功如下图所示。