🚀 CLIP-L微調模型
這是對CLIP-L的微調模型,原模型為 openai/clip-vit-large-patch14,該微調模型在ImageNet/ObjectNet上有著前所未有的約0.90的準確率(原預訓練模型OpenAI的CLIP約為0.85)。
🚀 快速開始
集成到Huggingface Transformers / Diffusers管道
自2024年9月23日更新後,已實現Huggingface Transformers / Diffusers管道。示例腳本見:Integrating my CLIP-L with Flux.1。也可以像使用任何HF模型一樣使用它:
from transformers import CLIPModel, CLIPProcessor, CLIPConfig
model_id = "zer0int/CLIP-GmP-ViT-L-14"
config = CLIPConfig.from_pretrained(model_id)
✨ 主要特性
- 高精度:在ImageNet/ObjectNet上有著約0.90的準確率,高於原預訓練模型。
- 多版本可選:提供文本編碼器僅.safetensors、完整模型.safetensors、狀態字典pickle、完整模型pickle等四種版本。
- 新損失函數:使用帶有標籤平滑的自定義損失函數進行微調。
📦 安裝指南
暫未提供具體安裝步驟。
💻 使用示例
基礎用法
from transformers import CLIPModel, CLIPProcessor, CLIPConfig
model_id = "zer0int/CLIP-GmP-ViT-L-14"
config = CLIPConfig.from_pretrained(model_id)
📚 詳細文檔
模型版本選擇
如果你正在尋找用於Flux.1(或SD3、SDXL、SD等)的文本編碼器來替代CLIP-L,一般建議選擇“僅TE”的.safetensors文件:
- “TEXT”模型:具有卓越的提示跟隨能力,尤其適用於文本,對其他細節也有很好的處理效果。下載
- “SMOOTH”模型:在圖像中沒有文本時,有時能呈現更好的細節。下載
- “GmP”初始微調模型:已棄用,效果不如上述模型,但仍可下載。
模型性能
- 模態差距:“TEXT”模型的模態差距為0.80(OpenAI預訓練模型為0.82),通過高溫0.1訓練和調整實現。
- 準確率:“SMOOTH”和“TEXT”模型在ImageNet/ObjectNet上的準確率約為0.91(預訓練模型約為0.84)。
微調方法
2024年8月11日更新,新增表現最佳的CLIP ViT-L/14 'GmP-smooth'模型,可直接下載名為 BEST 的文件。也可以自行微調:
- 幾何參數化(GmP)
- 對“副詞神經元”進行激活值操作
- 新增:帶有標籤平滑的自定義損失函數
詳細細節見 GitHub。
模型結構
"Normal" CLIP MLP (multi-layer perceptron):
(mlp): Sequential(
|-(c_fc): Linear(in_features=1024, out_features=4096, bias=True)
| (gelu): QuickGELU()
|-}-(c_proj): Linear(in_features=4096, out_features=1024, bias=True)
| |
| |-- visual.transformer.resblocks.0.mlp.c_fc.weight
| |-- visual.transformer.resblocks.0.mlp.c_fc.bias
|
|---- visual.transformer.resblocks.0.mlp.c_proj.weight
|---- visual.transformer.resblocks.0.mlp.c_proj.bias
GmP CLIP MLP:
Weight decomposition into:
- radial component 'r' as norm of pre-trained weights
- angular component 'theta' as normalized direction
-> preserves weight vectors' directionality and magnitude
(mlp): Sequential(
|-(c_fc): GeometricLinear()
| (gelu): QuickGELU()
|-}-(c_proj): GeometricLinear()
| |
| |-- visual.transformer.resblocks.0.mlp.c_fc.r
| |-- visual.transformer.resblocks.0.mlp.c_fc.theta
| |-- visual.transformer.resblocks.0.mlp.c_fc.bias
|
|---- visual.transformer.resblocks.0.mlp.c_proj.r
|---- visual.transformer.resblocks.0.mlp.c_proj.theta
|---- visual.transformer.resblocks.0.mlp.c_proj.bias
(Same thing for [text] transformer.resblocks)
🔧 技術細節
本微調模型使用幾何參數化(GmP)方法,將權重分解為徑向分量'r'(預訓練權重的範數)和角向分量'theta'(歸一化方向),從而保留權重向量的方向性和大小。通過這種方法以及對“副詞神經元”的激活值操作和帶有標籤平滑的自定義損失函數,實現了在ImageNet/ObjectNet上的高精度。
📄 許可證
本項目基於MIT許可證,原預訓練CLIP模型由OpenAI提供,許可證為 MIT License。
⚠️ 重要提示
關於訓練和評估的詳細信息,請見 https://github.com/zer0int/CLIP-fine-tune。你可以使用 "exp-acts-ft-finetune-OpenAI-CLIP-ViT-L-14-GmP-manipulate-neurons.py" 來複現我的精確模型微調。
💡 使用建議
如果你喜歡這個CLIP模型,在條件允許的情況下可以支持一下。除了數據,CLIP的訓練還需要大量的時間和昂貴的電力。感謝支持!如果你想自己微調模型,所有微調代碼和更多內容都在 GitHub 上。