Lumina SFT - 训练笔记
数据集概览
- 总数据量: 215万 张图。
- 主要来源:
- Danbooru全家桶: 用了全量的基于Danbooru tag的抽取。
- 多人图专项: 专门选了 58万 张带原标的多人图进行匹配。(基于yolo+tagger+原标三者一致)
- 新图补充: 数据同步到ID
9803999(和Starry7.2一样,懒得再更新了 )。 - Gelbooru增补: 加了一批
gelbooru_20250526_add_1280px的图(主要补缺的tag)。
Caption构造策略
这是一个混合策略,为了让模型既能理解自然语言也能精确解析tag。
- 42.8% 的概率使用 自然语言(NL)描述(从五种模板里随机挑一种)。
- 57.2% 的概率使用 XML格式的标签。
XML Tag 结构
Tag被塞进一个XML结构里,主要是为了让模型学会区分不同类型的标签(作者、角色、作品等)。 有80%概率是正常结构,即
<tags>
<special>1girl</special>
<artists>artist_name</artists>
<characters>character_name</characters>
<copyright>series_name</copyright>
<general>blue hair, long hair, school uniform, sky</general>
<rating>safe</rating>
<meta>highres, 2025</meta>
</tags>
- 一个关键的随机化: 全局有 50% 的概率,某个分类(比如
<copyright>)是空的,这个标签也会被保留下来(<copyright></copyright>) - 另一半概率则会直接省略空标签。这么做是为了防止模型对固定的标签顺序产生依赖。(这个设置对所有类别同时起效,即要么全丢,要么全有)
20%概率特殊模式:画师风格强化 (Artist Focus Mode)
这是一个为了强化风格学习的特殊模式,有 20% 的概率触发:
- 在这种模式下,作者标签会被单独拎出来,放在
<artists>标签里。 - 所有其他的标签 (角色、通用、元数据等) 会被揉成一团,变成一个不带分类的、用逗号分隔的普通字符串。
- 目的:强迫模型将
<artists>标签里的内容识别为画风的关键指令。
<tags>
<artists>artist_name</artists>
anything tag list
</tags>
1. 标签分组处理
我把所有标签分成了三组,区别对待:
- A组 (核心主体):
special(构图),characters(角色),artists(作者)。这是图里最关键的信息。 - B组 (背景和通用特征):
copyright(版权/原作),general(通用描述)。 - C组 (元数据):
meta,year,quality,rating。
2. 随机丢弃与组合
生成最终caption的过程充满了随机性:
- A组内部:
- 有 80% 的概率会做“标签推导丢弃”。比如有了
hatsune miku这个角色tag,就按一定概率把vocaloid这种上级tag丢掉,强迫模型学习更本质的特征。 - 有 5% 的概率会极端到 只保留special tag(比如
1girl),人物的性别/数量。
- 有 80% 的概率会做“标签推导丢弃”。比如有了
- B组处理:
copyright标签 75%的概率会被整个丢掉。- 和角色强相关的通用标签(比如角色的发色、服装)也有一半的概率被丢掉或部分丢掉,防止模型把角色和特定外观死记硬背。
- B组所有标签最后还有 5% 的概率被随机单个丢弃。
- C组处理:
- 元数据比较稳定,但也给了 5% 的随机单项丢弃概率。
- 最终组合:
- A、B、C三组的最终顺序是随机打乱的。(注意,是分组打乱,组间并不合并。)
- 甚至有时候会故意不加B组或C组,比如有 9% 的概率最终caption只包含A组的核心内容。
- 最后,对整个caption还有 30% 的概率移除那些语义上重叠的标签。
其他细节
- 分辨率标签: 自动根据图片尺寸添加
highres(>=1MP) 或lowres(<=0.6MP) 标签。 - Token优化: 所有tag里的
_都会被替换成空格,主要是为了节约gemma2b模型的token数。
Inference Providers
NEW
This model isn't deployed by any Inference Provider.
🙋
Ask for provider support