try1.0(sdxl fine tune practice) sdxl 的微调尝试练习

详情

模型描述

该模型的训练集已上传至Hugging Face公开,如有需要可下载

https://huggingface.co/datasets/TLFZ/civitai-try1.0-model-train-dataset

try1.0

这只是对nai3使用animaginev3.1进行微调的仿制尝试,添加了画师标签,很可能是一个既欠拟合又过拟合的粗糙新手实验(如有可能,最好别下载)。

This is just an attempt to imitate nai3's animage finetune, with the artist's label. It is likely to be a rough novice attempt with both underfitting and overfitting (if possible, it is best not to download it)

try1.01

本版本因修改了训练集的标签和图像内容,相较前一版本有显著进步:

  • 大致流程如下:

  • 先使用VPN翻墙

  • 然后借助nai3交流群(即原元素法典的NovelAI群,nai3发布后改名为“解构法典群”,QQ群号852429527;可在B站搜索novelai,于相关视频简介中获取,无需私聊。我本人水平有限,仅会使用现有工具制作模型,群友水平远超我:))的群友提供的nai3画师串风格融合测试集,例如『【腾讯文档】【精简200画师】~K7的个人向画师榜』、『300画风法典:融合类』等,如下所示:

  • 从中寻找我喜欢的画师或混合画风,并收集相关画师的名称以实现期望的混合效果

  • 在GPT-4o和群友的协助与提醒下,使用waifuc爬虫从danbooru和gelbooru抓取所有与指定画师标签相关的图片及其人工高质量标签

  • 或者通过exhentai网站使用qbittorrent下载各画廊的BT种子文件,获取画师的Fanbox或Patreon无码高清图包

  • 使用破解版Duplicate Cleaner 5软件去除大量高度相似的差分图像

  • 人工(人类智能……)剔除绝大部分为画师早期风格的图片(这一步非常重要);虽然存在美学评分模型,但我觉得用处不大……美学模型难以有效区分同一画师风格下优秀或早期的图像,或许是我没找到合适的美学评分模型……

  • 利用waifuc内部脚本将透明背景图片修改为白色背景,并去除线稿和黑白图

  • 使用tagger1.4的swinv2-v3模型为各个画师文件夹打标签,添加画师名提示词,设置标签阈值为0.35,人物阈值为0.1,进行机器自动标注

  • 最后(也可能是最重要的一步!!!) 人工使用BooruDatasetTagManager软件补充遗漏标签、删除或修正错误标签。该人工标注的理念和技术源于CivitAI首页rulles作者的文章《Prompt Guidance, Tags to Avoid and useful tags to includehttps://civitai.com/articles/1009,并可在danbooru或类似图库网站的wiki中查询如何标注及可用标签(当然部分标签下方的示意图可能较为露骨……)

  • 最后在本地使用3090显卡,克隆秋叶的lora-scripts整合包至本地 LoRA & Dreambooth training GUI & scripts preset & one key training environment for kohya-ss/sd-scripts,运行DreamBooth下的SDXL微调脚本
    https://github.com/Akegarasu/lora-scripts

  • 共使用了31位画师的约7613张图像,1epoch约11063次重复,训练8epoch,总batch size约为88504。目前可大致还原相关画师风格的7至9成(我猜测50万至100万步效果更佳,但因不愿耗费太多训练时间,故选用高学习率以减少步数和时长;24GB显存也较慢,8epoch约耗时17小时)

  • 同时支持以nai3画师串形式混合画风出图,示例图中亦包含相关prompt

  • 由于仅重点关注角、头发、动物耳朵等易混淆且机器标注不佳的部分,加之个人精力、VPN质量与网速限制,人物标签未完全修正,仍存在物体混合现象,尤其某些人物名称无法被识别或被错误识别为其他角色,令人十分困扰

  • 下次训练仍会沿用当前流程,同时加入3至4位新画师风格,但将主要精力用于学习与修正训练集标注

  • 综上所述,祝您玩得开心……(但请勿用于盈利,因训练集未经画师授权,本模型仅用于人工智能学习与经验交流之目的)

  • 以下是微调模型所用参数

