Comment utiliser les scripts Python pour mettre en ligne des milliers d'images sur Mapillary ?


Si vous mettez 1 caméra sur le toit de votre voiture en lui demandant de prendre 1 image par seconde et que vous roulez pendant 10 heures, vous vous trouvez alors avec 36 000 images à mettre en ligne sur Mapillary ! Dans ce cas, vous constaterez que le "webuploader" Mapillary (l'outil en ligne sur leur site internet) n'est pas la solution la plus simple et la plus rapide pour mettre en ligne vos photos...

La solution idéale dans ce cas est d'utiliser les scripts Python fournis par Mapillary. Le fonctionnement est expliqué en anglais sur leur Github et dans un article de leur blog ainsi que dans une discussion de leur forum (mon préféré pour commencer).

Mais nous allons le faire ci-dessous en français étape par étape, sans avoir besoin d'apprendre le langage Python pour autant. Ce tutoriel explique le fonctionnement pour Windows.


1. Préparer Python


Installer Python 2.7

Avant d'utiliser des scripts Python, il faut avoir installé Python bien évidemment. Attention : nous n'allons pas installer la dernière version de Python (version 3) mais la version 2.7.14 ! En effet, l'un des outils utilisé par les scripts Mapillary n'est pas compatible avec la version 3 de Python.

Pour installer Python :

  • On télécharge le fichier "Windows x86 MSI Installer" (pour un Windows 32 bits) ou "Windows x86-64 MSI Installer" (pour un Windows 64 bits) sur le site internet officiel de Python.
  • Une fois téléchargé, on lance l'installation en double cliquant sur le fichier téléchargé et on suit les instructions à l'écran.

Python 2.7.14 devrait maintenant être installé, par défaut, dans le dossier "C:/Python27".


Télécharger les scripts Python pour Mapillary

Une fois Python installé, il faut récupérer les scripts créés par Mapillary pour la mise en ligne des images :

  • On télécharge le dossier contenant les scripts Mapillary pour Python. Pour ce faire, on clique sur le bouton "Clone or Download" puis "Download ZIP".
  • Une fois téléchargé, on dézippe le dossier "mapillary_tools-master". Dans ce dossier, se trouve un dossier "python" que, par souci de clarté, on va renommer "mapillary". On le copie dans le dossier "C:/Python27/Lib/".


Installer les dépendances

Pour que les scripts de Mapillary fonctionnent, ils vont avoir besoin de quelques outils (gpxpy, exifread, Pillow, python-dateutil). Il faut donc les installer avec un outil qui s'appelle pip qui devrait s'être installé dans le dossier "C:\Python27\Scripts" quand vous avez installé Python. Il va simplement falloir indiquer où se trouve pip. Pour cela, sous Windows, on va modifier la variable d'environnement Path :
  • je recherche "variable d'environnement" et je choisis "Modifier les variables d'environnement système"
  • il faut chercher une variable qui s'appelle donc Path dans la liste proposée, cliquer sur "Modifier" et ajouter à la fin de ce qui est déjà écrit :
;C:\Python27\;C:\Python27\Scripts
(ou juste ;"C:\Python27\Scripts" si logiquement "C:\Python27\" est déjà écrit quelque part). Attention de ne pas oublier le point virgule â?¦

Passons à l'installation à proprement parler :
  • En premier lieu, on ouvre la ligne de commande (qu'on peut trouver en cherchant "cmd.exe").
  • On se place dans le dossier des scripts Mapillary en tapant :
cd C:\Python27\Lib\mapillary

  • On installe gpxpy, exifread, Pillow et python-dateutil en tapant :
pip install -r requirements.txt




2. Définir les variables d'environnement


image Screen_Shot_092017_at_0452_PM.jpg (93.6kB)

Avant de lancer le script Python qui va vous permettre de mettre en ligne vos images, il faut avoir défini 5 variables d'environnement correspondant à votre compte Mapillary. Ces informations vont simplement servir à indiquer quel est le compte Mapillary qui met en ligne des photos. Par exemple, la première s'appelle MAPILLARY_USERNAME et elle prend pour valeur votre nom d'utilisateur Mapillary (paysredon dans mon cas).

Sous Windows, pour créer des variables d'environnement :
  • je recherche "variable d'environnement" et je choisis "Modifier les variables d'environnement pour votre compte".
  • Pour ajouter une nouvelle variable d'environnement, je clique sur le bouton "Nouvelle". Une fenêtre apparaît que je remplis avec MAPILLARY_USERNAME (nom de la variable) et mon nom d'utilisateur (valeur de la variable).

Je répète l'opération pour que soient renseignées les 5 variables d'environnement qui seront utilisées par Mapillary à savoir :
  • MAPILLARY_USERNAME (mon nom d'utilisateur Mapillary)
  • MAPILLARY_PASSWORD (mon mot de passe Mapillary)
  • MAPILLARY_EMAIL (mon adresse mail)
  • MAPILLARY_PERMISSION_HASH ("permission hash" Mapillary)
  • MAPILLARY_SIGNATURE_HASH ("signature hash" Mapillary)

Les valeurs des 2 dernières variables (MAPILLARY_PERMISSION_HASH et MAPILLARY_SIGNATURE_HASH) se trouvent en se connectant à son compte Mapillary.



3. Lancer le script de mise en ligne des images


Une fois que tout ce paramétrage est effectué, nous allons passer à l'utilisation des scripts en eux-mêmes.

Nous allons prendre le cas le plus simple, nous avons des photos rangées dans un dossier qui ont toutes les coordonnées GPS dans les informations attachées à chaque photo (métadonnées EXIF). Imaginons que mes images sont stockées dans un dossier "C:/Mapillary/" :

  • J'ouvre un éditeur de texte (le bloc note ou mieux encore Notepad++)
  • Je tape le texte suivant :
upload_with_preprocessing.py C:/Mapillary/
pause

  • J'enregistre le document créé sous un nom type "upload_mapillary.bat" directement dans le dossier où se trouvent les scripts Python ("C:\Python27\Lib\mapillary" chez moi). Pour lancer le script, rien de plus simple, il suffit de double cliquer sur le fichier "upload_mapillary.bat" dans "C:\Python27\Lib\mapillary".

Le script "upload_with_preprocessing.py" va chercher les images dans le dossier "C:/Mapillary/", et effectuer la série de traitements utiles à Mapillary :
  • 1. Le script groupe les images en "séquences", ces séquences sont une série d'images qui se suivent dans le temps et dans l'espace. Si, entre 2 photos successives, vous avez fait une pause de plus d'1 minute ou que vous avez parcouru plus de 600 mètres, Mapillary créé une nouvelle séquence.
  • 2. Le script interpole l'angle de prise de vue pour chaque séquence, ce qui signifie que quand 2 images se suivent, il va considérer que l'angle de prise de vue suit le sens de la marche.
  • 3. Le script ajoute les tags Mapillary aux images.
  • 4. Le script met et en ligne les images.