ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

sd-scripts 数据集标注实战:用 WD14Tagger 自动为训练图像生成 Danbooru 标签

sd-scripts 数据集标注实战:用 WD14Tagger 自动为训练图像生成 Danbooru 标签 深度学习计算机视觉媒体生成模型训练微调【免费下载链接】sd-scripts项目地址https://gitcode.com/gh_mirrors/sd/sd-scripts点击查看免费下载本篇技术指南围绕 sd-scripts 仓库中的 WD14Tagger 标注文档 展开系统讲解如何用finetune/tag_images_by_wd14_tagger.py脚本对 LoRA、DreamBooth、Textual Inversion 等训练任务的图像数据集进行自动打标。读完本文你将掌握 ONNX 推理环境的搭建、模型自动下载机制、全部命令行参数含默认值与源码实现细节并能按 Animagine XL 3.1 等主流打标规范一键生成可直接用于训练的高质量标签文件。一、WD14Tagger 是什么为什么需要它WD14Tagger 是基于 Waifu Diffusion 1.4 数据集训练的 Danbooru 标签自动识别模型SmilingWolf 模型系列能够从图像中自动预测出成千上万个 Danbooru 风格的标签tag包括角色、画风、质量、评分等类别。在 sd-scripts 的 LoRA / DreamBooth 训练流程中高质量的文本标注caption / tag是决定训练效果的关键因素之一WD14Tagger 就是官方推荐的批量打标工具。脚本的实现位于 finetune/tag_images_by_wd14_tagger.py其核心思路为从 Hugging Face 自动下载模型权重与标签映射表selected_tags.csv或tag_mapping.json对目录下的每张图像做统一预处理后送入模型推理将置信度高于阈值的标签按可配置的规则排序、过滤、替换最终写入与图像同名的.txt文件或 JSON / JSONL 元数据。二、环境准备安装 ONNX 运行时官方推荐使用ONNX进行推理相比 TensorFlow 部署更轻量、性能更好。安装命令如下pip install onnx onnxruntime-gpu说明onnx提供模型加载与解析能力onnxruntime-gpu是 GPU 加速的推理运行时脚本源码在 finetune/tag_images_by_wd14_tagger.py 中通过import onnxruntime as ort使用如果不想用 ONNX脚本也支持 TensorFlow 推理路径未指定--onnx时启用此时需要另行安装 TensorFlow并加载saved_model.pb/keras_metadata.pb等文件见源码中的FILES常量模型权重不需要手动下载首次运行脚本时会从 Hugging Face 自动拉取。三、基本用法一条命令完成批量打标脚本的通用调用形式为python finetune/tag_images_by_wd14_tagger.py --onnx --repo_id 模型repo id --batch_size 批大小 训练数据文件夹官方示例使用SmilingWolf/wd-swinv2-tagger-v3模型、批大小设为 4训练数据放在上级目录的train_data文件夹python finetune/tag_images_by_wd14_tagger.py --onnx --repo_id SmilingWolf/wd-swinv2-tagger-v3 --batch_size 4 ..\train_data运行要点模型下载首次运行时模型文件会自动下载到当前目录下的wd14_tagger_model文件夹中可通过--model_dir修改保存位置。根据源码模型仓库为 SmilingWolf 标准结构时下载model.onnxONNX 模式或saved_model.pb、keras_metadata.pb、selected_tags.csvTensorFlow 模式其中 TensorFlow 模式的变量文件存放在variables子目录见 finetune/tag_images_by_wd14_tagger.py输出位置标签文件与训练图像放在同一目录下文件名为图像名 .txt扩展名可用--caption_extension修改图像收集脚本通过 library/dataset.py 的glob_images_pathlib查找图片支持--recursive递归扫描子文件夹推理前处理源码中的preprocess_imagefinetune/tag_images_by_wd14_tagger.py会将带透明通道的图像合成到白色背景、RGB 转 BGR、居中补边成正方形再统一缩放到448×448常量IMAGE_SIZE。3.1 面向 Animagine XL 3.1 的打标示例原文档提供了一个针对Animagine XL 3.1数据规范的完整示例实际使用时输入为单行命令python finetune/tag_images_by_wd14_tagger.py --onnx --repo_id SmilingWolf/wd-swinv2-tagger-v3 --batch_size 4 --remove_underscore --undesired_tags PUT,YOUR,UNDESIRED,TAGS --recursive --use_rating_tags_as_last_tag --character_tags_first --character_tag_expand --always_first_tags 1girl,1boy ..\train_data这段命令综合运用了多种标签编辑能力--remove_underscore把标签中的下划线替换为空格如black_hair→black hair符合自然语言描述习惯--undesired_tags剔除指定标签按需替换PUT,YOUR,UNDESIRED,TAGS--recursive递归处理子目录--use_rating_tags_as_last_tag把评分标签rating放到标签序列末尾--character_tags_first角色标签置于最前--character_tag_expand把chara_name_(series)形式的角色标签展开为chara_name, series两个标签--always_first_tags 1girl,1boy只要图像命中这些标签就强制放到最前面。3.2 可用的模型仓库 ID官方支持 SmilingWolf 的 V2、V3 系列模型按SmilingWolf/wd-vit-tagger-v3的格式指定即可。常用的 V3 模型包括SmilingWolf/wd-vit-tagger-v3SmilingWolf/wd-swinv2-tagger-v3SmilingWolf/wd-convnext-tagger-v3默认值省略--repo_id时使用SmilingWolf/wd-v1-4-convnext-tagger-v2见源码常量DEFAULT_WD14_TAGGER_REPOfinetune/tag_images_by_wd14_tagger.py。此外从源码结构看finetune/tag_images_by_wd14_tagger.py--repo_id还支持namespace/repo_name/subdir这种带子目录的形式此时脚本会改用model_optimized.onnxtag_mapping.json的非默认格式加载模型。四、全部命令行选项详解所有选项均可通过python tag_images_by_wd14_tagger.py --help查看。以下按类别整理参数默认值与源码中setup_parser()finetune/tag_images_by_wd14_tagger.py保持一致。4.1 一般选项选项默认值说明--onnx关闭使用 ONNX 推理不指定则走 TensorFlow 路径需自行安装 TensorFlow--batch_size1一次处理的图像数量按 VRAM 大小调整--caption_extension.txt输出标签文件的扩展名--max_data_loader_n_workers不启用指定 ≥1 时启用 DataLoader 多进程预加载图像加快读取速度未指定则同步加载--thresh0.35输出标签的置信度阈值调低会得到更多标签但精度下降--general_threshold同--thresh一般General类标签的独立阈值--character_threshold同--thresh角色Character类标签的独立阈值设 1 可禁用角色标签--recursive关闭递归处理指定文件夹内的子文件夹--append_tags关闭向已存在的标签文件追加标签而非覆盖--frequency_tags关闭处理结束后打印各标签的出现频次统计--debug关闭输出调试信息每张图的 rating / character / general / other 标签明细4.2 模型下载相关选项默认值说明--model_dirwd14_tagger_model模型文件的保存目录--force_download关闭强制重新下载模型文件关于批大小源码还有一个自动校正逻辑加载 ONNX 模型后会读取其输入张量的 batch 维度若与--batch_size不一致且模型为固定批大小会以模型批大小为准并给出警告finetune/tag_images_by_wd14_tagger.py。推理加速器方面ONNX 路径会自动探测可用 Provider优先级为OpenVINOGPU FP32源码注释说明 fp16 会产生乱码输出→ CUDA → ROCm → CPUfinetune/tag_images_by_wd14_tagger.py。4.3 标签编辑相关选项说明--remove_underscore输出标签中的下划线替换为空格--undesired_tags从输出中剔除的标签逗号分隔如black eyes,black hair--use_rating_tags把评分标签rating放在标签序列开头--use_rating_tags_as_last_tag把评分标签追加到标签序列末尾--character_tags_first角色标签始终排在一般标签之前--character_tag_expand展开角色标签的系列名如chara_name_(series)→chara_name, series--always_first_tags指定命中后强制置顶的标签逗号分隔如1girl,1boy--caption_separator标签间的分隔字符串默认,逗号空格--tag_replacement标签替换规则格式为源1,目标1;源2,目标2;...--tag_replacement的典型应用场景来自原文档示例想单独学习某套服装aira tsubase,aira tsubase (uniform)系列名没有体现在标签中时补全aira tsubase,aira tsubase\, heir of shadows其中\,表示标签名内部真实的逗号从源码实现看finetune/tag_images_by_wd14_tagger.pytag_replacement的解析过程是先用\转义保护标签名内部的,和;再按;切分替换对、按,切分源与目标最后替换命中的标签。若格式错误非源,目标两段会直接断言报错。4.4 标签编辑选项的联动规则重要原文档明确了几条容易踩坑的联动规则tag_replacement在character_tag_expand之后应用即先完成角色标签展开再进行标签替换指定--remove_underscore时undesired_tags、always_first_tags、tag_replacement中的标签要写成不含下划线的形式因为输出端已经先做了下划线替换指定--caption_separator时undesired_tags和always_first_tags要用caption_separator作为分隔符传入而tag_replacement必须始终用,分隔源码中undesired_tags、always_first_tags正是按stripped_caption_separator切分的见 finetune/tag_images_by_wd14_tagger.py。4.5 原文档之外的补充选项源码确认python ... --help输出中还包含几个原文档未展开、但实际可用的选项--output_path不写 txt 文件而是把所有结果汇总输出为 JSON 元数据若路径以.jsonl结尾则输出 JSONL 格式每条记录包含image_path、captiontags 文本与image_size便于后续直接供训练管线消费finetune/tag_images_by_wd14_tagger.py--use_quality_tags/--use_quality_tags_as_last_tag把 Quality 类标签放在开头 / 末尾针对非默认格式模型的类别体系--meta_threshold、--model_threshold、--copyright_threshold、--artist_threshold对 Meta、Model、Copyright、Artist 类别分别设置独立阈值缺省时均回落到--thresh设 1 可禁用对应类别finetune/tag_images_by_wd14_tagger.py--caption_extention历史拼写错误的兼容选项若设置会自动覆盖--caption_extension。五、源码级原理标签分类与排序逻辑理解标签的组织方式有助于你正确使用阈值与排序选项。源码区分了两套标签体系SmilingWolf 默认格式selected_tags.csvCSV 每行包含tag_id, name, category, count其中 category 为9表示评分rating、0表示一般general、4表示角色characterfinetune/tag_images_by_wd14_tagger.py。推理时前 4 个输出对应评分标签取 argmax 选出置信度最高的评分其余输出按类别阈值过滤后加入标签列表。非默认格式tag_mapping.json类别扩展为Rating / General / Character / Copyright / Meta / Model / Quality / Artist八类输出按概率降序排序并支持 Quality、Rating 置顶 / 置尾finetune/tag_images_by_wd14_tagger.py。几个值得注意的实现细节--remove_underscore只对长度大于 3的标签执行下划线替换短标签如1girl保持原样finetune/tag_images_by_wd14_tagger.py--append_tags会先读取已有标签文件、去掉重复项再把新标签追加在末尾finetune/tag_images_by_wd14_tagger.py--frequency_tags在结束时按出现次数降序打印全部标签统计可用于检查数据集的标签分布偏差--debug会逐图打印 rating / character / general / other 四类标签文本便于排查打标异常。六、与训练流程的衔接标签文件 → 训练元数据WD14Tagger 生成的.txt标签文件可以直接被 sd-scripts 的多个训练脚本读取例如--dataset_class对应的文件夹式数据组织。如果需要把标签合并进 JSON 元数据metadata文件仓库还提供了配套脚本 finetune/merge_dd_tags_to_metadata.pypython finetune/merge_dd_tags_to_metadata.py 训练数据文件夹 输出metadata.json [--in_json 输入] [--full_path] [--recursive]该脚本会把每个图像对应的标签文本写入 metadata 的tags字段finetune/merge_dd_tags_to_metadata.py从而衔接prepare_buckets_latents.py以及 LoRA / DreamBooth 训练的 metadata 模式。关于 metadata 的具体格式规范可参考 dataset_metadata 说明 与 train_README-zh.md。七、实战建议与注意事项优先使用 ONNX GPU 运行时在 CUDA 环境下脚本会自动选中CUDAExecutionProvider没有 GPU 时回退到 CPU 推理此时建议调小--batch_size按显存调节批大小--batch_size默认 1VRAM 充足时增大到 416 可显著提升吞吐若与 ONNX 模型固定批大小不一致脚本会自动采用模型批大小善用分类阈值角色标签常常过拟合误报可用--character_threshold设 1 直接禁用单独调控同样支持对 Copyright / Artist / Meta / Model 分类设置独立阈值大规模数据集使用 DataLoader给--max_data_loader_n_workers传入 ≥1 的值即可启用多进程图像预加载配合--batch_size能大幅缩短整体打标耗时保持标签规范一致若按 Animagine XL 3.1 等特定模型训练建议完全复刻本文 3.1 节的参数组合--remove_underscore--use_rating_tags_as_last_tag--character_tags_first--character_tag_expand--always_first_tags并在大规模运行前先用--debug抽查少量图像的输出注意联动规则设置--remove_underscore后所有需要匹配的标签参数都不要再带下划线设置自定义--caption_separator后undesired_tags与always_first_tags也要用同样的分隔符传入。至此你已经掌握了 sd-scripts 中 WD14Tagger 打标脚本的完整用法从环境安装、模型自动下载到按 Animagine XL 3.1 规范生成标签再到分类阈值、标签替换、排序策略等全部参数以及标签文件向训练元数据的衔接方式。这套流程可以直接用于 LoRA、DreamBooth、Textual Inversion 等训练任务的数据集准备阶段。赞分享深度学习计算机视觉媒体生成模型训练微调【免费下载链接】sd-scripts项目地址https://gitcode.com/gh_mirrors/sd/sd-scripts点击查看免费下载相关推荐Geometrize终极指南如何将普通图片转化为几何艺术杰作Geometrize终极指南如何将普通图片转化为几何艺术杰作 Geometrize是一款强大的桌面应用程序能够将普通图片转化为令人惊叹的几何艺术作品。通过使如何三步实现微信聊天记录备份WeChatMsg本地数据管理终极指南如何三步实现微信聊天记录备份WeChatMsg本地数据管理终极指南 你是否曾因手机丢失或误删操作导致珍贵的微信聊天记录永久消失那些承载着重要工作沟通、温馨如何用 kohya-ss/sd-scripts 轻松掌握AI图像生成与训练超详细新手教程如何用 kohya ss/sd scripts 轻松掌握AI图像生成与训练超详细新手教程 kohya ss/sd scripts 是一套功能强大的AI图像生成深度学习计算机视觉媒体生成模型训练微调上一篇Maestro 移动端 E2E 自动化测试快速上手指南下一篇MCP协议核心解析为什么它是AI工具集成的革命性标准创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表