Skip to Content

Trainiere ein Objekterkennungsmodell mit Edge Impulse für ESP32-CAM

Trainiere ein Objekterkennungsmodell mit Edge Impulse für ESP32-CAM

In diesem Tutorial lernst du, wie du mit Edge Impulse ein Objekterkennungsmodell für den ESP32-CAM trainierst. Die Datenerfassung, Datenbeschriftung und das Training des Modells erfolgen auf der Edge Impulse Plattform, aber das Erkennungsmodell läuft direkt auf dem ESP32-CAM.

Da der ESP32-CAM nur begrenzte Rechenleistung hat, solltest du keine hohen Genauigkeiten oder Geschwindigkeiten erwarten. Dennoch gibt es viele TinyML-Anwendungen, bei denen der ESP32-CAM ausreicht. Zum Beispiel könntest du ein Gesichtserkennungs-Smartlock bauen, das nur dir Zugang gewährt, einen Futterspender, der dein Haustier erkennt und füttert, wenn es erscheint, oder ein Gestenerkennungssystem, um Lichter oder Geräte mit Handbewegungen zu steuern.

In dieser Einführung in die Objekterkennung mit Edge Impulse halten wir es einfach und trainieren ein System, das nur zwei Objekte erkennt und unterscheidet.

Benötigte Teile

Du benötigst einen ESP32-CAM, um die Objekterkennung auszuführen. Du kannst einen ESP32-CAM mit einem USB-TTL Shield zum Programmieren oder einen FTDI USB-TTL Adapter verwenden. Der FTDI USB-TTL Adapter ist etwas umständlicher zu benutzen, lässt aber die GPIO-Pins frei zugänglich. Für dieses Tutorial empfehle ich das USB-TTL Shield, achte aber darauf, das richtige zu bekommen (siehe Programming the ESP32-CAM Tutorial für Details).

ESP32-CAM mit USB-TTL Shield

FTDI USB-TTL Adapter

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Was ist Edge Impulse?

Edge Impulse ist eine Webplattform, die es ermöglicht, effiziente Machine-Learning-Modelle für eingebettete und Edge-Geräte zu erstellen. Sie macht es einfach, TinyML-Anwendungen (Tiny Machine Learning) zu bauen und bereitzustellen.

Edge Impulse Workflow
Edge Impulse Workflow (source)

Datenerfassung und Beschriftung

Du kannst Daten von einer Vielzahl von Sensoren sammeln, darunter Kameras, Mikrofone, Beschleunigungssensoren, Gyroskope, Umweltsensoren und mehr. Es gibt verschiedene Möglichkeiten, Daten zu erfassen:

  1. Live-Datenerfassung über USB/seriell: Unterstützte Entwicklungsboards (wie ESP32, Arduino Nano 33 BLE Sense oder ST-Boards) können direkt mit dem Edge Impulse Studio verbunden werden, um Sensordaten in Echtzeit zu streamen.
  2. Fern-Datenerfassung mit dem Edge Impulse CLI: Für headless oder entfernte Geräte können Nutzer das CLI verwenden, um Daten über Wi-Fi oder seriell an die Edge Impulse Plattform zu senden.
  3. Mobile App: Die Edge Impulse Mobile App (für Android und iOS verfügbar) kann verwendet werden, um Bilder, Audio und Bewegungsdaten direkt mit dem Telefon aufzunehmen und an dein Projekt-Dashboard zu senden.
  4. Vorhandene Datensätze hochladen: Nutzer können Daten in CSV-, JSON- oder benutzerdefinierten Formaten importieren und sie innerhalb der Weboberfläche beschriften.
  5. Kontinuierliche Datenerfassung: Einige Geräte können für kontinuierliche Abtastung konfiguriert werden, die anschließend in handhabbare Datenfenster segmentiert werden.

Sobald Daten gesammelt sind, bietet Edge Impulse Werkzeuge zur Beschriftung. Die Beschriftungsoberfläche unterstützt das Taggen einzelner Proben oder das Batch-Beschriften großer Datensätze. Für visuelle und Audio-Daten kannst du hineinzoomen, zuschneiden und Ereignisse oder interessante Merkmale annotieren. Die Plattform unterstützt auch automatische Beschriftung und Datenaugmentation zur Verbesserung der Datensatzqualität.

