寫在最前面,Krea2 Turbo 目前應該是可以當作是 ZIT 的取代方案。整體畫面表現、肢體、材質等等都比較好,我目前也針對 Krea2 做了一系列的 Lora 訓練,整體表現令人驚艷。
當然,缺點是多樣性不足,不過這個可以靠 Lora 來稍微緩解。
訓練器
目前來說,在 Ai-Toolkit, Musubi-tuner, OneTrainer 都對於 Krea2 的 Lora 訓練有完整的支援。我並沒有特別推薦誰,你可以挑你習慣的來使用。
然後,我大量借鑑了 Musubi-tuner 的 Krea2 的部分,自己做了一個 Krea2-trainer 來做訓練。
TQD
我參考了訓練 群友 @gesen2gee 提供的論文 Beyond the Golden Data: Resolving the Motion-Vision Quality Dilemma via Timestep Selective Training,然後請 AI 幫我整理之後,製作了一個比較特殊的 Timesteps 的訓練方式。這個方法可以避免因為訓練資料中的品質差異,而造成訓練結果不甚理想的狀況。
這篇論文主要是給影片使用的,但我把概念抽出來,在 diffusion/flow matching 的去噪過程中:
- 高噪聲 timestep:模型先建立大尺度結構、構圖與運動。
- 低噪聲 timestep:模型再補局部紋理、細節、材質與畫面品質。
所以:
- 高 MQ、低 VQ 的影片,拿來教「運動」仍有價值,應偏向高噪聲 timestep。
- 高 VQ、低 MQ 的影片,拿來教「外觀與細節」仍有價值,應偏向低噪聲 timestep。
它用 degraded sample 的 gradient similarity 支撐這件事:
- 對畫面做 blur、compression、noise 後,在高 timestep 與原始高品質影片的 gradient 更相近。
- 對影片做 frame shuffle、破壞動態後,在低 timestep 與原始影片的 gradient 更相近。
那麼 TQD 的作法是:
每支影片先離線打兩個分數:
vq_norm ∈ [0, 1]
mq_norm ∈ [0, 1]
然後做兩件事。
A. Sample-level weighting:壞到兩邊都差的資料少用
保留機率:
[
p{{sample}}=max({vq}{norm}, {mq}{norm})
]
意思是,一支影片只要「至少有一項可取」,就保留其價值。兩邊都爛,才大幅降低採樣率。
B. Timestep-level routing:讓資料去適合它的 timestep
採樣中心:
[
mu = 0.5 + 0.5({mq}{norm}-{vq}_{norm})
]
- MQ 相對高於 VQ,(mu) 往大 timestep 移。
- VQ 相對高於 MQ,(mu) 往小 timestep 移。
再用 Beta distribution 決定抽樣尖銳程度。兩種品質差距越大,timestep routing 越集中,不讓資料在不擅長的學習階段浪費梯度。
核心概念就是
不要問「哪些資料該丟掉」,而要問「這筆資料在何時最有用」。
把「資料品質的不同面向」映射到「生成過程的不同階段」。
所以,我的 Kera2-trainer 把 TQD 的這個部分做了一些移植,
structure_score:主體、姿勢、構圖、物件關係是否完整可學。對應 TQD 的「高噪聲階段學全局結構」。
detail_score:清晰度、材質、五官、服裝紋理、局部品質。對應「低噪聲階段學細節」。
也就是做成 Structure–Detail TQD。核心仍完全相同:
[ {structure 高} -> t {偏高噪聲} ]
[ {detail 高} -> t {偏低噪聲} ]
訓練中整體流程會是這樣:
structure/detail 分數
↓
決定 Beta 分布的方向與集中程度
↓
Beta CDF sample
↓
inverse-normal
↓
sigmoid
↓
Krea2 resolution shift
↓
最終 training timestep
TQD 訓練資料怎麼準備?
首先必須要將你的訓練資料集,製作一個 jsonl 的檔案,用來儲存每個訓練資料的評分。他大概會長這樣:
{"cache_file":"asianMix_0001_1024x1536_krea2.safetensors","structure_score":0.91,"detail_score":0.84}
{"cache_file":"asianMix_0002_1024x1536_krea2.safetensors","structure_score":0.88,"detail_score":0.42}
{"cache_file":"asianMix_0003_1024x1536_krea2.safetensors","structure_score":0.35,"detail_score":0.93}
{"cache_file":"asianMix_0004_1024x1536_krea2.safetensors","structure_score":0.21,"detail_score":0.26}
| 評分 | 要看什麼 |
|---|---|
structure_score |
姿勢完整性、身體比例、手部、鏡頭構圖、主體辨識、場景關係 |
detail_score |
臉部、髮絲、衣料、配件、曝光、銳利度、壓縮瑕疵、局部可辨性 |
舉例來說:
- 臉、姿勢、構圖非常好,但衣料有壓縮或微糊:
structure=0.9, detail=0.45 - 近距離材質、睫毛、服裝細節漂亮,但構圖死、身體被切壞:
structure=0.4, detail=0.95 - 手壞、臉糊、構圖也亂:
structure=0.2, detail=0.2
然後在訓練資料集設定檔中加入:
[[datasets]]
resolution = [1024, 1024]
batch_size = 2
enable_bucket = true
caption_extension = ".txt"
image_directory = "/path/to/images"
cache_directory = "/path/to/cache"
tqd_score_file = "/path/to/your_tqd_scores.jsonl"
訓練結果
我做了 1,440 張圖的評分,並跑了 5 Epochs 的 Lora 訓練,目前已經公開在 [Krea2 Turbo] AsianMix Lora,有興趣的人可以去試試看。
具體的一些實驗通用結論,無論是否使用 TQD:
- 圖片提詞使用自然語言,字數長短會決定畫面特徵鎖定強度,不建議單詞訓練,約 70 - 500 字都可以。
- 文字描述越短,畫面鎖定會越強,反之就會變弱。
- 盡可能準備多樣性高的資料集,例如大頭照,表情盡量不同,不然特徵會明顯鎖定(做不出表情)。
- 如果使用長文字,依照慣例,越重要的放越前面。
- 盡可能使用 1024 (或以上)的尺寸訓練。
- 設備如果允許,可以使用 Batch Size >= 2 以上來訓練,效果不錯。
如果你使用了 TQD:
- 如果你的圖片不想手動評分,那麼就不要用,因為 VLM 評分可能會造成反效果。
- 如果你真的要使用 VLM 來評分,請先:
- 將圖片先做一個大致上的分類,例如:近照、遠照、畫質好、畫質不好等等。
- 每一種類別必須告訴 VLM 他的
structure,detail應該落在哪些區間。
- 你可以準備一批中性資料,
structure=0.5, detail=0.5可以用來均衡過度偏向高或低噪聲的資料。
目前 Krea2 我個人感覺是美學上比 ZIT 好的模型,也是目前我生成的主力。而 TQD 的訓練方式可以再填入更多想要表達的東西,整體上來說比起一般的訓練,能更強化(或弱化)某些表現。

小結
如果用 GB10 來跑訓練器,速度大概 7.6 s/it,大概是我還可以接受的範圍(訓練 Batch Size 1,解析度 1024x1024)。當然如果有人想送我一張 Pro6000 我也是可以心存感激的收下就是(有夢最美)。