
The code for ACM MM2024 (Multimodal Unlearnable Examples: Protecting Data against Multimodal Contrastive Learning)
Resumo: O aprendizado contrastivo multimodal (MCL) tem mostrado avanços notáveis na classificação zero-shot ao aprender a partir de milhões de pares imagem-legenda coletados da Internet. No entanto, essa dependência apresenta riscos de privacidade, pois hackers podem explorar dados de imagem-texto de forma não autorizada para treinamento de modelos, possivelmente incluindo informações pessoais e sensíveis. Trabalhos recentes propõem gerar exemplos inaprendíveis adicionando perturbações imperceptíveis às imagens de treinamento para construir atalhos para proteção. No entanto, eles são projetados para classificação unimodal, o que permanece em grande parte inexplorado em MCL. Primeiramente, exploramos esse contexto avaliando o desempenho dos métodos existentes em pares imagem-legenda, e eles não generalizam efetivamente para dados multimodais e exibem impacto limitado na construção de atalhos devido à falta de rótulos e à dispersão dos pares em MCL. Neste artigo, propomos a Minimização de Erro Multi-etapas (MEM), um processo de otimização inovador para gerar exemplos inaprendíveis multimodais. Ele estende a estrutura de Minimização de Erro (EM) para otimizar tanto o ruído da imagem quanto um gatilho de texto adicional, ampliando assim o espaço otimizado e enganando efetivamente o modelo para aprender o atalho entre as características do ruído e o gatilho de texto. Especificamente, adotamos o gradiente descendente projetado para resolver o problema de minimização de ruído e usamos HotFlip para aproximar o gradiente e substituir palavras a fim de encontrar o gatilho de texto ótimo. Experimentos extensivos demonstram a eficácia do MEM, com resultados de recuperação pós-proteção quase metade dos de um palpite aleatório, e sua alta transferibilidade entre diferentes modelos.
Nosso código depende do código-fonte do CleanCLIP.
Siga as instruções no link a seguir para configurar o anaconda: Configuração do Anaconda
Os comandos abaixo criam um ambiente conda dentro do repositório com as dependências.
conda env create --prefix ./env -f environment.yml
source activate ./env
Os requisitos podem ser instalados diretamente sem criar um ambiente conda.
pip install -r requirements.txt
Já dividimos esses conjuntos de dados em conjuntos de treinamento, validação e teste. E os resultados da divisão podem ser encontrados como em ~/Data/Dataset/train.csv .
O conjunto de dados Flickr 8k contém 8092 imagens e até cinco legendas para cada imagem. O conjunto de dados pode ser baixado aqui.
O conjunto de dados Flickr30k contém 31.000 imagens coletadas do Flickr, juntamente com 5 frases de referência fornecidas por anotadores humanos. O conjunto de dados pode ser baixado aqui.
O conjunto de dados pode ser baixado aqui.
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
definir o comprimento do gatilho de texto como 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
definir o comprimento do gatilho de texto como 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
Algumas partes do código neste repositório são adaptações dos seguintes repositórios: CleanCLIP, openai e universal-triggers.