Mapping mit Dashcams

Ich habe hier auch einen echten Brief von 2009 von einem Forstamt in dem man mir mit “Prüfung” gedroht wurde.
http://i.imgur.com/EpwDj0K.png

GEO-Catching :smiley:

Das muß so ein neuer Trend sein - muß ich unbedingt auch mal versuchen.

Auf Seiten der Executive heißt das “geo-bashing” :smiley:

Das aktuelle, nicht rechtskräftige Dashcam-Urteil des VGH in Ansbach/Bayern sagt

Inzwischen bin ich mit den vom Raspberry Pi gemachten Bildern ganz zufrieden - so sieht das Ergebnis aus:
http://www.mapillary.com/profile/mhohmann
Zum automatischen Aufnehmen habe ich einen kleinen Python-Skript gebastelt:
http://wiki.openstreetmap.org/wiki/User:MHohmann/RPiCam

Hast du die Möglichkeit die Videos bei Amazon S3 hochzuladen? Hier am Fachbereich geht das mit ca. 10 MB/s, das ist ganz praktikabel.

Videos habe ich derzeit nicht, sondern Foto-Sequenzen mit einem Abstand von einer Sekunde zwischen zwei Photos (die ich aber natürlich per Software zu einer Videodatei konvertieren könnte, falls das von Vorteil ist). Ich habe mal einen Blick auf Amazon S3 geworfen, so weit ich das sehe sind da bis 5GB Speicher kostenlos? Meine Daten sind da etwas größer, eine Fahrt von Tartu nach Tallinn hat um die 17GB, man könnte es also erst einmal mit einem kleineren Teil versuchen. Registriert habe ich mich dort noch nicht - falls möglich würde ich es erst einmal lokal auf meinem Rechner testen (oder einem der GPU-Uni-Rechner), wenn die Installation von OpenCV nicht zu aufwändig ist. Ubuntu 14.04 hat OpenCV 2.4.8 in den Repositories, ich habe mich schon mal ein wenig in die Dokumentation eingelesen.

Upload-Speed wäre kein Problem, von zu Hause kann ich mit 5MB/s hochladen, vom Institut ungefähr 40-60MB/s (Gigabit-Anbindung).

Fotos sind prinzipiell kein Problem. Was die Performance betrifft wird das sogar deutlich schneller werden. Ich analysiere derzeit lediglich jedes Frame, weil die Schilder bei hohen Geschwindigkeiten nur sehr kurz gut zu erkennen sind. Das liegt aber am großen Bildwinkel der Dashcam. Ich überlege mir eine GoPro Hero 3+ silver oder black zu kaufen, da kann man den Bildwinkel verstellen und sie kann 2-10 Bilder/s aufnehmen. Aber das nur am Rande.

Wie schwer es ist meinen Code bei dir zum Laufen zu bringen, kann ihr ehrlich gesagt nicht einschätzen. Ich habe mich für OpenCV 3 entschieden und kompiliere aus git selbst. Weißt du, ob die Pakete aus dem Repository CUDA unterstützen? CUDA ist leider proprietär. Wie groß die Unterschiede zwischen den beiden OpenCV-Versionen sind, weiß ich auch nicht. Die “Anwendung” selbst ist eine Mischung aus Python und C++. Mit Python hatte ich angefangen, da funktioniert aber das CUDA nicht, dafür gibt es eine Bibliothek für die Dienste von Amazon. Mit C++ mache ich nur noch die Klassifizierung.

Für deine Daten kannst du aber auch einfach meinen S3-Bucket mitnutzen. Ich benutze das “Reduced Redundancy Storage”, das kostet 2 Euro pro 100 GB im Monat. Das ist wirklich kein Problem. Ich habe schon knapp 150 GB an Daten.

Ich werde mich am Wochenende mit einer Freundin um eine Oberfläche für die Auswertung und das Training des Klassifizierers kümmern. Ich hoffe ihr seid gespannt.

