Mapillary

Ze hebben rare prioriteiten bij mly. Eerst de smartphone UI om zeep helpen. Dan bolcamera’s en dan actioncamera’s. Ik probeer ook op verschillende systemen manueel up te loaden. Er is geen lijn in te trekken wat beter gaat. Dat het traag is, is geen probleem. Wel vervelend wordt het als het geheugen van Chrome vol geraakt. Gelukkig heb ik tijd. Maar grote sequenties met goede photo’s zullen dus niet voor deze zomer zijn. Zo krijg ik een slechte naam.

Ik gebruik altijd ‘upload.py’ en 1000den foto’s uploaden gaat altijd zonder problemen op de maximale snelheid van m’n verbinding. Meestal upload ik 3000 tot 6000 per keer.
Als je upload.py gebruikt moet je wel eerst zelf de mapillary exif tags toevoegen met ‘add_mapillary_tag_from_exif.py’

Hi PeeWee32, ik (micmin1972 op mapillary) heb een magere internetverbinding met een upload snelheid van 2 a 3 Mbps en eigenlijk gaat het uploaden met python best foutloos. Wel heb ik het aantal parallele upload-threads als environmental variable op 1 gezet omdat het anders vastliep bij mijn beperkte upload capaciteit. Standaard staat die op 4 threads dus probeer die eens te halveren.

Heren , dank voor het meedenken. Ik heb van Katrin (Mapillary) wat tips gekregen en dat lijkt goed te werken.

Advies was om met

python upload_with_preprocessing.py --remove_duplicates --cutoff_time 150 --duplicate_distance 5 --interpolate_directions --auto_done /path/to/files/right/

te werken.

Op deze site staat hier meer over vermeld.
Als ik het goed begrijp kun je dan al je foto’s met geo coordinaten uploaden en worden alle duplicaten verwijderd en de richting vastgesteld obv de volgorde van de foto’s. Duplicaten worden dan gezien als foto’s die (in dit geval) minder dan 5m uit elkaar liggen. De cutoff_time wordt gebruikt om losse sequences te maken als de tijd tussen fotos meer dan 150 seconden is (in dit geval). Omdat ik mijn fotos middels een gpx track en het programma fotogeotag van benodigde exif tags voorzie hoef ik de --interpolate direction niet te gebruiken. Die heb ik dan ook weggelaten. De auto_done zorgt er voor dat je op het eind geen vraag meer krijgt waar je y of n op moet antwoorden. Het wordt dan dus een automatisch y.

Ik werk met Windows10 en heb nu mijn batch file aangepast en dat ziet er als volgt uit:


@echo off
cd /d %~dp0

echo type de directory met de te uploaden bestanden, bijvoorbeeld: E:\DCIM\100_VIRB\ 
set /p input=

C:\Python27\Scripts\pip install exifread

set MAPILLARY_PERMISSION_HASH=xxxxxx
set MAPILLARY_SIGNATURE_HASH=xxxxxx
set MAPILLARY_USERNAME=peewee32
set MAPILLARY_PASSWORD=xxxxxxx
set MAPILLARY_EMAIL=xxxxxxxx

C:\Python27\python upload_with_preprocessing.py --remove_duplicates --cutoff_time 150 --duplicate_distance 5  --auto_done  %input%

pause

In de code van Katrin stond ook nog “/path/to/files/right/”. Dat levert in mijn batch file problemen op en heb ik nu weggelaten. Geen idee wat het doet en of het erg is. Ik vermoed dat het niet erg is want het script lijkt goed te werken ook met duizenden foto’s tegelijk.

Als ik met mijn roestige ict kennis kijk, gebruik je die “/path/to/files/right/” wel :slight_smile: Dat is volgens mij gewoon het pad naar de bestanden, wat bij jou %input% is.

Oh … heel goed. Bedankt. Weer wat geleerd. Dan hoef ik me in ieder geval geen zorgen te maken dat er daar wat fout gaat.

Ik zag op de mapilllary github dit script. Ik heb het idee dat ik dat kan gebruiken ipv de fotogeotag waarmee ik nu locatie en richting aan de EXIF van de foto’s toe voeg. Als dat zo is kan ik misschien wel met 1 opdracht alles uitvoeren. (geocoderen en uploaden) . Heeft iemand hier ervaring mee?

