用于在vast.ai上跑步
用于在Google Colab上运行
用于在本地PC(Windows)上运行
用于在本地PC(Ubuntu)上运行
适应走廊数字的Dreambooth教程到Joepenna的仓库
在Joepenna的Dreambooth中使用标题

你好!我叫乔·佩纳(Joe Penna)。
您可能已经在MysteryguitArman下看过一些我的YouTube视频。我现在是故事片导演。您可能已经看到北极或储藏室。
对于我的电影,我需要能够培训特定的演员,道具,位置等。因此,我对 @xavierxiao的回购进行了许多更改,以训练人们的脸。
我无法发布正在拍摄的电影的所有测试,但是当我用自己的脸测试时,我会在Twitter页面上释放这些测试 - @mysteryguitarm。
这些测试中有很多是与我的一个伙伴一起完成的 - 来自Corridordigital的Niko。可能是您找到此存储库的方式!
我不是真正的编码员。我只是固执,我不怕谷歌搜索。因此,最终,一些非常聪明的人加入了并一直在做出贡献。在此存储库中,特别是:@djbielejeski @gammagec @mrsaad - 但我们的不和谐中有很多其他!
这不再是我的回购。这是whan-wanna-see-dreambooth-n-sd-sd-working-well's Repo!
现在,如果您想尝试这样做...请首先阅读下面的警告:
让我们尊重花费多年磨练自己技能的人们的辛勤工作和创造力。
进入技术方面:
该实现并未完全实施Google关于如何保留潜在空间的想法。
似乎没有一个简单的方法可以连续训练两个主题。修剪之前,您最终将获得11-12GB文件。
~2gb最好的做法是将令牌更改为名人名称(注意:令牌,而不是上课- 因此您的提示将是: Chris Evans person )。这是我的妻子接受了完全相同的设置训练,除了令牌
请注意,Runpod会定期升级其基本Docker映像,这可能导致回购不起作用。 YouTube视频都没有最新的视频,但您仍然可以跟随它们作为指导。沿着典型的Runpod YouTube视频/教程进行以下更改:
从“我的豆荚”页面中
runpod/pytorch:3.10-2.0.1-120-develrunpod/pytorch:3.10-2.0.1-118-runtimerunpod/pytorch:3.10-2.0.0-117runpod/pytorch:3.10-1.13.1-116注册Runpod。请随时在此处使用我的推荐链接,这样我就不必付费(但是您这样做)。
登录后,选择SECURE CLOUD或COMMUNITY CLOUD
确保您找到“高”临时速度
选择至少24GB VRAM,例如RTX 3090,RTX 4090或RTX A5000
按照以下这些视频说明:


