Skip to content

Technik Blog

IoT, Smart Home & Mikrocontroller einfach erklärt

Menu
  • Smarthome
  • Gartenautomation
  • Mikrocontroller
    • Arduino
    • ESP32 & Co.
    • Calliope Mini
    • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
Menu

Bilderkennung mit der Shelly Camera: Objekte mit YOLO erkennen

Veröffentlicht am 21. September 202620. September 2026 von Stefan Draeger

Die Shelly Camera habe ich auf diesem Blog bereits vorgestellt. Nun möchte ich die Kamera für ein erstes praktisches Projekt nutzen und einen Snapshot automatisch auswerten lassen.

Dafür setze ich auf YOLO und ein bereits vortrainiertes Modell. Dieses erkennt viele alltägliche Objekte direkt, sodass der Einstieg in die Bilderkennung besonders unkompliziert ist.

Objekterkennung mit YOLO: ESP32-CAM + Python + Node-RED lokal
Dieses Video auf YouTube ansehen.

Hinweis: Die in diesem Beitrag verwendete Shelly Camera habe ich selbst gekauft. Der Beitrag ist nicht gesponsert. Das gezeigte Prinzip ist außerdem nicht auf die Shelly Camera beschränkt – auch Kameras wie die ESP32-CAM lassen sich dafür verwenden. Darauf gehe ich später im Beitrag und im zugehörigen YouTube-Video noch genauer ein.

Bild mit Markierungen für gefundene Objekte von YOLO
Bild mit Markierungen für gefundene Objekte von YOLO
Erkannte Objekte mit dem Modell yolo26n
Erkannte Objekte mit dem Modell yolo26n
Bild mit Markierungen für die erkannten Objekte
Bild mit Markierungen für die erkannten Objekte

Inhaltsverzeichnis

  • Mein Testsystem – Dell OptiPlex 3050 Micro
    • Keine NVIDIA-Grafikkarte erforderlich
  • YOLO unter Fedora installieren
    • YOLO automatisch per Shell-Skript einrichten
  • Snapshot der Shelly Camera herunterladen
  • Ersten Snapshot mit YOLO analysieren
    • Wie gut unterscheidet YOLO ähnliche Objekte?
  • Vergleich mit bekannten Objektklassen
    • ESP32-CAM als alternative Bildquelle
    • Objekterkennung mit der ESP32-CAM testen
  • YOLO-Ergebnis in Node-RED weiterverarbeiten
  • Fazit und Ausblick

Mein Testsystem – Dell OptiPlex 3050 Micro

Für die Bilderkennung nutze ich einen Dell OptiPlex 3050 Micro mit Fedora Linux und 16 GB Arbeitsspeicher. Der kompakte Rechner dient bei mir als lokales Testsystem und übernimmt später die Auswertung der Snapshots der Shelly Camera.

Damit die verwendete Hardware nachvollziehbar ist, habe ich ein kleines Bash-Skript erstellt. Dieses gibt die wichtigsten Systeminformationen zu CPU, RAM und Datenträger übersichtlich im Terminal aus.

DELL Optiplex 3050 Micro
DELL Optiplex 3050 Micro

Das Skript kannst du hier herunterladen:

systeminfo.shShell-Skript zur Systemübersicht herunterladen

Nach dem Start erhältst du eine kompakte Ausgabe der wichtigsten Hardwaredaten.

Systeminfos zum Dell Optiplex 3050 Micro
Systeminfos zum Dell Optiplex 3050 Micro

Keine NVIDIA-Grafikkarte erforderlich

Für dieses Projekt ist keine NVIDIA-Grafikkarte notwendig. Die Objekterkennung mit YOLO kann vollständig über die CPU ausgeführt werden.

Da in diesem Projekt einzelne Snapshots der Shelly Camera analysiert werden, reicht die Leistung des Dell OptiPlex 3050 Micro dafür aus. Eine dedizierte GPU wird vor allem dann interessant, wenn große Modelle, viele Bilder pro Sekunde oder komplette Videostreams in Echtzeit verarbeitet werden sollen.

Für den Einstieg in die lokale Bilderkennung genügt daher ein normaler Linux-PC mit ausreichend Arbeitsspeicher und einer aktuellen CPU.