model_train_type = "sdxl-finetune" pretrained_model_name_or_path = "D:/stablediffusion/lora-scripts/sd-models/animagineXLV31_v31.safetensors" vae = "D:/stablediffusion/sdwebuiakiv4.2/models/VAE/sdxl-vae-fp16-fix.safetensors" train_data_dir = "D:/stablediffusion/lora-scripts/train/try" resolution = "1024,1024" enable_bucket = true min_bucket_reso = 256 max_bucket_reso = 1536 bucket_reso_steps = 32 output_name = "try1.01" output_dir = "./output" save_model_as = "safetensors" save_precision = "bf16" save_every_n_epochs = 1 save_state = true max_train_epochs = 20 train_batch_size = 1 gradient_checkpointing = true gradient_accumulation_steps = 32 learning_rate = 0.000007 learning_rate_te1 = 5e-7 learning_rate_te2 = 5e-7 lr_scheduler = "cosine_with_restarts" lr_warmup_steps = 0 lr_scheduler_num_cycles = 3 optimizer_type = "Lion8bit" min_snr_gamma = 5 log_with = "tensorboard" logging_dir = "./logs" caption_extension = ".txt" shuffle_caption = true weighted_captions = false keep_tokens = 1 max_token_length = 255 caption_tag_dropout_rate = 0.1 multires_noise_iterations = 6 multires_noise_discount = 0.3 seed = 1337 no_token_padding = false mixed_precision = "bf16" full_bf16 = true xformers = true lowram = false cache_latents = true cache_latents_to_disk = true persistent_data_loader_workers = true train_text_encoder = true

try1.02

大致增加了几位画师,目前通过画师提示词进行混合画风的方式似乎比以往版本更具生动感(但可能导致更多人体结构错误)。训练集增至9500张图,经测试后发现,单画风和多画风混合下略有过拟合的现象,效果反而更好,故选择此方案。

此外,我使用了waifuset这一数据库管理软件(或称脚本?)

这工具极其好用,甚至九分好用,但存在一些小bug,且网上几乎没有视频教程介绍其用法。毕竟对于100-200张图的单画风任务无所谓,但一旦上万张图,就必须依靠脚本批量去重标签、打标和修正错误标签。(我有点想写个使用教程,以免自己忘记)

另有一事:此前的v1.01模型因使用了8epoch,存在过拟合问题,后来发现5epoch测试效果更佳,故将v1.01模型改为5epoch。因此模型的前后hash值会变化(请以hash值辨别模型,我仅尽可能上传自认好用的版本,但有时也可能随意修改并重新上传……)

新prompt可在v1.02版本的prompt界面中展开复制和查找。

(感觉当画师数量达到100位时,我大概就撑不住了)

训练集(含图片和txt文件)已达30GB大小……如今画风训练都是直接从danbooru或pixiv用脚本下载,再用tagger1.4 v3追加标注,然后一键去重标签、解析与整理(结果发现大量人物标签未打,danbooru和tagger1.4都未能识别或标注——例如“烧钱的李恩菲尔德”的官方立绘,无论danbooru还是tagger1.4都没打上标签,尽管这个人物和对应标签确实存在,我都快无语了……)

既然大家都用脚本下载danbooru,又追求质量而手动下载exhentai种子文件,

突然想到:能不能写个脚本,自动下载exhentai指定艺术家或某分类下的画廊种子?

例如:先选择目标艺术家,语言模型通过网站自带分类器初步检索,再用语言模型判断画廊名称及大致内容是否一致,然后选择无重复的画廊下载其种子?时间上,是否可让语言模型选择画师最早与最晚画廊之间的中后期作品,或直接按网站时间排序,从2022或2023年以后的种子开始下载?(我自己也说不清在说什么,纯属胡思乱想)不过,人类智能(人工)才是最稳妥的……

等等,我发现琥珀青叶dalao早就训练过类似模型了……/model/399873?modelVersionId=546178 我不禁怀疑起自己重复造轮子的意义何在……(我打琥珀青叶,是真的假的?)笑

都去用琥珀青叶dalao的模型吧!

此模型生成的图像

未找到图像。