Figure 1 : Une illustration de la génération de perturbations contradictoires pour la sauvegarde des images personnelles. |
Bienvenue dans le référentiel officiel de l'article, Edit Away and My Face Will not Stay : Personal Biometric Defense against Malicious Generative Editing.
Les progrès récents dans les modèles de diffusion ont rendu l’édition d’images générative plus accessible que jamais. Bien que ces développements permettent aux utilisateurs de générer facilement des modifications créatives, ils soulèvent également d'importantes préoccupations éthiques, en particulier en ce qui concerne les modifications malveillantes des portraits humains qui menacent la vie privée et la sécurité de l'identité des individus. Les méthodes de protection d'image à usage général existantes se concentrent principalement sur la génération de perturbations contradictoires pour annuler les effets d'édition. Cependant, ces approches présentent souvent une instabilité pour se protéger contre diverses demandes d'édition. Dans ce travail, nous introduisons une nouvelle perspective sur la protection des portraits humains personnels contre les modifications malveillantes. Contrairement aux méthodes traditionnelles visant à empêcher les modifications de prendre effet, notre méthode, FaceLock , optimise les perturbations contradictoires pour garantir que les informations biométriques originales --- telles que les traits du visage --- sont soit détruites, soit considérablement modifiées après la modification, rendant le sujet dans le sortie modifiée biométriquement méconnaissable. Notre approche intègre de manière innovante des facteurs de reconnaissance faciale et de perception visuelle dans le processus d'optimisation des perturbations, garantissant ainsi une protection robuste contre diverses tentatives d'édition. En outre, nous mettons en lumière plusieurs problèmes critiques liés aux mesures d’évaluation couramment utilisées dans l’édition d’images et révélons des méthodes de triche par lesquelles elles peuvent être facilement manipulées, conduisant à des évaluations trompeuses de la protection. Grâce à des expériences approfondies, nous démontrons que FaceLock surpasse considérablement toutes les références en termes de performances de défense contre un large éventail de modifications malveillantes. De plus, notre méthode présente également une forte robustesse face aux techniques de purification. Notre travail fait non seulement progresser l’état de l’art en matière de défense biométrique, mais jette également les bases de pratiques plus sécurisées et plus respectueuses de la vie privée dans l’édition d’images.
Nous fournissons un fichier conda env pour la configuration de l'environnement.
conda env créer -f environnement.yml conda activer facelock
Nous commençons par présenter le code d’édition et de défense d’image appliqué à une seule image d’entrée.
python edit.py --input_path=${chemin de l'image d'entrée} --prompt=${l'invite d'instructions utilisée pour modifier l'image} [--num_inference_steps=100 --image_guidance_scale=1.5 --guidance_scale=7.5 --help]
Explication des arguments :
input_path
le chemin d'accès à l'image à modifier
prompt
l'invite d'instructions utilisée pour modifier l'image
Configurations num_inference, image_guidance_scale, guidance_scale
utilisées pour guider le processus d'édition d'image
help
pour voir d'autres arguments pour l'édition d'image
python defense.py --input_path=${chemin de l'image d'entrée} --defend_method=${méthode de défense sélectionnée} [--attack_budget=0.03 --step_size=0.01 --num_iters=100 --help]
Explication des arguments :
input_path
le chemin d'accès à l'image à protéger
defend_method
la méthode de défense sélectionnée, nous proposons des options parmi [encoder/vae/cw/facelock]
attack_budget, step_size, num_iters
hyper-paramètres pour le processus de défense
help
à visualiser d'autres arguments pour défendre une seule image
Ensuite, nous étendons cela pour démontrer le code permettant de gérer l’édition et la défense d’images sur plusieurs images.
python main_edit.py --src_dir=${répertoire de l'image d'entrée} --edit_dir=${répertoire de l'image de sortie} [--num_inference_steps=100 --image_guidance_scale=1.5 --guidance_scale=7.5 --help]
Explication des arguments :
src_dir
le chemin d'accès au répertoire des images sources à éditer
edit_dir
le chemin d'accès au répertoire contenant les images éditées générées
les autres arguments sont similaires à la version d'édition d'image unique, utilisez help
pour voir plus de détails
python main_defend.py --image_dir=${répertoire de l'image d'entrée} --output_dir=${répertoire de l'image de sortie} --defend_method=${méthode de défense sélectionnée} [--attack_budget=0.03 --step_size=0.01 --num_iters=100 --aide]
Explication des arguments :
image_dir
le chemin d'accès au répertoire des images sources à protéger
output_dir
le chemin d'accès au répertoire contenant les images protégées générées
les autres arguments sont similaires à la version de défense d'image unique, utilisez help
pour voir plus de détails
Nous fournissons le code d'évaluation pour calculer les métriques PSNR, SSIM, LPIPS, CLIP-S, CLIP-I, FR
mentionnées dans l'article.
cd évaluation# PSNR metricpython eval_psnr.py --clean_edit_dir=${chemin vers les modifications propres} --defend_edit_dirs ${séquence du chemin vers les modifications protégées} --seed=${la graine utilisée pour modifier et évaluer sur}# SSIM metricpython eval_ssim.py --clean_edit_dir=${chemin d'accès aux modifications propres} --defend_edit_dirs ${séquence du chemin vers les modifications protégées} --seed=${la graine utilisée pour éditer et évaluer sur}# LPIPS metricpython eval_lpips.py --clean_edit_dir=${chemin vers les modifications propres} --defend_edit_dirs $ {séquence du chemin vers les modifications protégées} --seed=${la graine utilisée pour modifier et évaluer on}# CLIP-S metricpython eval_clip_s.py --src_dir=${chemin d'accès aux images source} --defend_edit_dirs ${séquence du chemin d'accès aux modifications protégées} --seed=${la graine utilisée pour éditer et évaluer sur} [--clean_edit_dir=${chemin d'accès aux modifications propres}]# CLIP-I metricpython eval_clip_i.py --src_dir=${chemin vers les images source} --defend_edit_dirs ${séquence du chemin vers les modifications protégées} --seed=${la graine utilisée pour éditer et évaluer sur} [--clean_edit_dir=${chemin vers le clean edits}]# FR metricpython eval_facial.py --src_dir=${chemin d'accès aux images sources} --defend_edit_dirs ${séquence du chemin vers les modifications protégées} --seed=${la graine utilisée pour éditer et évaluer} [--clean_edit_dir=${chemin vers les modifications propres}]
Pour PSNR
, SSIM
et LPIPS
, les calculs sont effectués entre les modifications sur les images protégées et les modifications sur les images propres. Par conséquent, les entrées defend_edit_dirs
et clean_edit_dir
sont obligatoires.
Pour CLIP-S
, le calcul implique l'image source, l'image modifiée et l'invite de modification. Pour gérer vos instructions uniques, vous pouvez modifier utils.py
. Cela nécessite une entrée supplémentaire pour le répertoire de l'image source src_dir
. Si clean_edit_dir
est fourni, les résultats CLIP-S
seront également calculés pour les modifications sur les images non protégées.
Pour CLIP-I
et FR
, les calculs utilisent l'image source et l'image éditée, partageant les mêmes paramètres d'entrée que CLIP-S
.
Si vous trouvez ce référentiel utile pour votre recherche, pensez à citer nos travaux :
@article{wang2024editawayfacestay, title={Modifiez loin et mon visage ne restera pas : défense biométrique personnelle contre l'édition générative malveillante}, author={Hanhui Wang et Yihua Zhang et Ruizheng Bai et Yue Zhao et Sijia Liu et Zhengzhong Tu}, journal={arXiv preprint arXiv:2411.16832}, }