Wie implementiert man ein neuronales Netzwerk mit mehreren Klassen mit STM32F103?
Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.
Die Implementierung eines mehrklassigen neuronalen Netzwerks auf einem STM32F103 (Cortex-M3, 72 MHz, keine FPU, begrenzter RAM/Flash) ist aufgrund seiner begrenzten Ressourcen eine Herausforderung, aber es ist für kleine Netzwerke und niedrigdimensionale Eingänge (z.B. 2D/3D-Sensoreingänge) möglich.
Hier ist, wie Sie es Schritt für Schritt tun können:
1. Ein kleines neuronales Netz am PC entwerfen
Verwende Python mit TensorFlow/Keras, um ein Modell zu erstellen und zu trainieren:
2. Modell in C konvertieren (ggf. quantisiert)
Möglichkeiten:
-
STM32Cube.AI (offizielles ST-Tool)
-
Wandelt Keras/TensorFlow-Modelle in optimierten C-Code für STM32 um
-
Integriert sich in STM32CubeMX
-
-
uTensor, CMSIS-NN oder TensorFlow Lite for Microcontrollers (TFLM)
-
Leichtgewichtige Inferenz-Engines für ARM Cortex-M
-
Für STM32F103 ist Ganzzahl-Quantisierung (8-Bit) empfehlenswert:
3. In STM32-Projekt integrieren
A. Mit STM32Cube.AI:
-
STM32CubeMX + STM32Cube.AI Plugin installieren
-
.h5
-Modell importieren -
X-CUBE-AI Middleware aktivieren
-
Code generieren
-
Mit
aiRun()
Eingabedaten übergeben und Ausgabeklasse erhalten
B. Manuell (für sehr kleine Modelle):
Wenn manuell:
-
Gewichte und Bias extrahieren
-
Forward-Pass in C implementieren:
4. Ausführen und Testen
-
Firmware mit STM32CubeIDE auf den STM32 flashen
-
Eingabedaten über UART senden oder Sensoren verwenden
-
Vorhergesagte Klasse über UART oder Display ausgeben
Optimierungstipps
-
Festkomma-Arithmetik verwenden (Q7, Q15 Typen)
-
CMSIS-DSP für Matrixoperationen nutzen
-
Wenn verfügbar, CMSIS-NN verwenden – optimiert für Cortex-M
-
Modell so klein wie möglich halten: z. B. Architektur 2–1–3 oder 2–4–3
Ressourcen
Verwandte Artikel
- ·Bodenqualitätsüberwachungssystem basierend auf STM32-Mikrocontroller
- ·Wie implementiert man DSP (digitale Signalverarbeitung) auf einem Mikrocontroller (MCU)?
- ·Was sind die wichtigsten STM32-Serien und wie unterscheiden sich sie?
- ·Was sind die gängigen Embedded Development Plattformen? Was ist seine spezifische Anwendung?
- ·Was sind die Unterschiede zwischen den gängigen MCU-Familien (z.B. ARM Cortex-M, AVR, PIC, ESP32)?
- ·Vier Präzisionssteuerungsmethoden für Schrittmotoren mit STM32
- ·Was ist der stromsparendste STM32-Mikrocontroller? Wie wählt man ihn aus?
- ·Blue Pill vs Black Pill: Was ist der Unterschied und wie wählt man?
- ·Warum unterscheidet sich STM32 von vielen 32-Bit-Mikrocontrollern?
- ·Wie unterscheiden Sie gefälschte Chips?