YOLO unter Fedora installieren

Für die Objekterkennung verwende ich Ultralytics YOLO. Damit die benötigten Python-Pakete sauber vom restlichen System getrennt bleiben, erstelle ich zunächst eine virtuelle Python-Umgebung.

Zuerst prüfen wir, ob Python verfügbar ist:

python3 --version
ausgeben der Python Version auf der Konsole
ausgeben der Python Version auf der Konsole

Anschließend erstelle ich einen neuen Projektordner:

mkdir shelly-camera-yolo
cd shelly-camera-yolo
anlegen des Projektverzeichnisses
anlegen des Projektverzeichnisses

Jetzt wird die virtuelle Umgebung angelegt:

python3 -m venv .venv

und aktiviert:

source .venv/bin/activate

Im Terminal sollte nun vor der Eingabeaufforderung (.venv) erscheinen.

virtuelle Umgebung für Python erstellen und aktivieren
virtuelle Umgebung für Python erstellen und aktivieren

Als Nächstes aktualisiere ich pip:

python -m pip install --upgrade pip
installieren von pip
installieren von pip

Danach kann Ultralytics installiert werden:

pip install -U ultralytics

Ultralytics installiert dabei auch die benötigten Abhängigkeiten wie PyTorch. Für die aktuellen YOLO-Versionen wird mindestens Python 3.8 vorausgesetzt.

Ob die Installation funktioniert hat, lässt sich anschließend einfach prüfen:

yolo checks
Ausgabe von yolo checks
Ausgabe von yolo checks

Damit ist die grundlegende Umgebung für unsere Objekterkennung eingerichtet.

YOLO automatisch per Shell-Skript einrichten

Wer die einzelnen Installationsschritte nicht manuell ausführen möchte, kann die Einrichtung auch mit einem kleinen Shell-Skript erledigen. Das Skript legt den Projektordner an, erstellt die virtuelle Python-Umgebung, aktualisiert pip, installiert Ultralytics und führt anschließend yolo checks aus.

Zusätzlich wird direkt das Verzeichnis images für die späteren Snapshots angelegt.

Das Skript kannst du hier verwenden:

Shelly Script zum installieren von YOLOsetup_yolo.sh herunterladen

Damit die virtuelle Python-Umgebung nach der Ausführung im aktuellen Terminal aktiv bleibt, sollte das Skript mit source gestartet werden:

source ./setup_yolo.sh

Alternativ vorher ausführbar machen:

chmod +x setup_yolo.sh

Snapshot der Shelly Camera herunterladen

Bevor wir mit der eigentlichen Objekterkennung starten, laden wir zunächst einen aktuellen Snapshot der Shelly Camera herunter.

Dafür lege ich im Projektverzeichnis einen Ordner für die Bilder an:

mkdir images

Anschließend erstelle ich die Datei:

nano download_snapshot.py

mit folgendem Inhalt:

Python-Skript zum laden eines Snapshots von der Shelly Camera
import requests

SNAPSHOT_URL = "http://192.168.178.78/camera/0/snapshot"
OUTPUT_FILE = "images/shelly-camera.jpg"

response = requests.get(SNAPSHOT_URL, timeout=10)
response.raise_for_status()

with open(OUTPUT_FILE, "wb") as file:
    file.write(response.content)

print(f"Snapshot gespeichert: {OUTPUT_FILE}")
Python-Skript zum laden eines Snapshots der Shelly Kamera
Python-Skript zum laden eines Snapshots der Shelly Kamera

Das Skript wird anschließend gestartet mit:

python download_snapshot.py

Wenn der Abruf erfolgreich war, sollte folgende Ausgabe erscheinen:

Snapshot gespeichert: images/shelly-camera.jpg

Das Bild befindet sich nun unter:

images/shelly-camera.jpg
laden eines Snapshots von der Shelly Kamera via Python Skript
laden eines Snapshots von der Shelly Kamera via Python Skript

und kann im nächsten Schritt von YOLO analysiert werden.

Ersten Snapshot mit YOLO analysieren

Nachdem der Snapshot der Shelly Camera gespeichert wurde, können wir das Bild nun erstmals mit YOLO analysieren.

