Nouvelle version de l'API de floutage Panoramax

L’API de floutage de Panoramax est un élément clé du projet, sans elle il ne serait pas possible de publier des photos de l’espace public contenant visages ou plaques d’immatriculation.

Une nouvelle version a été déployée ces dernières semaines avec un certain nombre d’améliorations.

Un floutage plus discret

Les zones floutées suivaient le découpage en blocs unitaires (MCU) d’un fichier JPEG, soit de 8x8 à 16x16 pixels.

Désormais, c’est uniquement la zone détectée qui est floutée sans qu’elle s’étende au delà.

Un entrainement plus poussé des modèles de détection

Grâce à un GPU plus puissant, les modèles ont été ré-entrainés en ajoutant aussi plus de photos annotées.

Ceux-ci l’ont aussi été sur une nouvelle version des modèles pré-entrainés en passant de YOLOv8 à YOLOv11 et en passant de version “small” à des versions “medium” ou “large” des modèles.

Plus les modèles sont gros, plus leur entrainement est long et le besoin en VRAM important dans les GPU.

Les modèles entrainés sont publiés sur:

Une détection multi-résolution

La définition des photos augmente et il n’est plus exceptionnel d’avoir des images 360° approchant les 100 millions de pixels.
Ceci oblige à “zoomer” dans les images pour détecter des objets lointains mais qui pourraient être reconnaissables.
Il faut toutefois aussi faire une passe de détection en baissant la résolution pour détecter des objets très proches.

Il y a donc de 2 à 4 détections qui sont faites sur les photos en fonction de leur résolution.

Pour les photos à 360°, afin de ne pas saturer la mémoire des GPU, ces photos d’un ratio 2:1 (deux fois plus larges que hautes) sont coupées en deux parties (gauche et droite) et analysées l’une après l’autre.

Une meilleur gestion de la VRAM des GPU et une file d’attente

La mémoire interne des GPU est très sollicitée en fonction de la taille des images analysées et nos GPU actuels ont 8Go de VRAM.

L’analyse d’une photo 360° provenant par exemple d’une Gopro Max sera analysée 4 fois:

  • 1024 x 512, avec environ 512Mo nécessaires
  • 2048 x 1024 avec environ 1Go nécessaire
  • 3840 x 3840 et là 6Go sont nécessaires une fois pour la partie gauche, une autre pour la partie droite

On ne peut donc faire ces dernières analyses qu’une à la fois. Une file d’attente a du coup été mise en place pour attendre qu’assez de mémoire soit disponible avant de faire l’analyse. La mémoire utilisée est aussi désormais libérée après usage.

Séparation de la détection et du floutage

Ces deux étapes s’enchainent mais utilisent des ressources très différentes:

  • GPU + CPU pour la détection
  • uniquement CPU pour le floutage

Deux micro-services tournent donc l’un à côté de l’autre pour mieux tirer partie du GPU.

La nouvelle version du code de l’API avec ces diverses améliorations (et quelques autres) est disponible sur :

10 Likes

Petite question bête, est-ce qu’un objet à cheval sur les jonctions risquerait de ne pas être déteeté et donc flouté ?

Malgré le floutage, sur la photo d’exemple je sais qui porte la caméra et qui se trouve à côté. Grillés ! :wink:

3 Likes

Globalement, le modèle a été entrainé pour détecter des plaques et visages partiellement cachés, il détectera donc en principe ce qui pourra se trouver en bordure d’image et donc à la jointure.

Si vous repérez des images où ce n’est pas le cas, merci de les signaler ici.

1 Like

Bravo pour tout ça ! C’est génialissime <3

Pensée perso : Un floutage plus discret n’est peut être pas une bonne solution. La recherche de l’esthétique ne doit pas incidemment cacher le fait qu’une partie est volontairement “détruite”.

Disons qu’il bave moins… mais les pixels dessous sont en réalité encore plus floutés qu’avant car moins nombreux.

J’applique une règle pour réduire à 12 pixels maximum les pixels d’origine de la zone à flouter, ce qui garantit qu’on a pas plus d’infos, puis je remet ça sur la zone en appliquant un flou gaussien.

12 pixels car c’est la limite annoncée par les boites qui vendent des algos de reconnaissance faciale comme nombre de pixels minimum entre les yeux… et j’applique ça sur le visage entier donc bien en dessous de leur capacités.

Bonjour

j’ai fait un tour dans un parking hier, l’occasion de voir comment sont floutées les plaques immatriculation dans cette nouvelle version de l’API de floutage.

Voici les loupés que j’ai repéré (plaque plus ou moins lisible selon les cas) :

voiture rouge et voiture blanche + voiture noire en tournant vers la gauche :

Floutage que d’une partie de la plaque :

Plaque modèle ??

Malheureusement c’est pas du 100%… et il y a des cas limites parfois complexes.

Sur les photos 360, ce qui va gêner la détection c’est:

  • la position très basse sur l’image (proche) qui avec la projection équirectangulaire est très déformée
  • le fait que les photos soient plus ou moins de travers… ça augmente ces déformations

Pour la plaque étrangère (modèle US) c’est un manque d’exemples de ce type… on a quand même quasiment que des plaques européennes dans l’entrainement voire surtout française (couleur différente pour la belgique, les pays bas).

J’avais ajouté pas mal de plaques récupérées sur l’autoroute pendant les vacances, mais des américains ça court pas nos routes, il va falloir récupérer des données US.

J’avais constaté un souci similaire sur des photos à Manielle avec les plaques de vélomoteur mal détectées.

Autre chose que je peux faire, c’est augmenter les déformations artificielles pendant l’entrainement dont l’inclinaison…

Lors d’une présentation de Panoramax, une personne avait fait remarquer que flouter les visages, c’était insuffisant car la taille, la corpulence, le buste, la posture, ou la démarche et l’habillement constituent une forme de signature unique … et permettent d’identifier presque à coup sûr une personne… Je n’ai pas su trop quoi répondre.
La réglementation se limite-t-elle à exiger le floutage des visages ou exprime-t-elle les choses de manière plus générale et parle d’anonymisation des personnes ?

La réglementation ne va pas dans ce niveau de détail, mais la CNIL estime que le floutage des visages et plaques d’immatriculation est suffisant pour ceux qui publient des photos prises dans l’espace public. C’est sa position depuis toujours sur le sujet, pour cela que Google Street View et autres services de ce type ne sont pas interdits.

Si quelqu’un utilise ces images et fait des traitements supplémentaires afin de ré-identifier des personnes en utilisant d’autres données indispensables, c’est elle qui devra justifier ses traitements et avoir tout ce qui va autour (la possibilité de s’y opposer, etc) et informer les intéressés du traitement qui s’appuie sur ces autres données directement identifiantes où elle a dû déjà obtenir en principe un consentement.