Expérimentations du week-end

Comme le sujet de la base de photos de terrain me titille depuis très longtemps (cela fait plus de 10 ans que je prends des photos géoréférencées pour contribuer ensuite à OpenStreetMap), j’ai exploré plusieurs aspect du sujet ces derniers week-end pour voir quels problèmes sont à résoudre et quels outils peuvent être utilisés.

J’ai identifié plusieurs sujets:

  • la collecte (format des images, résolution, metadonnées, fréquence/intervalle)
  • le géoréférencement (précision des GPS intégrés aux smartphones, recalage ou pas, trace GPS plus précise
  • le floutage
  • le catalogage des métadonnées et leur éventuelle augmentation
  • l’accès au catalogue via une API (recherche de photos par position, plage temporelle ou autres métadonnées)
  • le stockage et distribution (centralisé ou distribué, la redondance)

En quelques week-ends, j’ai fait un petit PoC que vous pouvez voir sur

https://umap.openstreetmap.fr/fr/map/poc-libresvues_719826

Capture d’écran du 2022-02-18 19-20-18

Voici une brève description de chaque étape, je rentrerai dans les détails dans un deuxième temps.

Collecte
Les photos récentes sont prises avec un smartphone à 300€ (Redmi Note 10 Pro), avec un GPS courant (mono fréquence). J’ai utilisé l’appli OpenCamera pour prendre les photos en rafale.
Sur certaines séquences, il y a entre 3 et 4 photos pas seconde. Sur d’autres j’ai limité à 2 par seconde maximum, ce qui est suffisant quand on roule à moins de 30km/h en ville.

Les photos plus anciennes (2019) sont prises avec un iPhone 8 et l’appli Mapillary et récupérées avant envoi à Mapillary.

Géoréférencement
Pour les séquences avec plusieurs photos par seconde, le GPS ne donnant une position environ que toutes les secondes, elles ont et recalées par interpolation à l’aide 'un petit script python et exiftool.

Floutage
J’ai utilisé un modèle d’IA qui fait de la segmentation sémantique, entraîné sur des photos du même type (“cityscapes”). Pour accélérer le temps d’analyse, j’ai utilisé un TPU (Tensor Processing Unit) de chez coral.ai, une filiale de Google. Il s’agit d’un circuit spécialisé pour l’inférence, peu coûteux (25$) et très peu énergivore (quelques W).
Ce n’est pas parfait, mais ça permet d’expérimenter.
Ici encore c’est un script python qui traite une photo en la faisant passer dans le modèle puis en générant un masque des zones à flouter et en effectuant ce floutage.

Voici un exemple:

test
Photo originale réduite

test_seg
Segmentation sémantique

test_mask
Masque des zones à flouter (véhicules, personnes)


Résultat flouté

Une autre approche consiste à rechercher spécifiquement visages et plaques d’immatriculation, par exemple avec opencv.

Catalogage
J’utilise exiftool, qui permet de sortir toutes les metadonnées d’un ensemble de photos sous forme de fichier json.

API pour accéder au catalogue
Le catalogue est chargé dans une base postgresql/postgis.
Quelques dizaines de lignes de python permettent d’exposer une microAPI pour interroger la base.

C’est cette API qu’uMap interroge pour obtenir les géométries des séquences et les positions des photos.

Stockage et distribution
C’est un simple serveur web (nginx) qui sert le contenu directement et sans code particulier.

3 « J'aime »

Bonjour Christian,
A ma connaissance, l’une des collectivités (probablement LA collectivité) la plus avancée sur ce sujet, est l’agglo de Montauban, avec Jonathan SIDGWICK, qui dispose déjà de 2200 km de voirie parcourus sur le territoire de l’agglomération, avec plus de 272 000 images versées sur Mapillary. Je vais signaler à Jonathan l’ouverture de ces forums et ce sujet en particulier.
Par ailleurs, dans le numéro 136 de Geomatique Expert (nov-déc 2021), Jonathan a très bien décrit son projet au service de sa collectivité.
Amicalement
Bruno

2 « J'aime »

Il y a aussi Redon, qui a monté des caméras sur ses bennes à ordure dans le même but.

J’adore cette approche “hack”… pas un litre de carburant de plus consommé pour collecter ces images.
Un procédé à généraliser !

J’ouvre un sujet en mode wiki pour lister ces fonds: Les fonds d'images existants (wiki)

1 « J'aime »