Dafür verwende ich das vortrainierte Modell yolo26n.pt:

yolo predict model=yolo26n.pt source=images/shelly-camera.jpg

Beim ersten Start wird das benötigte Modell automatisch heruntergeladen. Anschließend analysiert YOLO das Bild und sucht nach bekannten Objekten.

Ausgabe der gefundenen Objekte auf der Konsole
Ausgabe der gefundenen Objekte auf der Konsole

Zusätzlich erstellt YOLO ein Bild, in dem erkannte Objekte mit einem Rahmen und der jeweiligen Klasse markiert werden.

Das Ergebnis wird standardmäßig unter folgendem Verzeichnis gespeichert:

runs/detect/predict/

Dort befindet sich anschließend auch der analysierte Snapshot der Shelly Camera.

Ausgangsbild für Objekterkennung mit YOLO
Ausgangsbild für Objekterkennung mit YOLO
Bild mit Markierungen für gefundene Objekte von YOLO
Bild mit Markierungen für gefundene Objekte von YOLO

Für unseren ersten Test reicht bereits dieser einzelne Befehl aus. Im nächsten Schritt können wir die Erkennung per Python ausführen und die gefundenen Objekte gezielt weiterverarbeiten.

Wie gut unterscheidet YOLO ähnliche Objekte?

Um zu testen, wie gut das vortrainierte Modell ähnliche Objekte voneinander unterscheiden kann, habe ich eine Mandarine, einen Kürbis und einen Apfel vor der Shelly Camera platziert.

Mein Ziel war dabei nicht nur zu prüfen, ob überhaupt Objekte erkannt werden, sondern wie sauber YOLO zwischen ähnlich geformten und farblich verwandten Gegenständen unterscheidet.

Ausgangsbild mit drei Objekten Mandarine Kürbis Apfel
Ausgangsbild mit drei Objekten Mandarine Kürbis Apfel
Bild mit Markierungen für die erkannten Objekte
Bild mit Markierungen für die erkannten Objekte

Gerade hier zeigt sich eine wichtige Grenze vortrainierter Modelle: YOLO kann nur Klassen sicher erkennen, die im verwendeten Trainingsdatensatz enthalten sind. Ein Apfel gehört zu den bekannten Standardklassen, eine Mandarine oder ein Kürbis dagegen nicht unbedingt als eigene Klasse.

Dadurch kann es passieren, dass solche Objekte entweder gar nicht erkannt oder einer ähnlichen bekannten Klasse zugeordnet werden.

Vergleich mit bekannten Objektklassen

Nachdem der Kürbis im ersten Test nicht zuverlässig erkannt wurde, habe ich ihn durch eine Banane ersetzt. Damit befinden sich nun drei Objekte im Bild, die vom vortrainierten Modell grundsätzlich bekannt sind: Banane, Orange und Apfel.

Die Mandarine wird dabei der Klasse orange zugeordnet, was für diesen Test völlig nachvollziehbar ist.

Erkannte Objekte mit dem Modell yolo26m
Erkannte Objekte mit dem Modell yolo26m
Erkannte Objekte mit dem Modell yolo26n
Erkannte Objekte mit dem Modell yolo26n
Erkannte Objekte mit dem Modell yolo26s
Erkannte Objekte mit dem Modell yolo26s

Die Ergebnisse zeigen deutlich, dass die Erkennung bei bekannten Objektklassen wesentlich zuverlässiger funktioniert:

ModellBananeMandarine (orange)Apfel
YOLO26n0,810,830,74
YOLO26s0,930,880,91
YOLO26m0,940,940,87

Besonders interessant ist, dass die größeren Modelle s und m bei den meisten Objekten höhere Confidence-Werte erreichen. Gleichzeitig zeigt der Test aber auch, dass ein größeres Modell nicht zwangsläufig bei jedem einzelnen Objekt den höchsten Wert liefert.

Für diesen Anwendungsfall liefern bereits alle drei Modelle brauchbare Ergebnisse.

ESP32-CAM als alternative Bildquelle

Die Shelly Camera ist für dieses Projekt nicht zwingend erforderlich. Auch eine ESP32-CAM kann als Bildquelle genutzt werden, sofern sie einen Snapshot per HTTP bereitstellt.