Bedankt voor je scripts Peewee, fotogeotaggen en uploaden gaat nu helemaal automatisch (mits je de camera gelijkzet met de GPS tijd). Fotogeotaggen is nu gedaan met de command-line versie van exiftool, de kijkrichting met het interpolate_direction python script van Mapillary.


exiftool -P -overwrite_original -geotag track.gpx -geosync=0 folder
python interpolate_direction.py folder 0

De omgevingsvariabelen als set MAPILLARY_PERMISSION_HASH etc hoef je maar eenmalig in te stellen (kan ook handmatig in je windows system instellingen) en kan je ook uit de batch file weglaten, het commando pip install exifread hoeft ook maar één keer. Bij je upload heb je --duplicate_distance 5 staan, ik vraag me af of dat niet teveel meters zijn. Ik fiets soms een weg heen en dan weer terug. De foto’s liggen dan minder dan 1 meter van elkaar, maar de kijkrichting is anders.

Graag gedaan. Jij ook bedankt voor je feedback. Ook ik heb de boel nu zo goed als volledig geautomatiseerd. Die script zorgen (afhankelijk van welke camera ik gebruik) voor aanmaken mappen en submapen op mijn PC, kopieën vanaf SD kaart (cardreader) naar PC , hernoemen foto’s , verplaatsen van submap naar hoofdmap, geolocatie toevoegen en kijkrichting toevoegen.

Omdat ik vaak fiets met 3 camera’s (1 kijkt vooruit, 1 achteruit en een 360 graden camera) heb ik nu per camera een apart script voor de prepocessing. Het script moet het volgende regelen:
1 aanmaken map en submap op mijn PC waar de foto’s komen vanaf SD kaart heen gekopieerd moeten worden
2 kopieren van SD naar deze submap
3 Namen van foto’s aanpassen:
Mijn Xioami Yi’s geeft alle foto’s een oplopend nummer met een max van 1000 nummers. Als ik daar overheen ga maakt ie weer een nieuw mapje aan en begint de naamgeving weer opnieuw. Als je 5 mapjes hebt (bv 5000 foto’s gemaakt) dan heb je 5 fotos met nummer 1 in de naam. Das niet handig want ik wilde eigenlijk alle foto’s van een dag in 1 map. Ik heb het opgelost door met de commandline versie van Bulk Rename Utility de namen te laten prefixen met de naam van de map waar ze in staan.
4 Verplaatsen fotos naar 1 map hoger zodat ze per dag /camera allemaal in 1 map komen
5 Geotaggen van de foto’s (Doe ik ook met exiftool commandline)
6 Toevoegen van de kijkrichting (Doe ik ook met dat python script)

Als ik het script start hoef ik alleen maar het aantal seconden verschil tussen GPX en de camera in te geven en dan gaat de rest van zelf. Nadat het script gedraaid heeft kijk ik met JOSM of alles er goed uitziet en verwijder ik evt. nog foto’s die niet bedoeld zijn om te uploaden. Daarna draai ik dat upload script. Dat gaat meestal in 1x goed maar soms blijft ie hangen (er gebeurt dan niets meer in mijn commandline venster). Dan sluit ik dat venster en start het upload script opnieuw. Die gaat dan verder waar ie gebleven is.

Ik weet niet precies hoe dat werkt maar ik ging er van uit dat er alleen foto’s verwijderd worden als er tussen 2 opeenvolgende foto’s minder dan 5 meter zit. Dus als je een half uur later weer op een plek komt waar je al geweest bent houd ie daar geen rekening. Of dat zo is zal ik wellicht snel weten want ik upload nu zo’n geval. Kijken wat ie doet :slight_smile:

Het gaat idd om opeenvolgende foto’s, default is 0m dus als je stilstaat gooit die de foto’s weg, althans, ze worden wel bewaard in een apart mapje zodat je ze later alsnog kan uploaden. Bv als het om een panorama foto gaat?
De optie --cutoff_distance (default=600,maximum gps distance in meters within a sequence) is misschien ook interessant ipv --cutoff_time (default=60, time interval in seconds within a sequence). Als je pauzeert en de foto’s na de pauze in dezelfde sequentie wilt houden.

Ik ben ook blij met deze methode van uploaden. Nu de foto’s van ongeveer de zelfde locatie worden verwijderd wordt het ook wat makkelijker een timelapse filmpje te maken.
Ik had de cutoff time op 650 seconden staan maar ik bleek toch iets langer dan 10 minuten te hebben gepauzeerd dus nu zijn het 2 sequences geworden. Ik ga nog eens verder experimenteren.

