
El código para ACM MM2024 (Multimodal Unlearnable Examples: Protecting Data against Multimodal Contrastive Learning)
Resumen: El aprendizaje contrastivo multimodal (MCL) ha mostrado avances notables en la clasificación zero-shot al aprender de millones de pares imagen-texto extraídos de Internet. Sin embargo, esta dependencia plantea riesgos para la privacidad, ya que los atacantes podrían explotar sin autorización datos de imagen-texto para entrenar modelos, incluyendo potencialmente información personal y sensible. Trabajos recientes proponen generar ejemplos no aprendibles añadiendo perturbaciones imperceptibles a las imágenes de entrenamiento para crear atajos de protección. No obstante, están diseñados para la clasificación unimodal, la cual permanece en gran medida inexplorada en MCL. Primero exploramos este contexto evaluando el rendimiento de los métodos existentes en pares imagen-texto, y estos no se generalizan eficazmente a datos multimodales y muestran un impacto limitado a la hora de crear atajos debido a la falta de etiquetas y la dispersión de los pares en MCL. En este artículo proponemos Multi-step Error Minimization (MEM), un novedoso proceso de optimización para generar ejemplos multimodales no aprendibles. Extiende el marco de Error-Minimization (EM) para optimizar tanto el ruido de la imagen como un disparador de texto adicional, ampliando así el espacio optimizado y engañando eficazmente al modelo para que aprenda el atajo entre las características del ruido y el disparador de texto. Concretamente, adoptamos el descenso de gradiente proyectado para resolver el problema de minimización del ruido y utilizamos HotFlip para aproximar el gradiente y reemplazar palabras con el fin de encontrar el disparador de texto óptimo. Numerosos experimentos demuestran la eficacia de MEM, con resultados de recuperación tras la protección de casi la mitad de los obtenidos por azar, y su alta transferibilidad entre diferentes modelos.
Nuestro código se basa en el código fuente de CleanCLIP.
Siga las instrucciones del siguiente enlace para configurar anaconda: Configuración de Anaconda
Los siguientes comandos crean un entorno conda dentro del repositorio con las dependencias.
conda env create --prefix ./env -f environment.yml
source activate ./env
Los requisitos se pueden instalar directamente sin crear un entorno conda.
pip install -r requirements.txt
Ya hemos dividido estos conjuntos de datos en conjunto de entrenamiento, conjunto de validación y conjunto de prueba. Los resultados de la división se pueden encontrar, por ejemplo, en ~/Data/Dataset/train.csv .
El conjunto de datos Flickr 8k contiene 8092 imágenes y hasta cinco descripciones para cada imagen. El conjunto de datos se puede descargar aquí.
El conjunto de datos Flickr30k contiene 31 000 imágenes recopiladas de Flickr, junto con 5 frases de referencia proporcionadas por anotadores humanos. El conjunto de datos se puede descargar aquí.
El conjunto de datos se puede descargar aquí.
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
Establezca la longitud del disparador de texto en 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
Establezca la longitud del disparador de texto en 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
Algunas partes del código de este repositorio son adaptaciones de los siguientes repositorios: CleanCLIP, openai y universal-triggers.