ESP32-CAM
ESP32-CAM
ESP32-CAM Modelle
ESP32-CAM Modelle

Gerade zum Ausprobieren ist die ESP32-CAM interessant, weil sie nur einen Bruchteil einer Shelly Camera kostet. Wer also einfach erste Erfahrungen mit Bilderkennung und YOLO sammeln möchte, bekommt damit eine sehr günstige und flexible Alternative.

In meinem Fall ist der aktuelle Snapshot über folgende URL erreichbar:

http://192.168.178.79/capture
Aufnahme mit der ESP32-CAM - HD 1280x720px
Aufnahme mit der ESP32-CAM – HD 1280x720px

Im Python-Skript muss dafür lediglich die Snapshot-URL angepasst werden:

SNAPSHOT_URL = "http://192.168.178.79/capture"

Die Bildqualität der ESP32-CAM lässt sich über die Weboberfläche konfigurieren, die direkt über die IP-Adresse erreichbar ist:

http://192.168.178.79

Dort können je nach Firmware unter anderem Auflösung und Bildqualität angepasst werden. Für die Objekterkennung lohnt es sich, hier etwas zu experimentieren, da die Bildqualität einen direkten Einfluss auf das Ergebnis haben kann.

Weboberfläche zum konfigurieren der ESP32-CAM
Weboberfläche zum konfigurieren der ESP32-CAM

Objekterkennung mit der ESP32-CAM testen

Nachdem der Snapshot der ESP32-CAM gespeichert wurde, kann dieser genauso wie das Bild der Shelly Camera mit den drei YOLO-Modellen analysiert werden:

yolo predict model=yolo26n.pt source=images/esp32-camera.jpg
yolo predict model=yolo26s.pt source=images/esp32-camera.jpg
yolo predict model=yolo26m.pt source=images/esp32-camera.jpg
yolo26n - detect source ESP32-CAM
yolo26n – detect source ESP32-CAM
yolo26s - detect source ESP32-CAM
yolo26s – detect source ESP32-CAM
yolo26m - detect source ESP32-CAM
yolo26m – detect source ESP32-CAM

Auch hier habe ich wieder Banane, Mandarine und Apfel als Testobjekte verwendet. Die Ergebnisse fallen jedoch deutlich anders aus als zuvor mit der Shelly Camera:

ModellBananeMandarine (orange)Apfel
YOLO26nnicht erkannt0,360,73
YOLO26s0,310,340,51
YOLO26mals donut 0,280,750,77

Besonders auffällig ist die Banane. Während yolo26s sie noch mit einer relativ niedrigen Confidence von 0,31 erkennt, findet yolo26n sie gar nicht. yolo26m ordnet sie sogar fälschlicherweise als donut ein.

Die ESP32-CAM liefert in meinem Test ein sichtbar anderes Ausgangsbild als die Shelly Camera. Auflösung, Bildschärfe, Belichtung und die Einstellungen der Kamera können die Objekterkennung beeinflussen. Deshalb lohnt es sich, die Kameraeinstellungen über die Weboberfläche anzupassen und verschiedene Konfigurationen auszuprobieren.

Das zeigt gleichzeitig einen wichtigen Punkt: Ein größeres YOLO-Modell garantiert nicht automatisch ein besseres Ergebnis, wenn bereits das Ausgangsbild ungünstiger ist.

YOLO-Ergebnis in Node-RED weiterverarbeiten

Bisher habe ich YOLO hauptsächlich über die Kommandozeile getestet. Für eine praktische Anwendung möchte ich die Objekterkennung jedoch automatisieren. Dafür nutze ich Node-RED.

Node-RED ruft zunächst den Snapshot der ESP32-CAM ab und speichert diesen als Bilddatei. Anschließend wird über eine exec-Node mein Python-Skript gestartet, welches das Bild mit YOLO analysiert.

Neben dem markierten Ergebnisbild liefert das Skript die erkannten Objekte als JSON zurück. So kann Node-RED beispielsweise direkt prüfen, ob ein bestimmtes Objekt erkannt wurde.

Node-RED Flow für das automatische erkennen von Objekten mit YOLOHerunterladen

