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 :