Signalverarbeitung und Modelltraining

Nach der Beschriftung werden die Daten durch DSP (Digital Signal Processing) Blöcke geleitet, die rohe Sensordaten in für Machine Learning geeignete Merkmale umwandeln. Diese Blöcke sind für ressourcenarme Umgebungen optimiert und spezifisch für den Eingabetyp (z.B. MFCCs für Audio, Bildskalierung und Farbkorrektur für Vision oder FFT für Vibrationsdaten).

Als nächstes folgt das Modelltraining. Edge Impulse bietet:

  • Klassifikation, um Anwesenheit/Abwesenheit zu erkennen oder Klassen zu identifizieren (z.B. Objekttypen, gesprochene Wörter).
  • Regression, um kontinuierliche Werte vorherzusagen (z.B. Winkel, Temperatur oder Objektposition).
  • Objekterkennung, um mehrere Objekte in Bildern zu erkennen und zu lokalisieren.
  • Anomalieerkennung, um Ausreißer oder ungewöhnliche Muster ohne gelabelte Daten zu identifizieren.

Du kannst entweder vorgefertigte Modellarchitekturen aus dem Edge Impulse Model Zoo verwenden, der optimierte Versionen von MobileNet, ResNet und SqueezeNet unter anderem enthält, oder eigene Modelle mit Keras und TensorFlow Lite definieren. Du kannst auch ONNX- oder TensorFlow-Modelle importieren.

Modelloptimierung und Bereitstellung

Sobald ein Modell trainiert ist, hilft Edge Impulse, es für den Edge-Einsatz zu optimieren, z.B. durch Quantisierung (Reduzierung der Modellgröße und Verbesserung der Inferenzgeschwindigkeit) und Operator Fusion.

Die Bereitstellung ist sehr flexibel, mit Optionen wie:

  • C++ SDK: Ein vollständig eigenständiges SDK, das in jedes C++-Projekt integriert werden kann. Ideal für Mikrocontroller und Bare-Metal-Firmware.
  • Arduino Library: Automatisch generierte Arduino-kompatible Bibliothek, um dein Modell auf Boards wie ESP32, Arduino Portenta und Nano 33 BLE auszuführen.
  • Fertige Firmware: Für unterstützte Geräte stellt Edge Impulse Firmware-Binärdateien mit eingebettetem trainiertem Modell bereit, die geflasht und ausgeführt werden können.
  • WebAssembly: Modelle im Browser oder auf jedem System mit WebAssembly-Unterstützung ausführen.
  • Linux-basierte Bereitstellung: Für Geräte wie Raspberry Pi, BeagleBone oder Nvidia Jetson kannst du Python SDKs oder Docker-Container verwenden.

Model Zoo und Transfer Learning

Edge Impulse bietet auch einen kleinen Model Zoo mit leichtgewichtigen, voroptimierten Modellen für Edge-Anwendungen. Diese Modelle umfassen:

  • MobileNet-Varianten für Bildklassifikation
  • FOMO (Fast Object Detection for Microcontrollers), ein kleines Objekterkennungsmodell für Echtzeitanwendungen
  • Syntiant-kompatible Audio-Klassifikatoren
  • Benutzerdefinierte Keyword-Spotting-Modelle
  • Beispiele für Regression und Anomalieerkennung

Viele dieser Modelle können durch Transfer Learningfeinabgestimmt werden, sodass du auch mit relativ kleinen Datensätzen hohe Genauigkeit erreichst, indem du auf vortrainierten Gewichten aufbaust.

Edge Impulse Anmeldung

Bevor du Edge Impulse nutzen kannst, musst du dich anmelden. Gute Nachrichten: Der Developer Plan ist kostenlos. Du bist auf drei private Projekte beschränkt, was aber zum Ausprobieren ausreicht. Gehe zu https://studio.edgeimpulse.com/signup und trage deine Daten im Formular ein:

Edge Impulse signing-up form
Edge Impulse Anmeldeformular