Fazit und Ausblick

Die ersten Tests zeigen, dass sich eine lokale Objekterkennung mit überschaubarem Aufwand umsetzen lässt. Dabei braucht es weder eine spezielle KI-Kamera noch eine leistungsfähige NVIDIA-Grafikkarte. Die Kamera liefert lediglich das Bild – die eigentliche Auswertung übernimmt YOLO auf meinem Dell OptiPlex 3050 Micro.

Besonders interessant fand ich den Vergleich der verschiedenen YOLO-Modelle sowie die Unterschiede zwischen der Shelly Camera und der deutlich günstigeren ESP32-CAM. Dabei wurde auch deutlich, dass nicht nur die Größe des Modells, sondern ebenso die Qualität des Ausgangsbildes einen großen Einfluss auf das Ergebnis hat.

Mit der Anbindung an Node-RED lässt sich die Objekterkennung außerdem direkt in eigene Automatisierungen integrieren. Statt nur ein Bild mit markierten Objekten zu erzeugen, können die Ergebnisse als strukturierte Daten weiterverarbeitet werden.

Damit ist für mich aber noch nicht Schluss. Als nächsten Schritt möchte ich das bestehende Setup erweitern und mich mit der Erkennung von Fahrzeugkennzeichen beschäftigen. Dabei soll zunächst ein Kennzeichen im Kamerabild lokalisiert und anschließend dessen Text ausgelesen werden.

Die vorhandene Architektur aus Kamera, Node-RED, Python und lokaler Bildverarbeitung kann dafür weitgehend weiterverwendet werden. Genau darauf werde ich in einem der nächsten Beiträge aufbauen.

Transparenzhinweis: Dieser Beitrag wurde mit Unterstützung künstlicher Intelligenz erstellt und redaktionell geprüft. Mehr zur Nutzung von KI

Letzte Aktualisierung am: 20. September 2026

Foto von Stefan Draeger
Über den Autor

Stefan Draeger — Entwickler & Tech-Blogger

Ich zeige praxisnah, wie du Projekte mit Arduino, ESP32 und Smarthome-Komponenten umsetzt – Schritt für Schritt, mit Code und Schaltplänen.

Mehr Artikel von Stefan →

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

Kontakt & Hilfe

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden? Erstelle einfach ein Support-Ticket.

Support-Ticket erstellen
Keine Beiträge verpassen

Newsletter abonnieren

Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32, Smarthome und IoT direkt in dein Postfach.

Newsletter abonnieren
Videos & Tutorials

Draeger-IT auf YouTube

Entdecke meine Videos zu Arduino, ESP32, Raspberry Pi, Smarthome und spannenden Elektronikprojekten – mit Tutorials, Tests und Praxisbeispielen.

YouTube-Kanal besuchen
Freiwillige Unterstützung

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee. So hilfst du dabei, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

Auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kostenlose Online-Werkzeuge

Tools

Praktische Generatoren, Rechner und Hilfsmittel für deine Elektronik- und Entwicklungsprojekte.

Generatoren & Konverter

  • QR-Code Generator
  • Passwort Generator
  • PNG zu WebP konvertieren
  • Bilder online komprimieren
  • Code online formatieren

Rechner & Tabellen

  • Unix-Zeitstempel-Rechner
  • ASCII-Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner

LED-Matrix

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix Generator
Kontakt

Anschrift & Kontaktdaten

Stefan Draeger

Königsberger Str. 13
38364 Schöningen

Telefon 01556 5432686

E-Mail info@draeger-it.blog

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
Social Media

Folge mir auf

Weitere Projekte, Videos und Neuigkeiten findest du auch auf meinen Social-Media-Kanälen.

  • f Facebook
  • in LinkedIn
  • ▶ YouTube
  • ♪ TikTok
  • P Pinterest
  • ◎ Instagram
Rechtliche Informationen

Rechtliches

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
  • KI-Transparenz bei draeger-it.blog
©2026 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
  • Optionen verwalten
  • Dienste verwalten
  • Verwalten von {vendor_count}-Lieferanten
  • Lese mehr über diese Zwecke
Einstellungen anzeigen
  • {title}
  • {title}
  • {title}