SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Wie ich einmal eine Viertelmillion Autos gezählt habe
Ich zähle und erzähle
Stephan Hochhaus
Digital Product Nerd
@codecentric
Stephan Hochhaus
Digital Product Professional am Tag
Computer Vision Enthusiast bei Nacht
Was ich zu erzählen habe
• Wie alles begann
• Computer Vision Basics
• OpenDataCam
• Basics
• Praxis
• Erkenntnisse
• Rahmenbedingungen
• Einsatzszenarien
Wie alles begann
Aber dann…
Computer Vision – Tools
Technik für lange Winterabende
Computer Vision: Was man so braucht
CV Tools: CUDA
GPUs sind für moderne KI-Methoden
um ein Vielfaches effizienter als CPUs.
CUDA ist eine von Nvidia entwickelte
Programmierplattform, mit der Programmteile
durch die GPU verarbeitet werden können.
CV Tools: Darknet
Darknet ist ein Open-Source-Framework für
Neuronale Netzwerke basierend auf C und CUDA.
CV Tools: You only look once
YOLO ist ein Echtzeitsystem
zur Objekterkennung
auf Basis von Darknet.
Wir fokussieren auf YOLOv4.
CV Tools: Common Objects in Context
COCO ist ein Dataset,
das zum Training für 80 Alltagsobjekte
genutzt werden kann.
CV Tools: OpenCV
OpenCV (englische Abk. für Open Computer Vision) ist eine freie
Programmbibliothek mit Algorithmen für Computer Vision.
OpenCV besteht aus Modulen für verschiedene Anwendungsfelder:
• Gesichtserkennung
• Gestenerkennung
• mobile Roboter
• Klassifizierung mit Hilfe der Viola-Jones-Methode
• Segmentierung und Erkennung
• optisches Tracking, Motion Compensation und Optischer Fluss
• Kalman-Filter zum Tracking
• …
Geht das nicht auch einfach?
Sonst könnt ihr ohne mich zählen
Auftritt: OpenDataCam
OpenDataCam – Einfach zählen
Was brauche ich?
Man nehme
• Zählumgebung
• Balkon
• Straße vor dem Küchenfenster*
• Kamera
• USB-Webcam
• IP-Cam
• Videodatei
• Computer
• CUDA-fähige Hardware, z.B. nVidia
Jetson Nano
• CUDA-fähige Cloud-Instanzen*
*dazu später mehr
Blick aus dem Küchenfenster
Hardware und Connectivity
• Logitech Webcam, ca. 70 Euro
• nVidia Jetson Nano, ca. 130 Euro*
• Sorry, no Raspberry
• Autarke Deployments mit PowerBank
• Keine Cloud-Anbindung
• 100% lokal
*oder andere nVidia-Hardware
Unter der Haube
• Linux + Jetpack
• Yolo + Weights
• Node.js
• Mongo DB
OpenDataCam - Praxis
Los geht es!
Installation
• JetPack auf SD-Karte
• docker-compose installieren
• OpenDataCam installieren:
$ wget -N https://raw.githubusercontent.com/opendatacam/
opendatacam/v3.0.2/docker/install-opendatacam.sh
$ bash ./install-opendatacam.sh --platform nano
Et voilà: Live view
Counter
Pathfinder
Counter Data
Zählresultate in csv und json
12,"2021-12-05T13:45:25.245Z",”counter1","car",73,90.97102193107916,"rightleft_bottomtop",88.17329797295241
13,"2021-12-06T09:25:24.090Z",”counter1","bicycle",39241,270,"leftright_topbottom",89.1443199040316
14,"2021-12-07T09:25:40.722Z","counter1","person",39256,282.5288077091515,"leftright_topbottom",76.61551219488008
15,"2021-12-08T09:25:45.719Z","counter1","bus",39265,270,"leftright_topbottom",89.1443199040316
[
{
"frameId":12,
"timestamp":"2021-12-05T13:45:25.245Z",
"area":"d920cd61-23bf-4b92-9d85-dd247297bb3d",
"name":"car",
"id":73,
”bearing":90.97102193107916,
"countingDirection":"rightleft_bottomtop",
"angleWithCountingLine":88.17329797295241
}
]
OpenDataCam - Erkenntnisse
Was ich über Computer Vision gelernt habe
csv trifft Deskriptive Statistik
Nur typische Verkehrsteilnehmer
Tageskurven
Wie genau schaut YOLO hin?
• Jetson Nano mit 8-15fps und einer Auflösung von 416x416
• Relative Größe im Frame spielt eine wesentliche Rolle
• Mehr Power erlaubt mehr fps und mehr Auflösung
• Confidence einstellbar für Tracker/Pathfinder
Genauigkeit optimieren
Genauigkeit optimieren
Zählungenauigkeiten – Teil 2
Geisterobjekte
Auf den Winkel kommt es an
Besser, aber auch nicht optimal
§ Rahmenbedingungen
Wann und wo darf man eigentlich zählen?
Zählen im öffentlichen Raum - Darf man das?
• IANAL – I am not a lawyer!
• Keine Speicherung und lokale
Datenverarbeitung
• https://www.bmvi.de/SharedDo
cs/DE/Artikel/DG/mfund-
projekte/OpenTrafficCount.html
• Stichwort Videoüberwachung
beim https://www.ldi.nrw.de/
Die nächsten Schritte
Einsatzszenarien und Anwendungsfälle
Zählen kann man überall
Oder Sportplätzen
Auch auf Fließbändern
Doch erstmal: Trainieren
Danke fürs Durchhalten.
Und jetzt?
Schnittchen, Kaltgetränke und gerne auch Fragen
Backup Slides
Für die ganz Neugierigen
Weltvermessen mit OpenDataCam - Wie ich einmal eine Viertelmillionen Autos gezählt habe

