Comment créer un anonymiseur d'image pour les tâches conformes au GDPR avec TF2

Comment créer un anonymiseur d'image pour les tâches conformes au GDPR avec TF2

De nombreuses tâches de vision par ordinateur nécessitent des images prises dans la nature (routes, événements, etc.), mais la constitution d'un ensemble de données pour les tâches liées au comportement humain peut s'avérer délicate. Comme vous devez le savoir, le GDPR n'autorise pas le stockage d'images prises sans consentement.

Il serait dommage de limiter les applications de l'IA en raison du GDPR, n'est-ce pas ? Chez Picsellia, nous nous consacrons à aider les gens à construire de meilleurs modèles de vision par ordinateur, il était donc logique pour nous de construire un anonymiseur pour vous aider à construire des ensembles de données liées à l'homme conformes au GDPR.

À quoi ressemble une image conforme au GDPR ?

dataset to anonymize.jpeg

Rencontrons Tom (ne vous inquiétez pas, j'ai trouvé Tom sur Pexels, donc il ne m'en voudra pas).

Comme vous pouvez le voir, 100 % de son visage est visible, ce qui n'est pas tout à fait conforme au GDPR.

En fait, pour être conforme, +50% de son visage ne doit pas être visible, de préférence les 50% supérieurs de son visage pour cacher ses yeux.


dataset hide eyes.jpeg

Comme ça !

Comment construire un détecteur de visage robuste ?

A présent, vous devriez avoir une idée de la manière dont nous avons développé notre anonymiseur :

  1. Construction d'un détecteur de visage
  2. Identifier les 60% supérieurs du visage
  3. L'estomper
  4. Réécrire l'image

Pourquoi construire votre propre détecteur de visage ?

Je suis sûr que vous avez vu un tas de tutoriels sur la façon d'entraîner un détecteur de visage avec openCV ou autre. Ces algorithmes fonctionnent bien pour les photos prises de près, mais les avez-vous essayés dans la nature ? Eh bien... ce n'est pas très bon. Et surtout, maintenant que le monde vit avec Covid-19, les algorithmes de détection des visages doivent s'adapter à la nouvelle réalité où tout le monde porte des masques.

En parlant de masques, pour construire notre ensemble de données, nous avons utilisé un ensemble de données sur les masques faciales annotées par des humains dans la boucle au début de la pandémie. Il est composé de plus de 6000 photos de personnes portant ou non des masques ; vous pouvez le trouver dans notre Hub de données.

datalake faces.png

Avec Picsellia, vous pouvez rapidement accéder à ce jeu de données et voir la répartition des étiquettes. Ici, nous avons un total de plus de 10000 visages annotés dans la nature.



dataset repartition faces.png

Mais nous ne voulons pas construire un autre détecteur de masque facial.

Nous devrons modifier un peu ce jeu de données afin de créer un jeu de données adapté à la détection des visages. Pour ce faire, nous pouvons simplement créer une nouvelle version de ce jeu de données et fusionner toutes les étiquettes en une seule -> FACE

merge datasets.png

Nous laissons la plateforme travailler un peu, et voilà, nous avons un ensemble de données de plus de 10 000 visages annotés.


datasets details.png

Les photos sont très diverses mais en voici un exemple :

dataset face example.png

Maintenant, entraînons notre modèle

Avant l'entraînement, nous devons réfléchir à ce que nous voulons obtenir. Nous voulions un modèle capable de réaliser l'anonymisation à grande vitesse, mais aussi avec un score de confiance élevé, car nous ne pouvons pas nous permettre de jouer manuellement avec le seuil de confiance en permanence.

Nous viserons également un score de précision élevé, car il serait absurde d'anonymiser une seule personne sur la photo.

Jetons un coup d'œil au hub des modèles de Picsellia, où vous trouverez des architectures de vision par ordinateur basées sur Tensorflow prêtes à être formées :

picsellia model hub.png

Pour comprendre comment lancer plusieurs formations avec différentes architectures avec Picsellia, je vous invite à lire notre dernier article.

Pour cet anonymiseur, nous avons choisi d'utiliser un EfficientDet-d2 pour sa vitesse de convergence et sa précision.

Voici les résultats enregistrés Picsellia.

training graphs for our EfficientDet.png
training metrics for our EfficientDet.png

Notre formation est assez bruyante mais nous avons réussi à obtenir un maP assez bon, nous allons donc l'utiliser comme base pour notre anonymiseur.

Nous allons télécharger notre modèle sauvegardé afin de construire notre anonymiseur.

Maintenant que notre modèle est formé et exporté, nous pouvons le télécharger pour l'utiliser localement. Pour ce faire, il suffit d'aller sur l'artefact de votre expérience et de télécharger le fichier saved_model.zip.

experiments artifacts.png

Ok, maintenant que nous avons un détecteur de visage robuste, nous allons pouvoir construire un anonymiseur très rapidement.

anonymizer (part 1).png

Disponible ici

Tout d'abord, importons quelques paquets et désactivons tous les avertissements de Tensorflow - qui veut vraiment voir des avertissements ?

Vous devez placer votre répertoire saved_model à la racine de votre projet (ne vous inquiétez pas, le code sera donné ci-dessous).

Chargeons le modèle sauvegardé et déclarons une fonction pre_process.

Maintenant, vous n'êtes qu'à quelques lignes d'obtenir un anonymiseur, nous avons seulement besoin d'extraire la bbox avec un score de confiance élevé, disons 0,5 et plus, et de flouter les 70% supérieurs des visages détectés.

anonymizer (part 2).png

Disponible ici

dataset anonymized.jpeg

Et voilà !

Vous pouvez trouver le code ici.

Si vous souhaitez essayer Picsellia vous-même, prenez un rendez-vous et demandez un essai ici !

Gérez vos données d'IA de la bonne manière

Obtenir un essai

Recommandé pour vous:

english language
EN
french language
FR