Voor de borden liefhebbers heeft mapillary (ik weet niet hoe lang dit al was, maar het viel me ineens op) een mogelijkheid om de verkeersborden te laten oplichten in JOSM

Je kunt deze layer ook uitzetten om de foto te controleren op juistheid.
Deze optie zit iets verborgen. In het menu “windows” zit de mapillary functie “image info”

Hier kwam ik nog een handigheidje tegen. De functie “Add Mapillary tag” om een tag toe te voegen aan het geselecteerde object.

Onderstaand een voorbeeld:
Een foto van een tankstation die goed in beeld komt koppelen aan de node.
De node krijg (als deze geselecteerd is) een extra tag “mapillary=hN9_Y7KGgY3asEn1WyxSVw”
Als je deze tag dan selecteerd, kun je middels de rechtermuis knop rechtstreeks naar je browser om de foto te zien.
(Natuurlijk kunnen kaartmakers ook van deze functie gebruik maken om een koppeling naar een foto te verkrijgen via Mapillary beelden.)

Ik stuit hier wel een een bugje van mapillary of JOSM (wie de oorzaak weet mag het zeggen)
Namelijk de toevoeging wordt niet gezien als wijziging en het upload venster geeft aan dat er geen wijzigingen te uploaden zijn.
Daarom heb ik voor het gemak een note toegevoegd om het toch te kunnen uploaden.

Ik heb een YouTube filmpje gemaakt om het nog visueler te maken.

Weet iemand een gebied met veel Mapillary foto’s maar nog veel te weinig osm data, met name wegen? Nederland is al zo goed gevuld, zoek een plek om lekker weggetjes te tekenen. Ik kwam laatst in Kenia uit, maar misschien weet iemand een specifiek gebied om aan te werken.

In Kazachstan heb je prima Bing foto’s en veel dorpen waar er nog geen wegen zijn.

Pak een willekeurige nieuwbouwwijk in een streek waar weinig mappers actief zijn en je kan je lol op ahv de 2016 luchtfoto’s. Er is in Nederland nog zat te doen!

http://tasks.hotosm.org/?sort_by=priority&direction=asc&search=roads

Ik heb inmiddels eens paar timelapse filmpjes gemaakt en heb vervolgens geprobeerd of dat ook met 360 graden beelden lukt. Dat werkt dus ook. Hier een voorbeeld. Het grappige (vind ik althans) is dat als je deze bekijkt met een (moderne) smartphone middels de youtube app je door je telefoon te bewegen alle kanten op kunt kijken. Ik vermoed wel dat je telefoon een gyroscoop moet hebben. Op je tablet/PC kun je door met je muis in het beeld te schuiven alle kanten op kijken.

Zag er leuk uit, meteen ook geprobeerd met de aldaar genoemde software Blender. Zie mijn eerste test upload hier Alleen… de 360 dimensie heb ik NIET? Moet ik nog wat instellen om de exifdata te behouden zodat het gegenereerde videobestand als 360 wordt herkend?

Ja klopt…Je moet nog "meta data injecteren (stap2) " in het bestand. Nadat dat gedaan is kun je het ook goed afpelen in je LG software en uploaden naar youtube.

Ok, het werkt nu met de genoemde injectie tool (resultaat https://youtu.be/VYjJ-VX-MQ8 ). Moest overigens eerst wel zorgen voor een .mov bestand anders lukte het niet met de injectietool. Herinnering voor mezelf (en anderen om een .mov in blender te genereren:

in Blender Under output set to MPEG.
Under encoding, Format set to Quicktime and Codec set to H.264 

)

Wel jammer dat het beeld in de 360 cam video niet zo scherp is als het ruwe bestand maar ik zie dat jij dat ook hebt.

Bij mij werkt het ook met MP4 bestanden. Ik gebruik geen .mov. Ik kan je wel mijn .blend bestand sturen zodat je kan zien wat mijn instellingen zijn. Ik ben ook nog niet helemaal tevreden met de kwaliteit omdat de losse foto’s gewoon beter zijn dan wat er in de film te zien is. Ik heb het vermoeden dat het beter moet kunnen maar weet nog even niet hoe ik dat voor elkaar kan krijgen.