Weitere ähnliche Inhalte

Ähnlich wie Weltvermessen mit OpenDataCam - Wie ich einmal eine Viertelmillionen Autos gezählt habe

Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)data://disrupted®
 
Raspberry Pi im Embedded Testing - „tool“ oder „toy“?
Raspberry Pi im Embedded Testing - „tool“ oder „toy“?Raspberry Pi im Embedded Testing - „tool“ oder „toy“?
Raspberry Pi im Embedded Testing - „tool“ oder „toy“?Michel Lawaty
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartWerner Keil
 
Kennen sie schon - Important tools for C# developers
Kennen sie schon - Important tools for C# developersKennen sie schon - Important tools for C# developers
Kennen sie schon - Important tools for C# developersFDeitelhoff
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerIngo Reinhart
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
Konzepte für Remote-CAD
Konzepte für Remote-CADKonzepte für Remote-CAD
Konzepte für Remote-CADIntelliact AG
 
Raspberry Pi - Einführung und Beispielprojekte
Raspberry Pi - Einführung und BeispielprojekteRaspberry Pi - Einführung und Beispielprojekte
Raspberry Pi - Einführung und BeispielprojektePeter Eulberg
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDAJörn Dinkla
 
The pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developersThe pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developersFDeitelhoff
 
openstack Übersicht @GPN15
openstack Übersicht @GPN15openstack Übersicht @GPN15
openstack Übersicht @GPN15m1no
 
WTC 2019 – Flutter
WTC 2019 – FlutterWTC 2019 – Flutter
WTC 2019 – Flutterwebconia
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)nwilbert
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT CoreJens Siebert
 
Augmented Reality Workshop
Augmented Reality WorkshopAugmented Reality Workshop
Augmented Reality Workshopargency
 

Ähnlich wie Weltvermessen mit OpenDataCam - Wie ich einmal eine Viertelmillionen Autos gezählt habe (20)

Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
Hochleistungsspeichersysteme für Datenanalyse an der TU Dresden (Michael Kluge)
 
Node.js Security
Node.js SecurityNode.js Security
Node.js Security
 
Raspberry Pi im Embedded Testing - „tool“ oder „toy“?
Raspberry Pi im Embedded Testing - „tool“ oder „toy“?Raspberry Pi im Embedded Testing - „tool“ oder „toy“?
Raspberry Pi im Embedded Testing - „tool“ oder „toy“?
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ Stuttgart
 
Kennen sie schon - Important tools for C# developers
Kennen sie schon - Important tools for C# developersKennen sie schon - Important tools for C# developers
Kennen sie schon - Important tools for C# developers
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-Entwickler
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Konzepte für Remote-CAD
Konzepte für Remote-CADKonzepte für Remote-CAD
Konzepte für Remote-CAD
 
Raspberry Pi - Einführung und Beispielprojekte
Raspberry Pi - Einführung und BeispielprojekteRaspberry Pi - Einführung und Beispielprojekte
Raspberry Pi - Einführung und Beispielprojekte
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
Grundlagen nmap
Grundlagen nmapGrundlagen nmap
Grundlagen nmap
 
GPUs — Vom spezialisierten Coprozessor zum Numbercruncher
GPUs — Vom spezialisierten Coprozessor zum NumbercruncherGPUs — Vom spezialisierten Coprozessor zum Numbercruncher
GPUs — Vom spezialisierten Coprozessor zum Numbercruncher
 
The pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developersThe pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developers
 
openstack Übersicht @GPN15
openstack Übersicht @GPN15openstack Übersicht @GPN15
openstack Übersicht @GPN15
 
WTC 2019 – Flutter
WTC 2019 – FlutterWTC 2019 – Flutter
WTC 2019 – Flutter
 
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
Python in Computational Neuroscience & Modular toolkit for Data Processing (MDP)
 
Wordpress im docker
Wordpress im dockerWordpress im docker
Wordpress im docker
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Windows 10 IoT Core
Windows 10 IoT CoreWindows 10 IoT Core
Windows 10 IoT Core
 
Augmented Reality Workshop
Augmented Reality WorkshopAugmented Reality Workshop
Augmented Reality Workshop
 

Mehr von Stephan Hochhaus

Erfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionieren
Erfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionierenErfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionieren
Erfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionierenStephan Hochhaus
 
Business Value - Stop working for the trash can
Business Value - Stop working for the trash canBusiness Value - Stop working for the trash can
Business Value - Stop working for the trash canStephan Hochhaus
 
Walk of Claim - A Meteor Meetup presentation
Walk of Claim - A Meteor Meetup presentationWalk of Claim - A Meteor Meetup presentation
Walk of Claim - A Meteor Meetup presentationStephan Hochhaus
 
Meteor - not just for rockstars
Meteor - not just for rockstarsMeteor - not just for rockstars
Meteor - not just for rockstarsStephan Hochhaus
 
Writing (Meteor) Code With Style
Writing (Meteor) Code With StyleWriting (Meteor) Code With Style
Writing (Meteor) Code With StyleStephan Hochhaus
 
Introduction to Meteor - revised edition
Introduction to Meteor - revised editionIntroduction to Meteor - revised edition
Introduction to Meteor - revised editionStephan Hochhaus
 
Automatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansibleAutomatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansibleStephan Hochhaus
 
Testing MeteorJS using CasperJS
Testing MeteorJS using CasperJSTesting MeteorJS using CasperJS
Testing MeteorJS using CasperJSStephan Hochhaus
 
LaTeX für Geisteswissenschaftler
LaTeX für GeisteswissenschaftlerLaTeX für Geisteswissenschaftler
LaTeX für GeisteswissenschaftlerStephan Hochhaus
 

Mehr von Stephan Hochhaus (10)

Erfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionieren
Erfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionierenErfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionieren
Erfolgreich trotz Daten - Wie datengetriebene Unternehmen funktionieren
 
Business Value - Stop working for the trash can
Business Value - Stop working for the trash canBusiness Value - Stop working for the trash can
Business Value - Stop working for the trash can
 
Meteor WWNRW Intro
Meteor WWNRW IntroMeteor WWNRW Intro
Meteor WWNRW Intro
 
Walk of Claim - A Meteor Meetup presentation
Walk of Claim - A Meteor Meetup presentationWalk of Claim - A Meteor Meetup presentation
Walk of Claim - A Meteor Meetup presentation
 
Meteor - not just for rockstars
Meteor - not just for rockstarsMeteor - not just for rockstars
Meteor - not just for rockstars
 
Writing (Meteor) Code With Style
Writing (Meteor) Code With StyleWriting (Meteor) Code With Style
Writing (Meteor) Code With Style
 
Introduction to Meteor - revised edition
Introduction to Meteor - revised editionIntroduction to Meteor - revised edition
Introduction to Meteor - revised edition
 
Automatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansibleAutomatisierte infrastruktur mit ansible
Automatisierte infrastruktur mit ansible
 
Testing MeteorJS using CasperJS
Testing MeteorJS using CasperJSTesting MeteorJS using CasperJS
Testing MeteorJS using CasperJS
 
LaTeX für Geisteswissenschaftler
LaTeX für GeisteswissenschaftlerLaTeX für Geisteswissenschaftler
LaTeX für Geisteswissenschaftler
 

Weltvermessen mit OpenDataCam - Wie ich einmal eine Viertelmillionen Autos gezählt habe

Hinweis der Redaktion

  1. aeroplane backpack bear bed bench bicycle bird boat book bottle bus car cat chair clock cow cup diningtable dog donut fire hydrant frisbee horse keyboard kite motorbike mouse oven parking meter person pottedplant refrigerator remote sheep sink skateboard sofa sports ball stop sign suitcase surfboard tennis racket toilet traffic light train truck tvmonitor umbrella vase