Gut, in Sachen Bildwinkel ist der bei der RPi-Cam eigentlich recht brauchbar, um auch bei einem Bild pro Sekunde und einer Autobahnfahrt noch 1-3 gute Bilder zu bekommen, auf denen man ein Verkehrsschild gut erkennen kann, zumindest manuell. Wie gut es OpenCV dann erkennt, werden wir sehen. Ich hatte dieses Aufnahmeintervall vor allem deshalb drin, weil die GPS-Positionen von gpsd im gleichen Takt kommen, so muss ich nicht interpolieren.

Die OpenCV-Pakete aus dem Ubuntu-Repository haben ein Paket libopencv-gpu2.4 dabei - ich nehme mal an, dass das der Teil der Bibliothek ist, der CUDA nutzt. Ausprobiert habe ich es allerdings noch nicht. Bisher habe ich CUDA (und OpenCL) nur für selbst programmierten GPU-Code benutzt, aber noch keine fertigen GPU-beschleunigten Bibliotheken.

Auf die Ergebnisse des Wochenendes bin ich tatsächlich schon gespannt :slight_smile: Wenn ich die Dokumentation richtig verstanden habe, braucht man zum Training einen Haufen Bilder (typische Fotos) ohne Verkehrsschilder sowie ein Bild (Zeichnung) von jedem Verkehrsschild, dass man erkennen will. Zum Training selbst erzeugt die Software dann positiv-Bilder, indem jedes Verkehrsschild in mehr oder weniger gedrehter oder verzerrter Weise in einen Hintergrund ohne Verkehrsschild eingebaut wird, und lässt dann den Classifier darauf los. Stimmt das so weit?

Also OpenCV wirst du dir wahrscheinlich selbst kompilieren müssen. Das Paket hat vermutlich keine volle Funktion:

WITH_CUDA=OFF
http://anonscm.debian.org/cgit/debian-science/packages/opencv.git/tree/debian/rules

To enable CUDA support, configure OpenCV using CMake with WITH_CUDA=ON . When the flag is set and if CUDA is installed, the full-featured OpenCV GPU module is built.
http://docs.opencv.org/modules/gpu/doc/introduction.html

Den Classifier habe ich direkt mit Samples trainiert. Das Freistellen wäre mehr Arbeit gewesen als einfach mehr Schilder zu markieren. Eine Webapp, mit der man das im Browser machen kann ist in Arbeit. Das generieren von Positiv-Samples ist für den Fall gedacht, in dem man beispielsweise nur ein Logo hat, das man in vielen (unbekannten) Aufnahmen erkennen möchte.

Na gut, dann muss ich OpenCV wohl doch selbst kompilieren - das sollte ja auch kein größeres Problem sein. Das werde ich die Tage mal in Angriff nehmen. Seltsam ist es schon irgendwie, dass es ein GPU-Package im Repository gibt, das aber mit WITH_CUDA=OFF kompiliert ist - da erschließt sich mir der Sinn dieses Paketes nicht ganz.

Klar, wenn man genug Fotos als Positiv-Samples hat, ist das natürlich kein Problem, die auch zum Training zu nehmen. Ich hatte mir gedacht, dass ein Verkehrsschildes ja im Wesentlichen das gleiche ist wie ein Logo, und dass man einfach eine Zeichnung des Schildes als Eingabedatei nehmen kann, statt das Schild aus einem Foto freizustellen. Ich kann ja mal beides versuchen und schauen, was davon besser läuft.

Gibt es noch andere Erfahrung mit Dashcams? Ich überlege mir nämlich wegen eines anderen Problems so ein Ding zuzulegen und weiß noch nicht genau, auf was es da bei OSM ankommt. Eben war ich im Laden (Conrad) und habe mir einige angeschaut. Erstaunt war ich, dass man nur Laufzeiten von bis zu 5 Minuten einstellen konnte. Das wäre schon mal nix für unsere Zwecke.