Nach der Anmeldung kannst du ein Projekt erstellen, was wir im nächsten Abschnitt besprechen. Falls du Probleme hast, kann dir auch der Edge Impulse Documentation helfen.

Edge Impulse Projekt erstellen

Um ein Projekt zu erstellen, gehe zu https://studio.edgeimpulse.com/studio/profile/projects, klicke rechts auf „+ Create new project“. Es öffnet sich ein Dialog, in dem du einen Projektnamen eingeben kannst, z.B. „esp32-cam-object-detection“, und einige Projekteigenschaften festlegst, wie unten gezeigt:

Edge Impulse Projekt erstellen

Wähle als Projekttyp „Personal“ und setze es auf Privat. Drücke dann einfach den grünen Button „Create new project“ unten.

Edge Impulse Dashboard

Nach der Projekterstellung solltest du zum Dashboard weitergeleitet werden. Es gibt einige Bereiche, die ich hervorheben möchte:

Edge Impulse Dashboard
Edge Impulse Dashboard

In der Mitte erscheint der Name deines Projekts, z.B. esp32-cam-object-detection, den du bearbeiten kannst. Oben rechts kannst du die Zielplattform auswählen.

Der AI Thinker ESP32-CAM erscheint nicht als unterstütztes Board, aber es gibt das Espressif ESP-EYE, das du für dieses Tutorial auswählen solltest. Mit einer kleinen Änderung funktioniert der generierte Code auch für den ESP32-CAM.

In der linken Seitenleiste findest du Funktionen für Datenerfassung und Impuls-Design. Ein „Impulse“ ist eine kurze Datenverarbeitungspipeline, die die Datenvorverarbeitung (z.B. Skalierung) und das neuronale Netzwerkmodell enthält.

Edge Impulse Datenerfassung

Edge Impulse unterstützt verschiedene Methoden zur Datenerfassung. Wir verwenden die einfachste: Bilder mit deinem Smartphone aufnehmen.

Klicke in der Seitenleiste auf „Data acquisition“, es öffnet sich ein neues Panel. Rechts unter „Collect data“ klicke auf den Link „Connect a device“:

Edge Impulse Connect a Device
Edge Impulse Gerät verbinden

Es öffnet sich ein Dialog mit drei Optionen. Nutze den QR-Code links mit deinem Handy, um eine App zu öffnen, mit der du Bilder als Datenproben aufnehmen kannst:

Connect Device via QR code
Gerät via QR-Code verbinden

Hier ein Bild der App, wie sie auf deinem Handy erscheint, nachdem du die Berechtigungen zum Ausführen der App und zum Fotografieren erteilt hast:

Edge Impulse Data Collection App
Edge Impulse Datenerfassungs-App

Klicke den blauen „Capture“-Button, um Bilder aufzunehmen, die an die Edge Impulse Plattform gesendet werden. Dort werden wir sie im nächsten Schritt beschriften.

Makkuro Kurosuke und Auto

Für dieses Tutorial verwende ich zwei Objekte zur Erkennung: einen Makkuro Kurosuke und ein Auto:

Makkuro Kurosuke and Car
Makkuro Kurosuke und Auto

Falls du es nicht kennst: Makkuro Kurosuke (oder Susuwatari) ist eine fiktive Figur aus dem Studio Ghibli Film Mein Nachbar Totoro und kann grob als „kleiner Rußgeist“ übersetzt werden. Für die Beschriftung nenne ich ihn einfach „Kurosuke“.

Diese beiden Objekte sind interessant für die Objekterkennung. Der Kurosuke ist weitgehend form- und detailarm, nur eine schwarze Kugel, die leicht mit anderen schwarzen Objekten verwechselt werden kann. Das Auto hingegen ist komplex in der Form, und das Modell muss eine gute Repräsentation lernen, um es zuverlässig zu erkennen.

Wenn du die Daten sammelst, achte darauf, dass du sie unter den gleichen Bedingungen aufnimmst, unter denen die Modellerkennung später stattfindet. Andernfalls wird der Detektor wahrscheinlich viele Fehler machen.

