
The code for ACM MM2024 (Multimodal Unlearnable Examples: Protecting Data against Multimodal Contrastive Learning)
Résumé : L'apprentissage contrastif multimodal (MCL) a montré des progrès remarquables en classification zero-shot en apprenant à partir de millions de paires image-légende collectées sur Internet. Cependant, cette dépendance pose des risques pour la vie privée, car des pirates peuvent exploiter sans autorisation les données image-texte pour l'entraînement de modèles, incluant potentiellement des informations personnelles et sensibles. Des travaux récents proposent de générer des exemples non-apprenables en ajoutant des perturbations imperceptibles aux images d'entraînement afin de créer des raccourcis pour la protection. Cependant, ils sont conçus pour la classification unimodale, ce qui reste largement inexploré dans le MCL. Nous explorons d'abord ce contexte en évaluant les performances des méthodes existantes sur des paires image-légende, et celles-ci ne se généralisent pas efficacement aux données multimodales et ont un impact limité pour construire des raccourcis en raison de l'absence d'étiquettes et de la dispersion des paires dans le MCL. Dans cet article, nous proposons la Minimisation d'Erreur Multi-étapes (MEM), un nouveau processus d'optimisation pour générer des exemples non-apprenables multimodaux. Il étend le cadre de Minimisation d'Erreur (EM) pour optimiser à la fois le bruit d'image et un déclencheur textuel supplémentaire, élargissant ainsi l'espace d'optimisation et trompant efficacement le modèle pour qu'il apprenne le raccourci entre les caractéristiques du bruit et le déclencheur textuel. Plus précisément, nous adoptons la descente de gradient projetée pour résoudre le problème de minimisation du bruit et utilisons HotFlip pour approximer le gradient et remplacer des mots afin de trouver le déclencheur textuel optimal. Des expériences approfondies démontrent l'efficacité de MEM, avec des résultats de récupération après protection presque deux fois moins bons que le hasard, ainsi qu'une grande transférabilité entre différents modèles.
Notre code s'appuie sur le code source de CleanCLIP.
Veuillez suivre les instructions du lien suivant pour configurer anaconda : Configuration d'Anaconda
Les commandes suivantes créent un environnement conda dans le dépôt avec les dépendances.
conda env create --prefix ./env -f environment.yml
source activate ./env
Les exigences peuvent être installées directement sans créer d'environnement conda.
pip install -r requirements.txt
Nous avons déjà divisé ces ensembles de données en ensemble d'entraînement, ensemble de validation et ensemble de test. Les résultats de la division se trouvent par exemple dans ~/Data/Dataset/train.csv .
Le jeu de données Flickr 8k contient 8092 images et jusqu'à cinq légendes pour chaque image. Le jeu de données peut être téléchargé ici.
Le jeu de données Flickr30k contient 31 000 images collectées depuis Flickr, accompagnées de 5 phrases de référence fournies par des annotateurs humains. Le jeu de données peut être téléchargé ici.
Le jeu de données peut être téléchargé ici.
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
définir la longueur du déclencheur textuel sur 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
définir la longueur du déclencheur textuel sur 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
Certaines parties du code de ce dépôt sont des adaptations des dépôts suivants : CleanCLIP, openai et universal-triggers.