Ich kann jetzt nur raten, was du mit Laufzeit meinst. Zwei Dinge kommen mir da in den Sinn:

  1. Dauer der Aufnahmesegmente. Dashcams speichern die Daten in Form von Videodateien in einer definierten Länge (Zeit) ab. Diese kann in der Regel zwischen 1-5min vorgewählt werden. Die Segmente können später mit einer enstprechenden Software (z.B. RegistratorViewer) nahtlos aneinandergereiht werden.

  2. Die Akkulaufzeit. Dashcams haben in der Regel eine ziemlich begrenzte Laufzeit, weil sie ohnehin an der Bordspannung des Fahrzeugs hängen. Der Akku reicht in der Regel nur um offline Menüeinstellungen vorzunehmen oder ein Beweisfoto zu schießen. So weit ich weiß kann man aber 12V-Zusatzakkus nutzen um die “Laufzeit” zu erhöhen.

Das zugrundeliegende Konzept der Dashcams erklärt Techmoan hier:
https://www.youtube.com/watch?v=HQ0Tm9FFpKM
(Und ja, die 5min/3min-Segmente sind überaus sinnvoll.)

Angesagt ist derzeit die “Mini-0803”. Für OSM würde ich ein etwas tele-lastigeres M12-Objektiv draufschrauben.
https://dashcamtalk.com/mini-0803/
Gibt noch ein geringfügig verbessertes Modell, welches als “Mini-805” angeboten wird, da sitzt dann ein Ambarella A7LA70D drin statt eines A7LA50D, der Sensor bleibt ein Aptina AR0330.

Alternative wäre noch die “Dual”-Kamera CVR-A7620. Aber ehrlich gesagt, ist es meist einfacher, zwei einzelne Kameras zu verkabeln ins Heck (Strom z.B. aus den Heckleuchten, seit “Taglicht-Fahrgebot” hat man ja ja sowieso ständig “Licht an”)

Ach ja, warum auch nach hinten: Weil man sich dann in vielen Orten einen zweiten Besuch sparen kann, wenn man die Schilder auch gleich aus dem Heck sehen kann. Gerade Straßenschilder an Einmündungen werden gern “von vorn” von irgendwelchen anderen Sachen verdeckt, von hinten ist jedoch nichts, da auf der Fahrbahn schlecht Bäume stehen oder Leuchtreklame blenden kann.

Ja, das mit der Laufzeit habe ich zwischenzeitlich auch kapiert. Wenn es Software gibt, die die Schnipsel einfach wieder zusammenfassen, macht das ja nichts aus. Es gibt aber auch Cams, die wahlweise solange speichern, bis die Karte voll ist.
Die Mini-0803 hatte ich noch nicht im Visier, die ist ja wirklich klein (die großen Halterungen mit Saugnapf fand ich schon immer unnötig. Nachteil wäre hier, dass das GPS wohl nicht ganz so zuverlässig ist, wie man so liest, und für’s Fahrrad müsste man sich einen zweiten Halter kaufen, weil das GPS da drin ist.
Hatte bisher das a-rival Car Cam im Blick, aber da ist das GPS im Kabel, was noch doofer für’s Fahrrad ist.

Für’s Fahrrad brauchst Du eine komplett andere Kamera.
Merke: Unter einer besseren Gopro wird’s nicht gehen. Und auch da sind die Bilder eigentlich nur wegen des Weitwinkels scharf.

In Wirklichkeit brauchst Du etwas mit mechanischer Stabilisierung. Wetterfest… Du wirst aneiner Panasonic-Outdoor (DMC FT5) nicht vorbekommen. Plus ein Garmin Etrex mit SD-Karte.
(Du kannst natürlich auch eine andere Marke versuchen. Ich bin nicht markentreu… habe auch Olympus Tough und Nikon AW110… FT5 führt nach wie vor unter miesen Verhältnissen.)

Ne, mit dem Fahrrad ist nur als Spielerei gedacht. Da habe ich meinen rechten Arm und mein Smartphone als Steadycam-Erssatz.

Hoffentlich nur im Stehen …

Kürzlich ging doch wieder etwas bzgl. fest installierter, privater Überwachungskameras durch die Medien. Man muss den Bereich außerhalb des eigenen Grundstücks schon bei der Aufnahme auspixeln und - jetzt kommt der Hammer - es sind sogar Kameraattrappen ohne Hinweis verboten, da diese das Persönlichkeitsrecht einschränken.