[紙] [引用] [クリップコラブ] [コカコラブ]
Openaiのクリップのオープンソースの実装(コントラスト言語イメージの事前トレーニング)へようこそ。
このコードベースを使用して、小規模な実験から、LAION-400M、LAION-2B、DATACOMP-1Bなどのデータセットでトレーニングされたモデルを含む大規模なランまで、さまざまなデータソースと計算予算に関するいくつかのモデルをトレーニングしました。私たちのモデルの多くとそのスケーリング特性は、対照的な言語イメージ学習のための紙の再現可能なスケーリング法則で詳細に研究されています。私たちがトレーニングした最高のモデルのいくつかと、それらのゼロショットImagenet-1K精度を以下に示します。また、Openaiやその他の最先端のオープンソースの代替品によって訓練されたVIT-Lモデル(すべてOpenCLIPでロードできます)。ここでは、事前に処理されたモデルの完全なコレクションの詳細と、ここで38のデータセットのゼロショット結果を提供します。
| モデル | トレーニングデータ | 解決 | 見たサンプルの# | Imagenet Zero-Shot acc。 |
|---|---|---|---|---|
| Convnext-Base | laion-2b | 256px | 13b | 71.5% |
| Convnext-Large | laion-2b | 320px | 29b | 76.9% |
| Convnext-xxlarge | laion-2b | 256px | 34b | 79.5% |
| VIT-B/32 | DataComp-1B | 256px | 34b | 72.8% |
| VIT-B/16 | DataComp-1B | 224px | 13b | 73.5% |
| VIT-L/14 | laion-2b | 224px | 32b | 75.3% |
| VIT-H/14 | laion-2b | 224px | 32b | 78.0% |
| VIT-L/14 | DataComp-1B | 224px | 13b | 79.2% |
| vit-g/14 | laion-2b | 224px | 34b | 80.1% |
| vit-l/14(オリジナルクリップ) | ウィット | 224px | 13b | 75.5% |
| vit-so400m/14(siglip) | ウェブリ | 224px | 45b | 82.0% |
| vit-so400m-14-siglip-384(siglip) | ウェブリ | 384px | 45b | 83.1% |
| vit-h/14-quickgelu(dfn) | DFN-5B | 224px | 39b | 83.4% |
| VIT-H-14-378-Quickgelu(DFN) | DFN-5B | 378px | 44b | 84.4% |
追加のモデル特定の詳細を備えたモデルカードは、openclipライブラリタグの下のハグのフェイスハブにあります:https://huggingface.co/models?library = open_clip。
このリポジトリが便利だと思った場合は、引用を検討してください。他のリクエストや提案がある場合は、問題を送信したり、メールを送信したりすることを歓迎します。
src/open_clip/モデリングとトークネイザーコードの一部は、OpenAIの公式リポジトリの適応であることに注意してください。
| 画像クレジット:https://github.com/openai/clip |
pip install open_clip_torch
import torch
from PIL import Image
import open_clip
model , _ , preprocess = open_clip . create_model_and_transforms ( 'ViT-B-32' , pretrained = 'laion2b_s34b_b79k' )
model . eval () # model in train mode by default, impacts some models with BatchNorm or stochastic depth active
tokenizer = open_clip . get_tokenizer ( 'ViT-B-32' )
image = preprocess ( Image . open ( "docs/CLIP.png" )). unsqueeze ( 0 )
text = tokenizer ([ "a diagram" , "a dog" , "a cat" ])
with torch . no_grad (), torch . cuda . amp . autocast ():
image_features = model . encode_image ( image )
text_features = model . encode_text ( text )
image_features /= image_features . norm ( dim = - 1 , keepdim = True )
text_features /= text_features . norm ( dim = - 1 , keepdim = True )
text_probs = ( 100.0 * image_features @ text_features . T ). softmax ( dim = - 1 )
print ( "Label probs:" , text_probs ) # prints: [[1., 0., 0.]]この[クリップコラブ]も参照してください。
数十億の埋め込みを効率的に計算するには、OpenCLipサポートを備えたClip-Retrievalを使用できます。
事前に訓練されたモデルと非訓練を受けていないモデルの両方をインスタンス化するためのシンプルなモデルインターフェイスを提供します。どの事前に保護されているモデルが利用可能かを確認するには、次のコードスニペットを使用します。当社の既代のモデルの詳細については、こちらをご覧ください。
> >> import open_clip
> >> open_clip . list_pretrained ()この表でサポートするモデル(パラメーターの数、フロップの数など)の詳細を確認できます。
注:多くの既存のチェックポイントは、元のOpenAIモデルからのQuickGeluアクティベーションを使用しています。この活性化は、実際には、Pytorchの最近のバージョンでは、ネイティブTorch.nn.geluよりも効率が低いです。モデルのデフォルトはnn.geluになるようになるため、OpenClip事前処理された重みに-quickgelu postfixを使用してモデル定義を使用する必要があります。すべてのOpenaiの前提条件の重みは、常にQuickGeluにデフォルトです。また、QuickGeluを使用して前処理された重みを使用して、非-quickgeluモデルの定義を使用することもできますが、より長い実行で消滅する可能性のある微調整のために精度ドロップがあります。将来の訓練されたモデルは、NN.GELUを使用します。
以下の例に示すように、モデルにはopen_clip.create_model_and_transformsをロードできます。モデル名と対応するpretrainedキーはopen_clip.list_pretrained()の出力と互換性があります。
pretrained議論は、 /path/to/my/b32.pt to/my/b32.ptなど、ローカルパスも受け入れます。この方法で、Huggingfaceからチェックポイントをロードすることもできます。そのためには、 open_clip_pytorch_model.binファイルをダウンロードします(たとえば、https pretrained=/path/to/open_clip_pytorch_model.bin //huggingface.co/laion/clip-lip-l-14-datacomp.xl-s13b-b90kk/tree/main)。
# pretrained also accepts local paths
model , _ , preprocess = open_clip . create_model_and_transforms ( 'ViT-B-32' , pretrained = 'laion2b_s34b_b79k' ) このリポジトリは、クリップモデルのトレーニングに焦点を当てています。 Imagenetなどの下流の分類タスクで訓練されたゼロショットモデルを微調整するには、他のリポジトリ:wise-ftをご覧ください。 Wise-ftリポジトリには、ゼロショットモデルの堅牢な微調整に関する論文のコードが含まれています。このコードでは、分布シフトで堅牢性を維持しながら、ゼロショットモデルを微調整する手法を導入します。
データセットをWebDatasetとしてダウンロードするには、IMG2Datasetをお勧めします。
CC3M IMG2DATASETの例を参照してください。
上記のCSVファイルを介してトレーニングデータを指定することに加えて、コードベースはWebDatasetもサポートしています。これは、大規模なデータセットに推奨されます。予想される形式は、一連の.tarファイルです。これらの各ファイルは、各トレーニングの例に2つのファイルを含める必要があります.tarつは画像用、もう1つは対応するテキスト用です。両方のファイルには同じ名前が必要ですが、異なる拡張機能が必要です。たとえば、 shard_001.tarには、 abc.jpgやabc.txtなどのファイルを含めることができます。 webdatasetの詳細については、https://github.com/webdataset/webdatasetをご覧ください。それぞれ1,000のデータポイントを持つ.tarファイルを使用します。これを使用して作成します。
Multimedia CommonsからYFCCデータセットをダウンロードできます。 Openaiと同様に、YFCCのサブセットを使用して、前述の精度数に到達しました。このサブセットの画像のインデックスは、Openaiのクリップリポジトリにあります。
最初に次のような仮想環境を作成することをお勧めします。
python3 -m venv .env
source .env/bin/activate
pip install -U pip
その後、 pip install 'open_clip_torch[training]'を使用して、トレーニング用のOpenCLipをインストールできます。
コードを提供するために変更を加えたい場合は、OpenCLipをクローンしてからOpenCLIPフォルダーにmake installを実行することができます(virtualenvを作成した後)
https://pytorch.org/get-started/locally/に従ってpip pytorchをインストールする
インストールをインストールするためのmake install-training実行することができます
テストはmake install-testて実行し、 make testことができます
python -m pytest -x -s -v tests -k "training"特定のテストを実行する
特定のGITの改訂またはタグに対する回帰テストを実行します。
テストデータを生成します
python tests/util_test.py --model RN50 RN101 --save_model_list models.txt --git_revision 9d31b2ec4df6d8228f370ff20c8267ec6ba39383警告:これにより、GITが呼び出され、作業ツリーが変更されますが、データが生成された後、現在の状態にリセットされます。
この方法でテストデータが生成されている間、作業ツリーを変更しないでください。
回帰テストを実行します
OPEN_CLIP_TEST_REG_MODELS=models.txt python -m pytest -x -s -v -m regression_testpython -m open_clip_train.main
--save-frequency 1
--zeroshot-frequency 1
--report-to tensorboard
--train-data= " /path/to/train_data.csv "
--val-data= " /path/to/validation_data.csv "
--csv-img-key filepath
--csv-caption-key title
--imagenet-val=/path/to/imagenet/root/val/
--warmup 10000
--batch-size=128
--lr=1e-3
--wd=0.1
--epochs=30
--workers=8
--model RN50注: imagenet-valトレーニングセットではなく、ゼロショット評価のためのImagenetの検証セットへのパスです。トレーニング全体でImagenetでゼロショット評価を実行したくない場合は、この引数を削除できます。 valフォルダーにはサブフォルダーが含まれている必要があることに注意してください。そうでない場合は、このスクリプトを使用してください。
このコードは、最大1024 A100からバトルテストされており、分散トレーニング用のさまざまなソリューションを提供しています。 Slurmクラスターのネイティブサポートを含めます。
トレーニングに使用されるデバイスの数が増加すると、ロジットマトリックスのスペースの複雑さも増加します。ナイーブなオールギャザースキームを使用すると、スペースの複雑さはO(n^2)になります。代わりに、フラグ--gather-with-gradと--local-lossが使用されると、複雑さが効果的に線形になる場合があります。この変更は、ナイーブな方法として1対1の数値結果をもたらします。
大規模なデータセット(LAION2Bなど)の場合、たとえば-Train --train-num-samples --train-num-samples 135646078から1/16のエポックの1/16から、交換用のサンプリングを行うために--dataset-resampledエポック135646078から1/16を設定することをお勧めします。これにより、頻繁にチェックポイントを使用できるようになり、より頻繁に評価できます。
最近の研究では、視覚トークンの半分から4分の3を落とし、精度を失うことなく最大2〜3倍のトレーニング速度に至ることが示されています。
これは、キーpatch_dropoutを使用してVisual Transformer Configに設定できます。
論文では、最後にパッチドロップアウトなしで微調整されました。これは、コマンドラインの引数で--force-patch-dropout 0.
OpenCLIPは、異なるデータパスを::で分離することにより、複数のデータソースを使用してサポートします。たとえば、CC12Mおよびライオンでトレーニングするには、 --train-data "/data/cc12m/cc12m-train-{0000..2175}.tar::/data/LAION-400M/{00000..41455}.tar"を使用する場合があります。これらの場合には、 --dataset-resampled使用することをお勧めします。
デフォルトでは、期待すると、モデルが各ソースからサンプルがソースのサイズに比例する回数が表示されます。たとえば、サイズ400mとサイズ10mの1つのデータソースでトレーニングをトレーニングする場合、最初のソースのサンプルは期待される可能性が40倍高くなります。
また--train-data-upsampling-factorsフラグを使用して、データソースのさまざまな重み付けをサポートします。たとえば、上記のシナリオで--train-data-upsampling-factors=1::1使用することは、フラグを使用しないことと同等であり、 --train-data-upsampling-factors=1::2は、2番目のデータソースを2回アップサンプリングすることに相当します。同じ頻度のデータソースからサンプリングする場合、アップサンプリング係数はデータソースのサイズに反比例する必要があります。たとえば、データセットAに1000のサンプルがあり、データセットBに100のサンプルがある場合、 --train-data-upsampling-factors=0.001::0.01 (または同様に、 --train-data-upsampling-factors=1::10 )を使用できます。
torchrunを利用して、分散したジョブを立ち上げます。以下は、4 GPUのノードでAジョブを起動します。
cd open_clip/src
torchrun --nproc_per_node 4 -m open_clip_train.main
--train-data ' /data/cc12m/cc12m-train-{0000..2175}.tar '
--train-num-samples 10968539
--dataset-type webdataset
--batch-size 320
--precision amp
--workers 4
--imagenet-val /data/imagenet/validation/ユーザーがノードとホストノードの数に関する情報を含める限り、上記の同じスクリプトが機能します。
cd open_clip/src
torchrun --nproc_per_node=4
--rdzv_endpoint= $HOSTE_NODE_ADDR
-m open_clip_train.main
--train-data ' /data/cc12m/cc12m-train-{0000..2175}.tar '
--train-num-samples 10968539
--dataset-type webdataset
--batch-size 320
--precision amp
--workers 4
--imagenet-val /data/imagenet/validation/これは、利用するのが最も簡単なソリューションです。次のスクリプトを使用して、最大のモデルをトレーニングしました。
#! /bin/bash -x
# SBATCH --nodes=32
# SBATCH --gres=gpu:4
# SBATCH --ntasks-per-node=4
# SBATCH --cpus-per-task=6
# SBATCH --wait-all-nodes=1
# SBATCH --job-name=open_clip
# SBATCH --account=ACCOUNT_NAME
# SBATCH --partition PARTITION_NAME
eval " $( /path/to/conda/bin/conda shell.bash hook ) " # init conda
conda activate open_clip
export CUDA_VISIBLE_DEVICES=0,1,2,3
export MASTER_PORT=12802
master_addr= $( scontrol show hostnames " $SLURM_JOB_NODELIST " | head -n 1 )
export MASTER_ADDR= $master_addr
cd /shared/open_clip
export PYTHONPATH= " $PYTHONPATH : $PWD /src "
srun --cpu_bind=v --accel-bind=gn python -u src/open_clip_train/main.py
--save-frequency 1
--report-to tensorboard
--train-data= " /data/LAION-400M/{00000..41455}.tar "
--warmup 2000
--batch-size=256
--epochs=32
--workers=8
--model ViT-B-32
--name " ViT-B-32-Vanilla "
--seed 0
--local-loss
--gather-with-gradpython -m open_clip_train.main
--train-data= " /path/to/train_data.csv "
--val-data= " /path/to/validation_data.csv "
--resume /path/to/checkpoints/epoch_K.ptトレーニングコカモデルは、トレーニングスクリプトの--modelパラメーターを使用してコカ構成を指定することにより有効になります。現在利用可能な構成は、「coca_base」、「coca_vit-b-32」、および「coca_roberta-vit-b-32」(テキストエンコーダーとしてrobertaを使用)です。 COCA構成は、マルチモーダルテキストデコーダーのパラメーターを指定する追加の「Multimodal_CFG」コンポーネントがあるため、Clip構成とは異なります。 COCA_VIT-B-32構成の例は次のとおりです。
"multimodal_cfg" : {
"context_length" : 76 ,
"vocab_size" : 49408 ,
"width" : 512 ,
"heads" : 8 ,
"layers" : 12 ,
"latent_dim" : 512 ,
"attn_pooler_heads" : 8
}初期コードのLucidrains、CodeをOpen_Clipに適応させるためのGPUCCE、およびモデルをトレーニングするためのIEJMACのクレジット。
import open_clip
import torch
from PIL import Image
model , _ , transform = open_clip . create_model_and_transforms (
model_name = "coca_ViT-L-14" ,
pretrained = "mscoco_finetuned_laion2B-s13B-b90k"
)
im = Image . open ( "cat.jpg" ). convert ( "RGB" )
im = transform ( im ). unsqueeze ( 0 )
with torch . no_grad (), torch . cuda . amp . autocast ():
generated = model . generate ( im )
print ( open_clip . decode ( generated [ 0 ]). split ( "<end_of_text>" )[ 0 ]. replace ( "<start_of_text>" , "" ))この[コカコラブ]も参照してください
MSCOCOでコカを微調整するには、最初にデータセットを作成するために、1つの方法はCSVDatasetを使用することです。おそらく最も簡単な方法は、pycotoolsを使用するClip_benchmarkを使用することです(それ自体も使用できます)。
from clip_benchmark . datasets . builder import build_dataset
import pandas as pd
import os
root_path = "path/to/data/dir" # set this to smth meaningful
ds = build_dataset ( "mscoco_captions" , root = root_path , split = "train" , task = "captioning" ) # this downloads the dataset if it is not there already
coco = ds . coco
imgs = coco . loadImgs ( coco . getImgIds ())
future_df = { "filepath" :[], "title" :[]}
for img in imgs :
caps = coco . imgToAnns [ img [ "id" ]]
for cap in caps :
future_df [ "filepath" ]. append ( img [ "file_name" ])
future_df [ "title" ]. append ( cap [ "caption" ])
pd . DataFrame . from_dict ( future_df ). to_csv (
os . path . join ( root_path , "train2014.csv" ), index = False , sep = " t "
)これにより、open_clipでコカを微調整するために使用できるCSVデータセットが作成されるはずです
python -m open_clip_train.main
--dataset-type " csv "
--train-data " path/to/data/dir/train2014.csv "
--warmup 1000
--batch-size 128
--lr 1e-5
--wd 0.1
--epochs 1
--workers 3
--model " coca_ViT-L-14 "
--report-to " wandb "
--coca-contrastive-loss-weight 0
--coca-caption-loss-weight 1
--log-every-n-steps 100これは一般的な設定です。Open_Clipには、設定できる非常にパラメーターがあり、 python -m open_clip_train.main --helpそれらを表示する必要があります。トレーニング前と比較した唯一の関連する変更は、2つの議論です
--coca-contrastive-loss-weight 0
--coca-caption-loss-weight 1モデルは生成側のみを訓練するようにします。
異なる言語モデルをクリップ用のテキストエンコーダーとして使用する場合はsrc/open_clip/model_configsの抱きしめるフェイスモデル構成のいずれかを使用して、それぞれ--modelと--hf-tokenizer-nameパラメーターとしてトークナイザーを渡すことでそうすることができます。現在、Roberta(「Test-Roberta」構成)のみをサポートしていますが、新しいモデルを追加することは些細なことです。また、最後からのレイヤーの数を決定して、 --lock-text-unlocked-layersパラメーターを使用して登録されておくこともできます。これは、ロベルタLMでクリップをトレーニングするためのコマンドの例です。
python -m open_clip_train.main
--train-data= " pipe:aws s3 cp s3://s-mas/cc3m/{00000..00329}.tar - "
--train-num-samples 3000000
--val-data= " pipe:aws s3 cp s3://s-mas/cc3m/{00330..00331}.tar - "
--val-num-samples 10000
--dataset-type webdataset
--batch-size 256
--warmup 2000
--epochs 10
--lr 5e-4
--precision amp
--workers 6
--model " roberta-ViT-B-32 "
--lock-text
--lock-text-unlocked-layers 10
--name " 10_unfrozen "
--report-to " tensorboard " 8 GPUを使用してマシンで実行すると、コマンドは概念キャプションのために次のトレーニング曲線を作成する必要があります。
概念キャプションのより詳細な曲線は、/docs /clip_conceptual_captions.mdで提供されています。
YFCCでRN50をトレーニングする場合、 lr=5e-4とepochs=32を除き、上記と同じハイパーパラメーターを使用します。
ViT-B/32またはRN50x4またはRN50x16またはViT-B/16などの別のモデルを使用するには、 --model RN50x4で指定することに注意してください。
テンソルボードロギングの場合、実行してください。
tensorboard --logdir=logs/tensorboard/ --port=7777 WANDBロギングの場合、このコードベースの以前のバージョンで適切に設定されていないため、 Stepの代わりにstep変数を調べることをお勧めします。 #613の前にトレーニングされたモデルを使用した古い実行の場合、 Step変数は無視する必要があります。新しい実行の場合、そのPRの後、2つの変数は同じです。
40のデータセットで体系的な評価には、https://github.com/laion-ai/clip_benchmark#how-to-Use-to-useをお勧めします。
python -m open_clip_train.main
--val-data= " /path/to/validation_data.csv "
--model RN101
--pretrained /path/to/checkpoints/epoch_K.ptpython -m open_clip_train.main
--imagenet-val /path/to/imagenet/validation
--model ViT-B-32-quickgelu
--pretrained laion400m_e32--distill-modelと--distill-pretrainedを使用して、蒸留するモデルを指定することにより、事前に訓練されたものから蒸留できます。たとえば、Openai VIT-L/14の使用から蒸留する--distill-model ViT-L-14 --distill-pretrained openai 。
より大きなバッチをシミュレートするには--accum-freq kを使用します。 GPUバッチサイズ、 --batch-size 、 mの場合、有効なバッチサイズはk * m * num_gpusになります。
--accum-freqデフォルト1の1から増加すると、サンプル/sはほぼ一定のままです(バッチサイズは2倍になり、バッチあたりの時間と同様)。他の機能を使用して--grad-checkpointing --local-loss --gather-with-grad増加する前に、 --accum-freqなどのバッチサイズを削減することをお勧めします。 --accum-freqこれらの機能に加えて使用できます。
例ごとに1つのフォワードパスの代わりに、実験ごとに2つのフォワードパスがあります。ただし、1つ目はtorch.no_gradで行われます。
必要な追加のGPUメモリがあります---すべてのmバッチの機能とデータはメモリに保存されます。
通常の1の代わりにm損失計算もあります。
詳細については、Cui et al。 (https://arxiv.org/abs/2112.09331)またはPham et al。 (https://arxiv.org/abs/2111.10050)。
INT8トレーニングと推論をベータサポートしています。 --use-bnb-linear SwitchBackLinearGlobalまたは--use-bnb-linear SwitchBackLinearGlobalMemEfficientでINT8トレーニングを有効にすることができます。これらのレイヤーの定義については、BitsandBytesライブラリをご覧ください。 Clip Vit-Hugeの場合、これは現在、精度の損失なしで10%のトレーニングスピードアップに対応する必要があります。より多くのスピードアップは、注意層がリファクタリングされているときにコムインします。
チュートリアルhttps://github.com/mlfoundations/open_clip/blob/main/tutorials/int8_tutorial.ipynbまたはPaperを参照してください。
S3バケットのファイルなど、リモートファイルから直接再開することが常に可能です。 set set- --resume s3://<path-to-checkpoint> 。これは、 fsspecがサポートするファイルシステムで動作します。
S3まで継続的にバックアップしながらopen_clipモデルをトレーニングすることもできます。これにより、ローカルファイルシステムが遅くなるのを防ぐことができます。
ノードにはローカルSSD /scratch 、S3バケットs3://<path-to-bucket>があるとします。
その場合、 --logs /scratchと--remote-sync s3://<path-to-bucket>設定します。次に、バックグラウンドプロセスは、 s3://<path-to-bucket>/<run-name>に同期/scratch/<run-name>を同期します。同期した後、バックグラウンドプロセスは--remote-sync-frequency秒で眠り、デフォルトで5分になります。
S3だけでなく、他のリモートファイルシステムと同期するための実験的サポートもあります。そうするには、 --remote-sync-protocol fsspec指定します。ただし、これは現在非常に遅く、推奨されていません。
また、これらの機能を使用するときにローカルで多くのチェックポイントを保存することをオプションで避けるために、新しいチェックポイントを保存した後に前のチェックポイントを削除する--delete-previous-checkpointを使用できます。
注:この機能を使用している場合は、 --resume latestである場合、いくつかの警告があります。まず、 --save-most-recentで使用することはサポートされていません。第二に、 s3のみがサポートされています。最後に、同期がバックグラウンドで発生するため、最新のチェックポイントがリモートに同期しない可能性があります。
モジュールopen_clip.push_to_hf_hubには、モデル /wの重みと構成をHFハブにプッシュするためのヘルパーが含まれています。
The tool can be run from command line, ex: python -m open_clip.push_to_hf_hub --model convnext_large_d_320 --pretrained /train/checkpoints/epoch_12.pt --repo-id laion/CLIP-convnext_large_d_320.laion2B-s29B-b131K-ft
ガウスセンターのスーパーコンピューティングEV(www.gauss-centre.eu)は、Jolich Supercuting Center(JSC)のGCSスーパーコンピューターJuwels BoosterでJohn von Neumann Institute(nic)を通じてコンピューティング時間を提供することにより、この作業の部分に資金を提供してくれたことに感謝しています。
このリポジトリの現在の開発は、ロスワイトマン、ロマンボーモント、ケイドゴードン、ヴァイシャールシャンカールが主導しています。
このリポジトリのオリジナルバージョンは、UW、Google、スタンフォード、アマゾン、コロンビア、バークレーの研究者グループからのものです。
ガブリエル・イルハルコ*、ミッチェル・ワーツマン*、ニコラス・カルリニ、ロハン・タオリ、アチャル・デイブ、ヴァイシャール・シャンカール、ジョン・ミラー、ホンソク・ナムコン、ハンナネ・ハジシルジ、アリ・ファーハディ、ルドウィグ・シュミット
ジョン・ウック・キムとアレック・ラドフォードに、クリップの再現を助けてくれたことに感謝します!
このリポジトリが便利だと思った場合は、引用を検討してください。
@software { ilharco_gabriel_2021_5143773 ,
author = { Ilharco, Gabriel and
Wortsman, Mitchell and
Wightman, Ross and
Gordon, Cade and
Carlini, Nicholas and
Taori, Rohan and
Dave, Achal and
Shankar, Vaishaal and
Namkoong, Hongseok and
Miller, John and
Hajishirzi, Hannaneh and
Farhadi, Ali and
Schmidt, Ludwig } ,
title = { OpenCLIP } ,
month = jul,
year = 2021 ,
note = { If you use this software, please cite it as below. } ,
publisher = { Zenodo } ,
version = { 0.1 } ,
doi = { 10.5281/zenodo.5143773 } ,
url = { https://doi.org/10.5281/zenodo.5143773 }
} @inproceedings { cherti2023reproducible ,
title = { Reproducible scaling laws for contrastive language-image learning } ,
author = { Cherti, Mehdi and Beaumont, Romain and Wightman, Ross and Wortsman, Mitchell and Ilharco, Gabriel and Gordon, Cade and Schuhmann, Christoph and Schmidt, Ludwig and Jitsev, Jenia } ,
booktitle = { Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition } ,
pages = { 2818--2829 } ,
year = { 2023 }
} @inproceedings { Radford2021LearningTV ,
title = { Learning Transferable Visual Models From Natural Language Supervision } ,
author = { Alec Radford and Jong Wook Kim and Chris Hallacy and A. Ramesh and Gabriel Goh and Sandhini Agarwal and Girish Sastry and Amanda Askell and Pamela Mishkin and Jack Clark and Gretchen Krueger and Ilya Sutskever } ,
booktitle = { ICML } ,
year = { 2021 }
} @inproceedings { schuhmann2022laionb ,
title = { {LAION}-5B: An open large-scale dataset for training next generation image-text models } ,
author = { Christoph Schuhmann and
Romain Beaumont and
Richard Vencu and
Cade W Gordon and
Ross Wightman and
Mehdi Cherti and
Theo Coombes and
Aarush Katta and
Clayton Mullis and
Mitchell Wortsman and
Patrick Schramowski and
Srivatsa R Kundurthy and
Katherine Crowson and
Ludwig Schmidt and
Robert Kaczmarczyk and
Jenia Jitsev } ,
booktitle = { Thirty-sixth Conference on Neural Information Processing Systems Datasets and Benchmarks Track } ,
year = { 2022 } ,
url = { https://openreview.net/forum?id=M3Y74vmsMcY }
}