Floutage panoramax... annotation collaborative?

Vu que ça fait longtemps qu’on en parle, je ne peux pas ne pas participer à ça :smile:

Par contre, une bonne annotation étant vraiment, vraiment importante pour obtenir de bon résultats par la suite, il faut bien s’informer sur les bonnes pratiques.

Exemple : J’ai un jeune arbre qui cache le centre d’une plaque minéralogique.

  • Est ce que j’encadre toute la plaque avec le morceau de tronc ?
  • est-ce que je n’annote rien ?
  • Est-ce que je créé 2 zones ?
  • Autre solution ?

Et hop… c’est ouvert ici pour le moment:

https://label-studio.cquest.org/ qui tourne sur ma station de travail, pour bénéficier à terme de sa carte graphique et de ses TPU.

Lien d’invitation à demander par message privé.


Oui, il faut être bien clair sur la façon d’annoter.

Après avoir fait cette série, il semble nécessaire de savoir jusqu’où on va:

  • plaques lointaines, quasi illisibles ou déjà illisibles
  • pareil pour les visages
  • plaques partiellement masquées (coupées en deux dont on ne voit que le début ou la fin)
  • visages de personnes de profil voir de dos

Je n’ai pas assez d’expérience pour déterminer si cela joue beaucoup sur la qualité du modèle.

Différents options sont possibles:

  • des classes différentes pour les différents cas, ensuite on pourra toujours les regrouper ou pas
    • plate
    • plate_partial
    • face
    • face_partial

Je pense aussi qu’il serait judicieux de créer des jeux d’entraînement différents en fonction du type de prise de vue: sphérique 360, grand angle 170-190° et classiques

Un modèle adapté à ces trois grandes catégories de prises de vues permettra sûrement d’obtenir de meilleurs résultats car on pourra analyser les images en fonction de leur catégorie récupérée dans les données EXIF.

Je vais essayer de joindre quelqu’un qui pourrait nous donner quelques infos sur les bonnes pratiques, ou bien qui pourrait nous rediriger vers d’autres personnes.

Il y a un outil à suivre, qui est dédié à la vérification des annotations, et qui pourrait nous être utile un jour :

des explications : Labeling tools are great, but what about quality checks?

Il me semble qu’il faut une grande variété d’images, pour s’adapter à des conditions de prise de vues variables entre la lumière, les cadrages, les variations d’un smartphone/caméra à l’autre

Quelques exemples visuels de bonne/mauvaise pratique:

Pour la diversité des images, je suis en train de replonger dans 10 ans de photo-mapping !

Petit tuto pour annoter correctement:

J’ai fait un essai d’entraînement de modèle avec seulement 300 images annotées.
1h20 de calcul environ sur mon petit GPU (GTX1060).

Les résultats sont très prometteurs !



Le premier chiffre est la classe de l’objet, le nombre qui suit la confiance dans la détection.

1 « J'aime »

C’est pas mal pour se détendre le soir après le travail (mais sans enfant) :grin:. On avait déjà fait ce genre de travail pour OpenSolarMap pour la détection des pentes de toits.

On doit pouvoir gamifier ça un peu plus…

Voici par exemple ce que détecte le modèle entraîné cette nuit en un peu moins de 4h sur une série d’image complètement nouvelle provenant en partie d’autres smartphones (par exemple un vieil Aquaris) :

Un petite interface pour confirmer les détections permettrait de les ajouter comme nouvelles données d’entraînement. Le problème ce sont les non détections.

Je suis étonné que les visages avec masque soient bien détectés alors qu’il n’y en a quasiment aucun dans les annotations utilisées pour cet entraînement.

On voit que des textes sont en faux positifs pour les plaques, alors qu’il y a moins de FP sur les visages.

Les panneaux

Si j’ai ajouté les panneaux routiers en plus des visages et plaques à flouter, c’est pour pouvoir ensuite faire de la classification, c’est à dire reconnaître de quel type de panneau il s’agit. C’est pour cela qu’il faut les annoter un à un, bien séparément quand ils sont empilés :wink:

Je suis convaincu que les aller-retour crowdsourcing - IA peuvent donner d’excellents résultats.

3 « J'aime »

Il y a un passage après pour dire dans les panneaux que la pancarte de la banque postale n’est pas un panneau ?