Beispielsweise solltest du verschiedene Winkel, Entfernungen, Hintergründe und Beleuchtungsstärken abdecken, um die Erkennung robust zu machen. Hier einige Beispiele der von mir gesammelten (und beschrifteten) Daten:

Example Captures
Beispielaufnahmen

Beachte jedoch, je mehr sich die Umgebungsbedingungen ändern, desto schwieriger wird die Aufgabe für den Objektdetektor und desto mehr Daten musst du sammeln. Wenn du es einfach halten willst, verwende denselben Hintergrund, Winkel und Licht – also kontrolliere die Umgebung so gut wie möglich.

Datenbeschriftung

Sobald du genug Bilder für beide Objekte gesammelt hast – mindestens 30 Bilder pro Objekt – kannst du mit der Beschriftung beginnen. Die Bilder (Proben) erscheinen links, und wenn du auf eines klickst, wird es unten rechts vergrößert angezeigt:

Selecting pictures for labelling
Bilder zur Beschriftung auswählen

Dort kannst du mit der Maus ein Begrenzungsrechteck um das zu erkennende Objekt ziehen und ihm ein Label geben, in meinem Fall „Car“ oder „Kurosuke“:

Labelling the Car in a picture
Beschriftung des Autos in einem Bild

Das musst du für alle Bilder machen und bei der Beschriftung der zwei (oder mehr) Objekte konsistent sein.

Die gute Nachricht ist, dass die Edge Impulse Plattform nach der ersten Beschriftung eine Begrenzungsbox vorschlägt, was den Prozess deutlich beschleunigt. Du kannst Größe und Position der vorgeschlagenen Boxen durch Klicken auf die Zieh- oder Größenänderungssymbole an den Ecken anpassen.

Edge Impulse Impulse erstellen

Wenn Datenerfassung und Beschriftung abgeschlossen sind, klicke unter „Impulse Design“ in der Seitenleiste des Dashboards auf „Create Impulse“:

Create Impulse
Impulse erstellen

Es öffnet sich ein Panel mit einigen Verarbeitungsblöcken, wie unten gezeigt.:

Object Detection Impulse
Objekterkennungs-Impulse

Anfangs können die Blöcke anders sein, aber du kannst sie löschen, indem du auf das kleine Papierkorb-Symbol unten rechts in jedem Block klickst. Dann füge neue Blöcke hinzu, indem du auf „Add … block“ klickst und sie auswählst und konfigurierst:

Du brauchst speziell einen „Image data“ (Eingabe) Block mit einer Bildgröße von 96×96 Pixeln und einem Resize-Modus „Fit longer axis“.

Dann folgt ein „Image“ (Verarbeitung) Block und danach ein Object Detection (Lern-) Block. Der letzte Block sind die Ausgabe-Features. Du siehst, dass dort schon die zwei Objekte (Car, Kurosuke) angezeigt werden, die wir erkennen wollen.

Damit hast du einen „Impulse“ erstellt, also eine kurze Datenverarbeitungspipeline bestehend aus einem Feature-Verarbeitungsblock und einem neuronalen Netzwerkblock (Modell).

Edge Impulse Features

Als nächstes kannst du die Features anpassen und analysieren, die vom Bildverarbeitungsblock extrahiert werden. Klicke unter „Impulse Design“ in der Seitenleiste des Dashboards auf „Image“:

Es öffnet sich ein neues Panel, in dem du für den Parameter Color depth „Grayscale“ auswählen solltest:

Das bedeutet, dass das Bild in Graustufen umgewandelt wird, was schneller zu verarbeiten ist und weniger Speicher verbraucht. Dadurch wird die Objekterkennung schneller, aber die Genauigkeit leidet etwas, da Farbinfo verloren geht.

Feature Explorer

Drücke dann den blauen Button „Save parameters“ und danach eventuell „Generate Features“, um den Feature Explorer zu starten:

Feature Explorer for grayscale images
Feature Explorer für Graustufenbilder

Der Feature Explorer wandelt jedes Graustufenbild in einen Vektor mit 96×96 = 9216 Dimensionen um. Dann projiziert er diese auf zwei Dimensionen und stellt sie in einem Diagramm dar. Jeder Punkt im Diagramm repräsentiert ein Bild, die Farbe zeigt, welches Objekt das Bild enthält.

