概要: マルチモーダル対比学習(MCL)は、インターネットから収集された何百万もの画像-キャプションペアを学習することで、ゼロショット分類において目覚ましい進歩を遂げています。しかし、この依存関係はプライバシーリスクをもたらします。ハッカーが画像テキストデータを無断でモデルトレーニングに悪用し、個人情報や機密性の高い情報を含む可能性があるためです。近年の研究では、保護のためのショートカットを構築するために、トレーニング画像に知覚不能な摂動を追加して非学習可能な例を生成することを提案しています。しかし、これらは単一モーダル分類用に設計されており、MCLではほとんど調査されていません。我々はまず、既存手法の性能を画像-キャプションペアで評価することによりこの文脈を探求し、それらの手法はマルチモーダルデータには効果的に一般化されず、MCLにおけるラベルの欠如とペアの分散によりショートカット構築への影響が限定的であることを見出しました。本論文では、マルチモーダル非学習可能例を生成するための新しい最適化プロセスであるMulti-step Error Minimization(MEM)を提案します。これはError-Minimization(EM)フレームワークを拡張して、画像ノイズと追加のテキストトリガーの両方を最適化し、最適化空間を拡大して、ノイズ特徴とテキストトリガー間のショートカットをモデルに効果的に学習させ誤誘導します。具体的には、射影勾配降下法を用いてノイズ最小化問題を解き、HotFlipを用いて勾配を近似し単語を置換して最適なテキストトリガーを探索します。大規模な実験により、MEMの有効性が実証され、保護後の検索結果はランダム推測のほぼ半分となり、異なるモデル間での高い転移可能性を示しました。
本コードは CleanCLIP のソースコードに依存しています。
以下のリンクの手順に従って anaconda をセットアップしてください: Anaconda のセットアップ
以下のコマンドで、リポジトリ内に依存関係を含む conda 環境を作成します。
conda env create --prefix ./env -f environment.yml
source activate ./env
conda 環境を作成しなくても、依存関係を直接インストールできます。
pip install -r requirements.txt
これらのデータセットは、トレーニングセット、バリデーションセット、テストセットに分割済みです。分割結果は ~/Data/Dataset/train.csv などにあります。
Flickr 8k データセットには 8092 枚の画像と、各画像に対して最大 5 つのキャプションが含まれています。データセットは こちら からダウンロードできます。
Flickr30k データセットには、Flickr から収集された 31,000 枚の画像と、人間のアノテーターによって提供された 5 つの参照文が含まれています。データセットは こちら からダウンロードできます。
データセットは こちら からダウンロードできます。
python -m src.main --name clean_flick8k --train_data /data/clip/Flicker-8k/train.csv --eval_test_data_dir /data/clip/Flicker-8k/test.csv --image_key images --caption_key caption --device_id 0
テキストトリガーの長さを 3 に設定
python -m src.poison --name poison_token_3_shuffle --train_data /data/clip/Flicker-8k/train.csv --image_key images --caption_key caption --device_id 0 --token_num 3 --lr 1e-4
テキストトリガーの長さを 5 に設定
python -m src.poison --name poison_token_5_shuffle --train_data /data/clip/Flicker-8k/train.csv --image_key images --caption_key caption --device_id 1 --token_num 5 --lr 1e-4
python -m src.poison_main --name eval_token_3_shuffle --train_data /data/clip/Flicker-8k/train.csv --eval_test_data_dir /data/clip/Flicker-8k/test.csv --image_key images --caption_key caption --device_id 0 --save_pert poison_token_3_shuffle --token_num 3 --lr 5e-4
python -m src.poison_main --name eval_token_5_shuffle --train_data /data/clip/Flicker-8k/train.csv --eval_test_data_dir /data/clip/Flicker-8k/test.csv --image_key images --caption_key caption --device_id 1 --save_pert poison_token_5_shuffle --token_num 5 --lr 5e-4
このリポジトリ内のコードの一部は、以下のリポジトリから改変したものです:CleanCLIP、openai、universal-triggers。