Non justement, je ne pense pas qu’il y ait un moyen de déclarer les faux positifs, c’est vraiment en augmentant le nombre d’exemples corrects à l’entraînement qu’on fait converger le modèle.

Je viens d’ajouter un lot de nouvelle images, il y en a donc 500 environ en stock à annoter !

Il me semble que si, via une boucle de rétroaction.

Petite question, dans label-studio, comment je filtre pour avoir les images non encore annotées ?
Dans https://label-studio.cquest.org/projects/2, je vois bien qu’il reste environ 500 images non traitées, mais je n’arrive pas à les voir…
Passer après @gendy54 c’est moins efficace que s’occuper d’images non encore analysées :slight_smile:

Sur le projet, tu cliques sur les 3 points en haut à droite puis sur label.

1 « J'aime »

“Lien d’invitation à demander par message privé” : je n’ai pas accès à cette fonctionnalité (je ne suis probablement pas assez gradé), Christian : peux-tu m’ouvrir cet accès et/ou me donner plus de droits dans ce forum ?

Réponse de sa part (Nicolas Audebert, Computer Vision and Machine Learning researcher) :

Dans l’ensemble vous êtes plutôt sur la bonne piste (usage de Label Studio, pré-annotation avec un modèle déjà entraîné).

Ce qui manque, c’est ce qu’on veut annoter précisément. La question « J’ai un jeune arbre qui cache le centre d’une plaque minéralogique, qu’est-ce que j’annote ? » est légitime mais la réponse n’est pas une réponse de bonne pratique en machine learning, tout dépend de votre cahier des charges. Qu’est-ce qu’on attend du système ? Est-ce qu’on accepte de flouter au-delà de la plaque ?
Si oui, alors peu importe : on trace des rectangles qui entourent la plaque, même derrière une occlusion (c’est de l’annotation « amodale », on annote même ce qu’on ne voit pas).

Si non, alors il faut créer des zones séparées. Mais là on touche aux limites de la détection par rectangles englobants, parce qu’on risque rapidement d’avoir des formes biscornues.

Moi, je privilégierais plutôt une annotation par polygone pour faire de la segmentation (plutôt que la détection). L’inconvénient, c’est que c’est plus long à annoter.

In fine, ce qu’il faudra aussi c’est reboucler pour annoter les faux positifs ou les faux négatifs, histoire d’augmenter la taille du jeu d’entraînement avec de plus en plus de cas difficiles.

Il aura peu-être un peu de dispo fin avril pour en discuter plus précisément.

Je trouve que le floutage fait par Geovisio des silhouettes est bien plus pertinent que le floutage des seuls visages. Il est très facile de reconnaître une personne à partir de ses vêtements ou d’un sac par exemple. Est-ce qu’on pourrait plutôt continuer sur ce choix, qui me semble important ?

Attention également à prendre en compte les personnes dont la peau n’est pas blanche, le floutage fait par GSW est parfois complètement foireux pour ces personnes.

Je pense que c’est un choix à faire par instance et que cela dépend aussi de la pertinence de l’algo et des ressources que ça mobilise.

Du point de vue légal, la CNIL se contente du floutage des visages et plaques d’immatriculation.

L’algo de segmentation est plus ou moins pertinent, j’ai vu des personnes dont le corps est flouté, mais pas le visage ou très partiellement. Le mieux peut ici être l’ennemi du bien !

Pour les ressources, il faut penser “à l’échelle” et je ne suis pas sûr que le calcul soit similaire entre détection d’objets et segmentation… c’est à tester !

Pour cela, il faut de la diversité dans les données d’entraînement.

J’ai repris un paquet de photos datant de 2020-2021 pour avoir des visages avec masque en plus des visages sans. Il va falloir reboucler avec les faux négatifs pour compléter l’entraînement entre autre sur la couleur de peau, mais aussi avec ou sans chapeau, casquette, casque (vélo, moto), etc…

En entraînant notre propre modèle, on peut affiner tout ça contrairement à un modèle prêt à l’usage.

J’ai repéré des données d’entraînement déjà annotées pour les visages que je pense ajouter au prochain entraînement.

On a aussi un paquet de photos de toute la région parisienne, mais je sais pas si @StephaneP a encore la version non floutée.