Plattform und Quelle
Dieser Artikel basiert auf dem RKNN-V2.5.0-PDF des Herstellers und gilt nur für die dort genannten Chips und Schnittstellen. Bei ArmSoM-Boards zuerst SoC, NPU-Treiber, Toolkit/Runtime, SDK/BSP und Kernelversion prüfen. Eine ArmSoM-Hardwareprüfung wurde nicht durchgeführt; Beispiele und Messwerte stammen aus der Quelle, nicht aus ArmSoM-Tests.
Seriennavigation
- Umgebung und Objektlebenszyklus
- Modellkonfiguration und Quantisierungsparameter
- Caffe, TensorFlow, ONNX und PyTorch laden
- Aufbau, hybride Quantisierung und Export
- Laufzeit, Operatorregistrierung und Inferenz
- Genauigkeit, Leistung, Speicher und Geräteabfragen
- C++-Bereitstellungsbeispiele erzeugen, bauen und ausführen
1 Anforderungen
1.1 Unterstützte Chipmodelle
RV1103
RV1103B
RV1106
RV1106B
RV1126B
RK2118
RK3562
RK3566-Serie
RK3568-Serie
RK3576-Serie
RK3588-Serie
Hinweis: RK3566 / RK3568 / RK3576 / RK3588 bezeichnen im Folgenden jeweils die entsprechenden RK3566-/RK3568-/RK3576-/RK3588-Serien.
1.2 Anforderungen an Umgebung und Abhängigkeiten
Für die Betriebssystemumgebung werden folgende Anforderungen empfohlen:
| Betriebssystemversion | Ubuntu18.04 (x64) |
Ubuntu20.04 (x64) |
Ubuntu22.04 (x64) |
Ubuntu24.04 (x64) |
|---|---|---|---|---|
| Python-Version | 3.6 / 3.7 | 3.8 / 3.8 | 3.10 / 3.11 | 3.12 |
Für ARM64:
| Betriebssystemversion | Debian10 (x64) | Debian11 (x64) | Debian12 (x64) |
|---|---|---|---|
| Python-Version | 3.6 / 3.7 | 3.8 / 3.8 | 3.10 / 3.11 / 3.12 |
Hinweise:
- Detaillierte Python-Bibliotheksabhängigkeiten stehen in doc/requirements*.txt.
- Die Dokumentbeispiele verwenden hauptsächlich Ubuntu 20.04 / Python3.8.
1.3 Unterstützte Deep-Learning-Frameworks
RKNN-Toolkit2 unterstützt Caffe, TensorFlow, TensorFlow Lite, ONNX, DarkNet und PyTorch.
Die Zuordnung zwischen RKNN-Toolkit2 und den Framework-Versionen ist nachfolgend aufgeführt:
| RKNN-Toolkit2 | Caffe | TensorFlow | TF Lite | ONNX | DarkNet | PyTorch |
|---|---|---|---|---|---|---|
| 1.4.0 1.4.2 1.5.0 1.5.2 |
1.0 | 1.12.0 ~2.8.0 |
Schema- Version=3 |
1.7.0 ~1.10.0 |
Commit-ID: 810d7f7 |
1.6.0 ~1.10.1 |
| 1.6.0 | 1.0 | 1.12.0 ~2.14.0 |
Schema- Version=3 |
1.7.0 ~1.14.0 |
Commit-ID: 810d7f7 |
1.6.0 ~1.13.1 |
| 2.0.0 2.1.0 2.2.0 |
1.0 | 1.12.0 ~2.14.0 |
Schema- Version=3 |
1.7.0 ~1.14.1 |
Commit-ID: 810d7f7 |
1.10.1 ~2.1.0 |
| 2.3.0 ~2.5.0 |
1.0 | 1.12.0 ~2.14.0 |
Schema- Version=3 |
1.7.0 ~1.17.0 |
Commit-ID: 810d7f7 |
1.10.1 ~2.4.0 |
Hinweise:
- Aufgrund der TensorFlow-Versionskompatibilität werden theoretisch auch pb-Dateien unterstützt, die vor TensorFlow 1.12.0 exportiert wurden. Einzelheiten zur Kompatibilität verschiedener Versionen stehen in der offiziellen Dokumentation: https://www.tensorflow.org/guide/versions
- Die Schemas verschiedener TFLite-Versionen sind nicht miteinander kompatibel. Unterscheidet sich das Schema eines exportierten TFLite-Modells von der durch RKNN-Toolkit2 verwendeten Schemaversion, kann das Laden fehlschlagen.
- Das Caffe-Protokoll von RKNN-Toolkit2 basiert mit Änderungen auf dem offiziellen Berkeley-Protokoll. Quelle: https://github.com/BVLC/caffe/tree/master/src/caffe/proto, Commit 828dd10. RKNN-Toolkit2 ergänzt darauf aufbauend einige Operatoren.
- Die Zuordnung zwischen ONNX-Releases, opset- und IR-Versionen ist in der onnxruntime-Dokumentation beschrieben: https://github.com/microsoft/onnxruntime/blob/v1.10.0/docs/Versioning.md
- Offizielles DarkNet-Repository: https://github.com/pjreddie/darknet. Die Konvertierungsregeln des Dokumentstands beruhen auf dessen letztem master-Commit 810d7f7; dies ist keine Aussage über den heutigen HEAD.
- Beim Laden eines PyTorch-Modells (torchscript) wird dieselbe PyTorch-Version für Modellexport und RKNN-Konvertierung empfohlen. Unterschiedliche Versionen können zum Konvertierungsfehler führen.
- Die ARM64-Version unterstützt laut Dokumentstand nur PyTorch und ONNX; andere Frameworks werden dort nicht unterstützt.
2 RKNN-Objekt und Ressourcenlebenszyklus
Diese Funktionsgruppe initialisiert das RKNN-Objekt und gibt es frei. Vor der Verwendung sämtlicher RKNN-Toolkit2-APIs RKNN() aufrufen; nach Abschluss der Aufgabe das Objekt mit release() freigeben.
Bei der Initialisierung steuern verbose und verbose_file die ausführliche Protokollierung etwa beim Laden und Erstellen von Modellen. verbose hat den Typ bool: True aktiviert detaillierte Ausgaben von RKNN-Toolkit2. verbose_file ist eine Zeichenfolge; enthält sie einen Dateipfad, wird das Protokoll dort gespeichert. Auch dafür muss verbose auf True stehen.
Beispielcode:
# Print the detailed log information.
rknn = RKNN(verbose=True)
...
rknn.release()
Quelle und redaktionelle Hinweise
Technische Kapitel sind nach Anwendung aufgeteilt. Code, Bezeichner und Parameter bleiben erhalten. Chinesisch folgt der chinesischen Quelle, Englisch, Russisch und Deutsch der englischen. Für Kapitel ohne Abbildungen wurden keine erfundenen Bilder hinzugefügt.
Redaktionelle Hinweise: Protokolle mit SDK 1.5.2 bleiben historische Beispiele, keine V2.5.0-Messungen. Die Python-Zelle für Ubuntu20.04 unterscheidet sich: chinesisch 3.8/3.9, englisch 3.8/3.8; ebenso für Debian11; im ARM64-Abschnitt ist Debian weiterhin als x64 bezeichnet. Quellwerte bleiben erhalten; tatsächliches Installationspaket prüfen. V2.5.0 ergänzt C++ codegen und präzisiert Quantisierung und Speicherstrategien; alte Parameter ersetzen nicht die neue Quelle.
