Rockchip · AI & Linux Hub

KI-Inferenz

RKNN-Toolkit2 Python API V2.5.0 — Caffe, TensorFlow, ONNX und PyTorch laden

RKNN-Toolkit2 Python API V2.5.0 — Caffe, TensorFlow, ONNX und PyTorch laden | Vollständige Parameter, Beispiele und Plattformgrenzen

· ArmSoM · 7 Min. Lesezeit

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

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.

RKNN-Toolkit2 · ArmSoM documentation

Dieses Thema entdecken → · Lernpfade →