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
4 Laden von Modellen
RKNN-Toolkit2 unterstützt das Laden noch nicht in RKNN umgewandelter Modelle aus Caffe, TensorFlow, TensorFlow Lite, ONNX, DarkNet und PyTorch. Je Format bestehen unterschiedliche, nachfolgend beschriebene Schnittstellen.
4.1 Laden von Modellen Caffe
| API | load_caffe |
|---|---|
| Beschreibung | Caffe-Modell laden. (Unter ARM64 nicht verfügbar.) |
| Parameter | model: Pfad zur Caffe-Modellstrukturdatei (Endung “.prototxt”). |
| Parameter | blobs: Pfad zur binären Caffe-Modelldatei (Endung “.caffemodel”). |
| Parameter | input_name: Bei mehreren Eingaben des Caffe-Modells kann hier die Reihenfolge der Eingabeschichtnamen festgelegt werden, beispielsweise [‘input1’,’input2’,’input3’]. Die Namen müssen mit den Modelleingaben übereinstimmen. Standardwert: None; die Reihenfolge wird dann automatisch aus der Caffe-Modelldatei mit Endung .prototxt übernommen. |
| Rückgabewert | 0: Import erfolgreich. |
| Rückgabewert | -1: Import fehlgeschlagen. |
Beispielcode:
# Load the mobilenet_v2 Caffe model in the current path
ret = rknn.load_caffe(model='./mobilenet_v2.prototxt',
blobs='./mobilenet_v2.caffemodel')
4.2 Laden von Modellen TensorFlow
| API | load_tensorflow |
|---|---|
| Beschreibung | TensorFlow-Modell laden. (Unter ARM64 nicht verfügbar.) |
| Parameter | tf_pb: Pfad zur TensorFlow-Modelldatei (Endung “.pb”). |
| Parameter | inputs: Eingabeknoten des Modells (Operandennamen); mehrere Knoten werden unterstützt. Alle Zeichenfolgen der Eingabeknoten werden in einer Liste abgelegt. |
| Parameter | input_size_list: Formen der Eingabeknoten, gemeinsam in einer Liste. Für das Modell ssd_mobilenet_v1 muss input_size_list beispielsweise auf [[1,300,300,3]] gesetzt werden. |
| Parameter | outputs: Ausgabeknoten des Modells (Operandennamen); mehrere Knoten werden unterstützt. Alle Ausgabeknoten werden in einer Liste abgelegt. |
| Parameter | input_is_nchw: Gibt an, ob die Modelleingabe bereits im NCHW-Layout vorliegt. Standardwert: False; das Standardlayout ist damit NHWC. |
| Rückgabewert | 0: Import erfolgreich. |
| Rückgabewert | -1: Import fehlgeschlagen. |
Beispielcode:
# Load ssd_mobilenet_v1_coco_2017_11_17 TF model in the current path
ret = rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v1_coco_2017_11_17.pb',
inputs=['Preprocessor/sub'],
outputs=['concat', 'concat_1'],
input_size_list=[[300, 300, 3]])
4.3 Laden von Modellen TensorFlow Lite
| API | load_tflite |
|---|---|
| Beschreibung | TensorFlow-Lite-Modell laden. (Unter ARM64 nicht verfügbar.) |
| Parameter | model: Pfad zur TensorFlow-Lite-Modelldatei (Endung “.tflite”). |
| Parameter | input_is_nchw: Gibt an, ob die Modelleingabe bereits im NCHW-Layout vorliegt. Standardwert: False; das Standardlayout ist damit NHWC. |
| Rückgabewert | 0: Import erfolgreich. |
| Rückgabewert | -1: Import fehlgeschlagen. |
Beispielcode:
# Load the mobilenet_v1 TF-Lite model in the current path
ret = rknn.load_tflite(model='./mobilenet_v1.tflite')
4.4 Laden von Modellen ONNX
| API | load_onnx |
|---|---|
| Beschreibung | ONNX-Modell laden. |
| Parameter | model: Pfad zur ONNX-Modelldatei (Endung “.onnx”). |
| Parameter | inputs: Eingabeknoten des Modells (Operandennamen); mehrere Knoten werden unterstützt. Alle Zeichenfolgen der Eingabeknoten werden in einer Liste abgelegt. Standardwert: None; die Knoten werden aus dem Modell übernommen. |
| Parameter | input_size_list: Formen der Eingabeknoten, gemeinsam in einer Liste. Wenn inputs gesetzt wird, muss auch input_size_list gesetzt werden. Standardwert: None. |
| Parameter | input_initial_val: Anfangswerte der Modelleingaben als ndarray-Liste. Standardwert: None. Hauptsächlich dazu gedacht, einige Eingaben als Konstanten festzulegen. Eingaben, die nicht konstant sein sollen, können auf None gesetzt werden, etwa [None, np.array([1])]. |
| Parameter | outputs: Ausgabeknoten des Modells (Operandennamen); mehrere Knoten werden unterstützt. Alle Ausgabeknoten werden in einer Liste abgelegt. Standardwert: None; sie werden aus dem Modell übernommen. |
| Rückgabewert | 0: Import erfolgreich. |
| Rückgabewert | -1: Import fehlgeschlagen. |
Beispielcode:
# Load the arcface onnx model in the current path
ret = rknn.load_onnx(model='./arcface.onnx')
4.5 Laden von Modellen DarkNet
| API | load_darknet |
|---|---|
| Beschreibung | DarkNet-Modell laden. (Unter ARM64 nicht verfügbar.) |
| Parameter | model: Pfad zur DarkNet-Modellstrukturdatei (Endung “.cfg”). |
| Parameter | weight: Pfad zur Gewichtsdatei (Endung “.weight”). |
| Rückgabewert | 0: Import erfolgreich. |
| Rückgabewert | -1: Import fehlgeschlagen. |
Beispielcode:
# Load the yolov3-tiny DarkNet model in the current path
ret = rknn.load_darknet(model='./yolov3-tiny.cfg',
weight= './yolov3.weights')
4.6 Laden von Modellen PyTorch
| API | load_pytorch |
|---|---|
| Beschreibung | PyTorch-Modell laden. Modelle mit quantisierungsbewusstem Training (Quantization Aware Training, QAT) werden unterstützt; dafür muss torch auf Version ‘1.9.0’ oder höher aktualisiert werden. |
| Parameter | model: Pfad zur PyTorch-Modellstrukturdatei (Endung “.pt”); erforderlich ist ein Modell im torchscript-Format. |
| Parameter | input_size_list: Formen der Eingabeknoten, gemeinsam in einer Liste. |
| Rückgabewert | 0: Import erfolgreich. |
| Rückgabewert | -1: Import fehlgeschlagen. |
Beispielcode:
# Load the PyTorch model resnet18 in the current path
ret = rknn.load_pytorch(model='./resnet18.pt',
input_size_list=[[1,3,224,224]])
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.
