Rockchip · AI & Linux Hub

AI-инференс

RKNN-Toolkit2 Python API V2.5.0 — Загрузка Caffe, TensorFlow, ONNX и PyTorch

RKNN-Toolkit2 Python API V2.5.0 — Загрузка Caffe, TensorFlow, ONNX и PyTorch | Полные параметры, примеры и ограничения платформ

· ArmSoM · 7 мин чтения

Платформа и источник

Статья подготовлена по PDF производителя RKNN V2.5.0 и относится только к перечисленным в нём чипам и интерфейсам. Для платы ArmSoM сначала проверьте SoC, драйвер NPU, Toolkit/Runtime, SDK/BSP и версию ядра. Проверки на оборудовании ArmSoM не проводились; примеры и измерения оригинала не являются тестами ArmSoM.

Навигация по серии

4 Загрузка модели

RKNN-Toolkit2 поддерживает загрузку исходных моделей Caffe, TensorFlow, TensorFlow Lite, ONNX, DarkNet и PyTorch, ещё не преобразованных в RKNN. Для разных форматов используются разные интерфейсы, описанные ниже.

4.1 Загрузка модели Caffe

API load_caffe
Описание Загрузить модель Caffe. (Недоступно на ARM64.)
Параметр model: Путь к файлу структуры модели Caffe (суффикс “.prototxt”).
Параметр blobs: Путь к файлу двоичных данных модели Caffe (суффикс “.caffemodel”).
Параметр input_name: Для модели Caffe с несколькими входами этим параметром можно задать порядок имён входных слоёв, например [‘input1’,’input2’,’input3’]. Имена должны совпадать с именами входов модели. По умолчанию None: порядок автоматически определяется файлом модели Caffe с суффиксом .prototxt.
Возвращаемое значение 0: Импорт выполнен успешно.
Возвращаемое значение -1: Ошибка импорта.

Пример кода:

# Load the mobilenet_v2 Caffe model in the current path
ret = rknn.load_caffe(model='./mobilenet_v2.prototxt',
                     blobs='./mobilenet_v2.caffemodel')

4.2 Загрузка модели TensorFlow

API load_tensorflow
Описание Загрузить модель TensorFlow. (Недоступно на ARM64.)
Параметр tf_pb: Путь к файлу модели TensorFlow (суффикс “.pb”).
Параметр inputs: Входные узлы модели (имена операндов); поддерживается несколько узлов. Все строки имён входных узлов помещаются в список.
Параметр input_size_list: Формы входных узлов, все формы помещаются в список. Например, для ssd_mobilenet_v1 параметр input_size_list должен быть [[1,300,300,3]].
Параметр outputs: Выходные узлы модели (имена операндов); поддерживается несколько узлов. Все выходные узлы помещаются в список.
Параметр input_is_nchw: Имеет ли вход модели уже раскладку NCHW. По умолчанию False, то есть исходная раскладка NHWC.
Возвращаемое значение 0: Импорт выполнен успешно.
Возвращаемое значение -1: Ошибка импорта.

Пример кода:

# 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 Загрузка модели TensorFlow Lite

API load_tflite
Описание Загрузить модель TensorFlow Lite. (Недоступно на ARM64.)
Параметр model: Путь к файлу модели TensorFlow Lite (суффикс “.tflite”).
Параметр input_is_nchw: Имеет ли вход модели уже раскладку NCHW. По умолчанию False, то есть исходная раскладка NHWC.
Возвращаемое значение 0: Импорт выполнен успешно.
Возвращаемое значение -1: Ошибка импорта.

Пример кода:

# Load the mobilenet_v1 TF-Lite model in the current path
ret = rknn.load_tflite(model='./mobilenet_v1.tflite')

4.4 Загрузка модели ONNX

API load_onnx
Описание Загрузить модель ONNX.
Параметр model: Путь к файлу модели ONNX (суффикс “.onnx”).
Параметр inputs: Входные узлы модели (имена операндов); поддерживается несколько узлов. Все строки имён входных узлов помещаются в список. По умолчанию None: берутся из модели.
Параметр input_size_list: Формы входных узлов, все формы помещаются в список. Если задан inputs, необходимо задать и input_size_list. По умолчанию None.
Параметр input_initial_val: Начальные значения входов модели в формате списка ndarray. По умолчанию None.
Используется главным образом для фиксации некоторых входов как констант. Для входов, которые не должны быть константами, задаётся None, например [None, np.array([1])].
Параметр outputs: Выходные узлы модели (имена операндов); поддерживается несколько узлов. Все выходные узлы помещаются в список. По умолчанию None: берутся из модели.
Возвращаемое значение 0: Импорт выполнен успешно.
Возвращаемое значение -1: Ошибка импорта.

Пример кода:

# Load the arcface onnx model in the current path
ret = rknn.load_onnx(model='./arcface.onnx')

4.5 Загрузка модели DarkNet

API load_darknet
Описание Загрузить модель DarkNet. (Недоступно на ARM64.)
Параметр model: Путь к файлу структуры модели DarkNet (суффикс “.cfg”).
Параметр weight: Путь к файлу весов (суффикс “.weight”).
Возвращаемое значение 0: Импорт выполнен успешно.
Возвращаемое значение -1: Ошибка импорта.

Пример кода:

# Load the yolov3-tiny DarkNet model in the current path
ret = rknn.load_darknet(model='./yolov3-tiny.cfg',
                       weight= './yolov3.weights')

4.6 Загрузка модели PyTorch

API load_pytorch
Описание Загрузить модель PyTorch.
Поддерживается модель Quantization Aware Training (QAT), но для этого нужно обновить torch до версии ‘1.9.0’ или выше.
Параметр model: Путь к файлу структуры модели PyTorch (суффикс “.pt”); модель должна быть в формате torchscript.
Параметр input_size_list: Формы входных узлов, все формы помещаются в список.
Возвращаемое значение 0: Импорт выполнен успешно.
Возвращаемое значение -1: Ошибка импорта.

Пример кода:

# Load the PyTorch model resnet18 in the current path
ret = rknn.load_pytorch(model='./resnet18.pt',
                       input_size_list=[[1,3,224,224]])

Источник и редакционные примечания

Технические главы разделены по назначению. Код, идентификаторы и параметры сохранены. Китайская версия следует китайскому оригиналу; английская, русская и немецкая — английскому. В главы без иллюстраций вымышленные изображения не добавлены.

Примечания: журналы с SDK 1.5.2 сохранены как исторические примеры, а не измерения V2.5.0. Ячейка Python для Ubuntu20.04 различается: китайский текст 3.8/3.9, английский 3.8/3.8; аналогично для Debian11; в разделе ARM64 Debian всё ещё помечен x64. Значения сохранены; проверяйте фактический установочный пакет. V2.5.0 добавляет главу C++ codegen и уточняет квантование и стратегии памяти; параметры старой версии не подменяют новый источник.

RKNN-Toolkit2 · ArmSoM documentation

Другие статьи по теме → · Учебные маршруты →