🚀 CLIP-Lのファインチューニングモデル
このプロジェクトはCLIP-Lをファインチューニングしたモデルです。元のモデルはopenai/clip-vit-large-patch14で、ImageNet/ObjectNetの精度が向上しています。
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。元のOpenAIのCLIPモデルもMIT Licenseです。
🚀 クイックスタート
モデルの基本情報
属性 |
詳情 |
ベースモデル |
openai/clip-vit-large-patch14 |
学習データセット |
SPRIGHT-T2I/spright_coco |
モデルの使用方法
Huggingface Transformers / Diffusersパイプラインが実装されています。例えば、以下のようにモデルを使用できます。
from transformers import CLIPModel, CLIPProcessor, CLIPConfig
model_id = "zer0int/CLIP-GmP-ViT-L-14"
config = CLIPConfig.from_pretrained(model_id)
モデルのバージョンとダウンロード
一般的に、4種類のバージョンが提供されています。
- テキストエンコーダのみの .safetensors ファイル
- 完全なモデルの .safetensors ファイル
- 状態辞書の pickle ファイル
- 完全なモデルの pickle ファイル(SHAチェックサム検証をバイパスした後、"import clip" -> clip.load() でそのまま使用できます)
テキストエンコーダの選択
Flux.1(またはSD3、SDXL、SDなど)のテキストエンコーダとしてCLIP-Lを置き換えたい場合、以下の2種類のモデルがあります。
- 👉 "TEXT" モデルは、特にテキストに対するプロンプトの追従性に優れています。ダウンロード
- 👉 "SMOOTH" モデルは、画像にテキストがない場合に、時々**より良い詳細を持つことがあります。ダウンロード
- "GmP" の初期ファインチューニングモデルは非推奨で、上記のモデルより劣ります。ただし、ダウンロードすることもできます。
**注:"TEXT" モデルはテキストに対して最適です。ただし、"SMOOTH" モデルが(テキストがない)シナリオで "TEXT" モデルより良いかどうかは、具体的なプロンプトに依存します。どちらが好ましいかを知る唯一の方法は、両方を試すことです。
🔧 技術詳細
ファインチューニング手法
このモデルは、幾何学的パラメータ化(GmP)を使用してファインチューニングされています。GmPでは、重みを放射成分 'r' と角度成分 'theta' に分解し、重みベクトルの方向性と大きさを保存します。
"通常の" CLIP MLP(多層パーセプトロン):
(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:
重みを以下に分解:
- 事前学習された重みのノルムとしての放射成分 'r'
- 正規化された方向としての角度成分 'theta'
-> 重みベクトルの方向性と大きさを保存
(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
([text] transformer.resblocksについても同様)
モデルの精度
このモデルは、ImageNet/ObjectNetの精度が約0.90(元の事前学習モデルは約0.85)です。"SMOOTH" と "TEXT" の両方のモデルで、ImageNet/ObjectNetの精度が約0.91(事前学習モデルは約0.84)です。
最新のモデル
2024年8月11日の更新で、新しい最高性能のCLIP ViT-L/14 'GmP-smooth' モデルが追加されました。ファイル名に BEST が含まれるものをダウンロードしてください。

また、自分でファインチューニングすることもできます。詳細はhttps://github.com/zer0int/CLIP-fine-tuneを参照してください。
その他の情報
- このモデルを応援したい場合は、こちらから支援できます。
- ファインチューニングのコードやその他の情報はmy GitHubにあります。