Was du hier sehen willst, sind Punkte derselben Farbe, die eng beieinander liegen, und dass die beiden Farbcluster weit auseinander sind. Das zeigt, dass die Features geeignet sind, die beiden Objektklassen zu unterscheiden. Unten ein erfundenes Beispiel für eine sehr gute Clusterbildung, die nahe an perfekte Features zeigt:

Clustering for near-perfect features
Clusterbildung für nahezu perfekte Features

In meinem Fall sieht man, dass die Punkte etwas gruppiert sind, aber die Trennung zwischen den Clustern nicht groß, aber akzeptabel ist. Das bedeutet, es ist keine triviale Erkennungsaufgabe und die Genauigkeit der Objekterkennung wird wahrscheinlich nicht perfekt sein.

Der Feature Explorer betrachtet nur die rohen Pixel, und das Erkennungsmodell wurde noch nicht trainiert oder evaluiert. Aber der Feature Explorer erlaubt es, verschiedene Features auszuprobieren. Unten siehst du den Feature-Plot für RGB-Bilder (statt Graustufen):

Feature Explorer for RGB images
Feature Explorer für RGB-Bilder

Wie du siehst, ist die Clusterbildung nicht besser, wenn überhaupt, und wir bleiben daher bei Graustufenbildern, da unsere Inferenzzeit schneller ist. In den nächsten Abschnitten zeige ich, wie man das Modell trainiert und evaluiert. Dann verstehen wir die Erkennungsleistung besser.

Edge Impulse Modell trainieren

Um das Erkennungsmodell zu trainieren, klicke in der Seitenleiste auf „Object detection“:

Es öffnet sich rechts ein Panel mit Einstellungen für den Trainingsprozess und einem blauen Button „Save & train“ am Ende:

Settings for model training
Einstellungen für das Modelltraining

Du kannst die Einstellungen so belassen, sie funktionieren gut. Ich habe die Lernrate von 0.001 auf 0.01 erhöht, da der Datensatz klein ist und die Erkennungsaufgabe nicht sehr schwer.

Eine höhere Lernrate beschleunigt die Konvergenz des Trainingsprozesses (Fehler/Verlust sinkt schneller) und du kannst bei gleicher Anzahl Trainingszyklen eine höhere Genauigkeit erreichen. Ist die Lernrate zu hoch, konvergiert das Training nicht und das Modell lernt nicht.

Trainingsergebnis

Du kannst den Trainingsprozess im Konsolenfenster „Training output“ verfolgen. Dort sollten die Werte für den Train LOSS kontinuierlich sinken:

Training output
Trainingsergebnis

Wenn der Train LOSS steigt oder schwankt, ist die Lernrate zu hoch. Der Validation LOSS sollte ebenfalls kontinuierlich sinken. Steigt er, hast du zu viele Epochen trainiert und solltest die Trainingszyklen reduzieren.

Nach Abschluss des Trainings zeigt die Plattform die Konfusionsmatrix und weitere Bewertungsmetriken basierend auf dem Validierungsdatensatz:

Model evaluation
Modellevaluation

In meinem Fall erhalte ich eine perfekte Konfusionsmatrix und einen perfekten F1 SCORE von 100%. In der Konfusionsmatrix sieht man, dass das Modell perfekt (100%) zwischen BACKGROUND, CAR und KUROSUKE unterscheidet.

Das ist jedoch etwas irreführend und nicht die tatsächliche Leistung des Modells auf neuen Daten. Die Evaluation erfolgt auf dem Validierungsdatensatz, und wenn Trainings- und Validierungsdaten sehr klein sind (wie bei mir), ist die Bewertung oft zu optimistisch. Für eine genauere Einschätzung solltest du mehr Trainingsdaten sammeln.

Du kannst auch zu „Model testing“ gehen und die Leistung des Modells auf den Testdaten bewerten:

Wie du siehst, liegt die Genauigkeit auf dem Testset nur bei 75%

Model evaluation on test data
Modellevaluation auf Testdaten

Aber auch mein Testset ist sehr klein (12 Proben) und die geschätzte Genauigkeit daher nicht sehr zuverlässig.

Edge Impulse Modell bereitstellen

Jetzt sind wir bereit, das Modell auf dem ESP32-CAM bereitzustellen. Klicke unter „Impulse Design“ in der Seitenleiste des Dashboards auf „Deployment“:

Es öffnet sich ein Panel mit Bereitstellungsoptionen:

Deployment options
Bereitstellungsoptionen

Du kannst die Standardoptionen belassen, die „Arduino library“, „TensorFlow Lite“ und „Quantized (int8)“ sein sollten, wie oben gezeigt. Wenn du dann unten auf den blauen „Build“-Button klickst, erstellt die Plattform eine Arduino .ZIP-Bibliothek, die du herunterladen kannst:

Der Name dieser Bibliothek leitet sich vom Projektnamen und der Anzahl der Bereitstellungen ab. In meinem Fall ist es ei-esp32-cam-object-detection-arduino-1.0.13.zip

Erkennungsmodell auf ESP32-CAM installieren

Schließlich können wir unser trainiertes Erkennungsmodell auf dem ESP32-CAM installieren. Installiere einfach die heruntergeladene Bibliothek (ei-esp32-...zip) wie gewohnt in der Arduino IDE über Sketch -> Include Library -> Add .ZIP library.

Wenn erfolgreich, kannst du ein Sketch namens „esp32_camera“ öffnen, das unter File -> Examples -> esp32-cam-object-detection_inferencing -> esp32 liegt:

Der Name des Beispiels entspricht dem Namen deines Projekts (in meinem Fall esp32-cam-object-detection) mit dem Suffix „_inferencing“.

Kamera-Modell definieren

Bevor du das Modell ausführen kannst, sind zwei wichtige Änderungen nötig! Im Code des esp32_camera Sketch findest du Konstanten für die ESP-EYE und AI-THINKER Boards. Du musst die Konstante CAMERA_MODEL_ESP_EYE auskommentieren oder löschen und die Konstante CAMERA_MODEL_AI_THINKER einkommentieren, wie unten gezeigt:

Wenn du den Sketch jetzt startest, wird er wahrscheinlich trotzdem nicht funktionieren! Es wird die ESP32 Core Version 2.0.4 benötigt! Mehr dazu im nächsten Abschnitt.

ESP32 Core 2.0.4 installieren

Stand August 2025 ist die ESP32 Core Version 3.3.0. Wenn du versuchst, den esp32_camera Sketch mit dieser Version auszuführen, erhältst du einen „cam_hal: DMA overflow“ Fehler!

Um ESP32 Core 2.0.4 zu installieren, öffne den BOARDS MANAGER und wähle 2.0.4 für den esp32 core aus. Nach der Installation sollte es so aussehen:

ESP32 Core 2.0.4 installiert

Jetzt solltest du das Erkennungsmodell ohne Fehler ausführen können. Die Arduino IDE wird dir Updates für deine Boards anzeigen:

Aber du solltest diese nicht installieren, da sonst die ESP32 Core Version 2.0.4 durch eine neuere Version ersetzt wird.

Erkennungsmodell auf ESP32-CAM kompilieren und ausführen

Beachte, dass die erste Kompilierung beträchtliche Zeit in Anspruch nimmt – 15 Minuten oder mehr, je nach System! Nachfolgende Kompilierungen sind schneller.

Nach dem Kompilieren und Flashen kannst du den ESP32-CAM auf Objekte richten, und die Erkennungsergebnisse werden im Serial Monitor ausgegeben:

ESP32-CAM with objects to detect
ESP32-CAM mit zu erkennenden Objekten

Du siehst das Label (Klasse) des erkannten Objekts, z.B. „car“, die Erkennungswahrscheinlichkeit, z.B. 0.726, und die Koordinaten der Begrenzungsbox:

Detection Results printed in Serial Monitor
Erkennungsergebnisse im Serial Monitor

Das System zeigt auch, wie lange eine Erkennung dauert. In meinem Fall sind es 714 ms. Beachte, dass die Erkennungszeit unabhängig von der Anzahl der Trainingsproben ist und kaum von der Anzahl der zu erkennenden Objekte beeinflusst wird. Du kannst also die Modellleistung durch mehr Trainingsdaten verbessern.