Rent ,然后转到您的实例页面,然后单击“ Open 
Notebook -> Python 3 (您可以通过多种方式执行此操作,但我通常会这样做) 
!git clone https://github.com/JoePenna/Dreambooth-Stable-Diffusion.gitrun 
Dreambooth-Stable-Diffusion目录,然后打开dreambooth_simple_joepenna.ipynb或dreambooth_runpod_joepenna.ipynb文件
cmdC:>git clone https://github.com/JoePenna/Dreambooth-Stable-DiffusionC:>cd Dreambooth-Stable-Diffusioncmd > python -m venv dreambooth_joepenna
cmd > dreambooth_joepennaScriptsactivate.bat
cmd > pip install torch == 1.13.1+cu117 torchvision == 0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
cmd > pip install -r requirements.txtcmd> python "main.py" --project_name "ProjectName" --training_model "C:v1-5-pruned-emaonly-pruned.ckpt" --regularization_images "C:regularization_images" --training_images "C:training_images" --max_training_steps 2000 --class_word "person" --token "zwx" --flip_p 0 --learning_rate 1.0e-06 --save_every_x_steps 250
cmd > deactivate Anaconda Prompt (miniconda3)(base) C:>git clone https://github.com/JoePenna/Dreambooth-Stable-Diffusion(base) C:>cd Dreambooth-Stable-Diffusion(base) C:Dreambooth-Stable-Diffusion > conda env create -f environment.yaml
(base) C:Dreambooth-Stable-Diffusion > conda activate dreambooth_joepennacmd> python "main.py" --project_name "ProjectName" --training_model "C:v1-5-pruned-emaonly-pruned.ckpt" --regularization_images "C:regularization_images" --training_images "C:training_images" --max_training_steps 2000 --class_word "person" --token "zwx" --flip_p 0 --learning_rate 1.0e-06 --save_every_x_steps 250
cmd > conda deactivate {
"class_word": "woman",
"config_date_time": "2023-04-08T16-54-00",
"debug": false,
"flip_percent": 0.0,
"gpu": 0,
"learning_rate": 1e-06,
"max_training_steps": 3500,
"model_path": "D:\stable-diffusion\models\v1-5-pruned-emaonly-pruned.ckpt",
"model_repo_id": "",
"project_config_filename": "my-config.json",
"project_name": "<token> project",
"regularization_images_folder_path": "D:\stable-diffusion\regularization_images\Stable-Diffusion-Regularization-Images-person_ddim\person_ddim",
"save_every_x_steps": 250,
"schema": 1,
"seed": 23,
"token": "<token>",
"token_only": false,
"training_images": [
"001@a photo of <token> looking down.png",
"002-DUPLICATE@a close photo of <token> smiling wearing a black sweatshirt.png",
"002@a photo of <token> wearing a black sweatshirt sitting on a blue couch.png",
"003@a photo of <token> smiling wearing a red flannel shirt with a door in the background.png",
"004@a photo of <token> wearing a purple sweater dress standing with her arms crossed in front of a piano.png",
"005@a close photo of <token> with her hand on her chin.png",
"005@a photo of <token> with her hand on her chin wearing a dark green coat and a red turtleneck.png",
"006@a close photo of <token>.png",
"007@a close photo of <token>.png",
"008@a photo of <token> wearing a purple turtleneck and earings.png",
"009@a close photo of <token> wearing a red flannel shirt with her hand on her head.png",
"011@a close photo of <token> wearing a black shirt.png",
"012@a close photo of <token> smirking wearing a gray hooded sweatshirt.png",
"013@a photo of <token> standing in front of a desk.png",
"014@a close photo of <token> standing in a kitchen.png",
"015@a photo of <token> wearing a pink sweater with her hand on her forehead sitting on a couch with leaves in the background.png",
"016@a photo of <token> wearing a black shirt standing in front of a door.png",
"017@a photo of <token> smiling wearing a black v-neck sweater sitting on a couch in front of a lamp.png",
"019@a photo of <token> wearing a blue v-neck shirt in front of a door.png",
"020@a photo of <token> looking down with her hand on her face wearing a black sweater.png",
"021@a close photo of <token> pursing her lips wearing a pink hooded sweatshirt.png",
"022@a photo of <token> looking off into the distance wearing a striped shirt.png",
"023@a photo of <token> smiling wearing a blue beanie holding a wine glass with a kitchen table in the background.png",
"024@a close photo of <token> looking at the camera.png"
],
"training_images_count": 24,
"training_images_folder_path": "D:\stable-diffusion\training_images\24 Images - captioned"
}
python "main.py" --config_file_path "path/to/the/my-config.json"
dreambooth_helpers gragments.py
| 命令 | 类型 | 例子 | 描述 |
|---|---|---|---|
--config_file_path | 细绳 | "C:\Users\David\Dreambooth Configs\my-config.json" | 要使用的配置文件的路径 |
--project_name | 细绳 | "My Project Name" | 该项目的名称 |
--debug | 布尔 | False | 可选默认为False 。启用调试记录 |
--seed | int | 23 | 可选默认值为23 。种子的种子 |
--max_training_steps | int | 3000 | 训练步骤的数量 |
--token | 细绳 | "owhx" | 您要代表训练有素的模型的独特令牌。 |
--token_only | 布尔 | False | 可选默认为False 。仅使用令牌而没有课程的训练。 |
--training_model | 细绳 | "D:\stable-diffusion\models\v1-5-pruned-emaonly-pruned.ckpt" | 训练模型的途径(model.ckpt) |
--training_images | 细绳 | "D:\stable-diffusion\training_images\24 Images - captioned" | 训练图像目录的途径 |
--regularization_images | 细绳 | "D:\stable-diffusion\regularization_images\Stable-Diffusion-Regularization-Images-person_ddim\person_ddim" | 使用正规化图像的目录路径 |
--class_word | 细绳 | "woman" | 将class_word匹配到您要训练的图像类别。示例: man , woman , dog或artstyle 。 |
--flip_p | 漂浮 | 0.0 | 可选默认值为0.5 。翻转百分比。示例:如果设置为0.5 ,将在50%的时间内翻转(镜像)您的训练图像。这有助于扩展您的数据集,而无需包括更多的培训图像。这可能会导致面部训练的结果更糟,因为大多数人的面孔并不是完全对称的。 |
--learning_rate | 漂浮 | 1.0e-06 | 可选默认值为1.0e-06 (0.000001)。设置学习率。接受科学符号。 |
--save_every_x_steps | int | 250 | 可选默认值为0 。为每个X步骤保存一个检查站。在达到max_training_steps时,仅在0时才保存。 |
--gpu | int | 0 | 可选默认值为0 。指定除0以外的GPU用于培训。当前尚未实施多GPU支持。 |
python "main.py" --project_name "My Project Name" --max_training_steps 3000 --token "owhx" --training_model "D:\stable-diffusion\models\v1-5-pruned-emaonly-pruned.ckpt" --training_images "D:\stable-diffusion\training_images\24 Images - captioned" --regularization_images "D:\stable-diffusion\regularization_images\Stable-Diffusion-Regularization-Images-person_ddim\person_ddim" --class_word "woman" --flip_p 0.0 --save_every_x_steps 500
支持字幕。这是我们如何实施它们的指南。
假设您的代币是Effy,您的班级是人,您的数据root是 /训练:
training_images/img-001.jpg为effy person加上字幕
您可以通过在文件名中的@符号之后添加字幕来自定义字幕。
/training_images/img-001@a photo of effy => a photo of effy
您可以在字幕中使用两个令牌S大写s-和C大写C-来指示主题和类。
/training_images/img-001@S being a good C.jpg => effy being a good person
要创建一个新主题,您只需要为其创建一个文件夹即可。所以:
/training_images/bingo/img-001.jpg => bingo person
该课程保持不变,但是现在主题已经改变。
再次 - 令牌S现在是宾果游戏:
/training_images/bingo/img-001@S is being silly.jpg bingo is being silly
一个文件夹更深入,您可以更改类: /training_images/bingo/dog/img-001@S being a good C.jpg => bingo being a good dog
毫无启动者:更深入一个级别,您可以为图像组标题:/triending_images/effy/person/a a picture of effy person /training_images/effy/person/a picture of/img-001.jpg =>
此存储库中的大部分代码是由Rinon Gal等人撰写的。 Al,文本反演研究论文的作者。尽管出于MIT团队和Google的研究人员的尊重,但还增加了有关正规化图像和先前保存(“ Dreambooth”的想法)的一些想法(“ Dreambooth”的想法),但我正在将此叉命名为: “以前被称为“回购” Dreambooth“” 。
有关替代实现,请参见下面的“替代选项”。
ground truth (真实的图片,谨慎:非常美丽的女人) 
下面所有这些图像的提示相同:
sks person | woman person | Natalie Portman person | Kate Mara person |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
仅提示您的令牌。即“ Joepenna”,而不是“ Joepenna Person”
如果您在person的joepenna训练中,模型只能知道您的脸为:
joepenna person
示例提示:
不正确(在joepenna之后失踪person )
portrait photograph of joepenna 35mm film vintage glass
✅这是正确的(在joepenna之后包括person )
portrait photograph of joepenna person 35mm film vintage glass
有时,您可能会得到一个与Joepenna看起来像您一样的人(尤其是如果您经过了太多步骤训练),但这仅仅是因为当前的Dreambooth过度训练的迭代使图像如此之多,以至于它会流血到那个代币中。
在训练期间,马stable不知道你是一个人。它只是模仿它看到的。
因此,如果这些是您的培训图像,则看起来像这样:

您只会以...的风格,即自拍照片的风格,穿着一件白色和灰色的衬衫,将几代人的几代人带到一棵尖刺的树旁边。
相反,这套训练组好多了:

图像之间唯一一致的是主题。因此,稳定将浏览图像并仅学习您的脸部,这将使其“编辑”为其他样式。
您确定要提示吗?
它应该是<token> <class> ,而不仅仅是<token> 。例如:
JoePenna person, portrait photograph, 85mm medium format photo
如果它看起来仍然不像您,那么您的训练时间不会足够长。
好的,原因是:您可能已经训练了太久了……或者您的图像太相似了……或者您没有训练足够的图像。
没问题。我们可以通过提示来解决这个问题。稳定的扩散对您首先输入的任何内容都具有很大的优点。因此,请保存以备以稍后:
an exquisite portrait photograph, 85mm medium format photo of JoePenna person with a classic haircut
你没有足够长的时间...
没问题。我们可以通过提示来解决此问题:
JoePenna person in a portrait photograph, JoePenna person in a 85mm medium format photo of JoePenna person
现在,Dreambooth在拥抱面扩散器方面得到了支持,可以通过稳定的扩散进行训练。
在这里尝试: