CV Day 39 生成式資料增強:合成罕見樣本
執行需求:Colab T4 可跑 。今天的任務很具體:把「長尾類別」(例如 MVTec AD 中只有 10–30 張樣本的瑕疵)透過 Stable Diffusion 擴充到 100–200 張,並用 CLIP score + 人工複核把「不像的」與「不能用的」過濾掉,留下真正能餵進下游分類器的合成樣本。流程包含四個關卡:用 SD v1.5 生成 200 張候選、CLIP 過濾掉 CLIP score 低於閾值的、視覺檢查淘汰「構圖怪異」的、把剩下的合成樣本併入 MVTec AD 訓練集並比較分類器表現。在 Colab T4 上,跑完整個流程約 25 分鐘(生成 12 分鐘 + CLIP 過濾 2 分鐘 + 訓練 ResNet-18 分類器 8 分鐘 + 評估 3 分鐘);讀完之後你應該能回答:「為什麼 CLIP score 比 FID 更適合當過濾閾值?」「合成樣本要怎麼與真實樣本混用才不會破壞分類器?」「長尾類別要合成到『平衡』還是『部分平衡』?」
引言
昨天我們把 FID、CLIP score、人工評估三條評估路徑整個跑過一遍,今天要把這套流程接到一個更實際的問題——長尾資料(long-tail data)。工業瑕疵檢測(也就是這個系列從 Day 25 開始、貫穿到最後一天的專案)有一個很現實的痛點:瑕疵樣本天生就是長尾分布。常見瑕疵(例如 PCB 板上的輕微刮痕)可能有上百張,但罕見瑕疵(例如電容破裂、特定角度的焊點瑕疵)可能只有 5–10 張甚至更少;當我們拿這種極度不平衡的資料去訓練分類器,模型會「傾向預測多數類別」——把少數類別誤判成多數類別,反而是瑕疵檢測最不能接受的方向。
傳統的解法是「資料增強」(data augmentation):對少數類別的影像做翻轉、旋轉、色彩抖動、CutMix、MixUp 等操作,靠「在現有影像上做變形」來增加樣本數。這些方法能緩解問題但天花板有限——它們只能在「已經存在的影像」上做幾何與色彩變換,無法創造「新構圖」、「新背景」、「新材質組合」。生成式資料增強(generative data augmentation)的想法是直接用 Stable Diffusion 生成「新的瑕疵影像」,繞過「只能在現有影像上變形」的限制。
但...