Fazit und Kommentare

In diesem Tutorial hast du gelernt, wie man mit Edge Impulse ein Objekterkennungsmodell trainiert und auf einem ESP32-CAM bereitstellt.

Beachte, dass Edge Impulse viel mehr bietet, als in diesem Tutorial behandelt wurde, und ich empfehle dir, die Edge Impulse Documentation zu lesen. Zum Beispiel gibt es Live-Tests des Modells im Browser oder auf dem Handy – ziemlich cool. Neben dem ESP32-CAM werden viele weitere Bereitstellungsziele und Optionen unterstützt. Und während wir die Trainingsdaten mit dem Handy gesammelt haben, kannst du die Daten auch direkt vom Gerät erfassen.

Letzteres ist die bessere Option, aber etwas komplexer (im Fall des ESP32-CAM). Warum besser? Weil die Trainingsdaten dann von derselben Kamera stammen, die das Erkennungsmodell nutzt. Du wirst feststellen, wenn du die Live-Klassifikation über das Handy ausprobierst, dass die Erkennungsgenauigkeit besser ist als auf dem ESP32-CAM.

Nachteile von Edge Impulse mit ESP32-CAM

Obwohl Edge Impulse das Trainieren und Bereitstellen eines Vision-Modells sehr einfach macht, gibt es einige Nachteile. Der ESP32-CAM wird nicht direkt unterstützt, erfordert aber nur eine kleine Codeänderung. Das größere Problem ist, dass der Code nur mit der veralteten ESP32 Core Version 2.0.4 (August 2025) läuft, sonst erhält man den „cam_hal: DMA overflow“ Fehler beim Ausführen.

Außerdem ist die Installation über eine .ZIP-Bibliothek zwar bequem, bedeutet aber, dass dein Bibliotheksordner mit Bibliotheken überflutet wird, wenn du mehrere Projekte baust. Es wäre besser, den Code direkt in den Sketch zu kopieren, um ihn lokal zu halten. Ich habe das versucht, es hat aber nicht funktioniert und erfordert wahrscheinlich Pfadmanipulationen. Du kannst den C++ Code auch bereitstellen, aber er läuft nicht direkt in der Arduino IDE.

Objekterkennung auf dem PC

Die Rechenleistung des ESP32-CAM ist ziemlich begrenzt, die Erkennungszeit daher recht langsam und das Modell nicht sehr genau. Wenn du schnellere und genauere Erkennung brauchst, kannst du das Video vom ESP32-CAM an deinen PC streamen und das Erkennungsmodell dort ausführen. Siehe das Object Detection with ESP32-CAM and YOLO Tutorial für Details.

SenseCraft und XIAO ESP32-S3-Sense

Wenn du nur ein Gesichts- oder Personenerkennungsmodell auf einem kleinen Mikrocontroller ausführen willst, schau dir das Face Detection with XIAO ESP32-S3-Sense and SenseCraft AI und das Edge AI Room Occupancy Sensor with ESP32 and Person Detection Tutorial an. Dort verwenden wir die SenseCraft Plattform und einen XIAO ESP32-S3-Sense Mikrocontroller. Die Bereitstellung ist einfacher, aber du brauchst einen zweiten Mikrocontroller. Schau es dir an.

Batteriebetrieben

Ein Erkennungsmodell auf einem Mikrocontroller zu betreiben, öffnet die Tür für ein batteriebetriebenes Erkennungssystem. Allerdings verbraucht der ESP32-CAM bei Dauerbetrieb noch recht viel Akku. Du könntest einen PIR-Sensor verwenden, der das Erkennungssystem nur aktiviert, wenn Bewegung erkannt wird. Details findest du in unserem Motion Activated ESP32-CAM Tutorial. Und falls du ganz neu beim ESP32-CAM bist, empfehle ich auch das Programming the ESP32-CAM Tutorial.

Wenn du Fragen hast, hinterlasse sie gerne im Kommentarbereich.

Viel Spaß beim Tüfteln 😉