Справочный материал RKNN2 V2.5.0 для RV1103/RV1103B/RV1106/RV1106B с соответствующими SDK платы, драйвером RKNPU2 и librknnmrt.so. Совместимая плата ArmSoM не подтверждена. Журнал Linux 5.10.160 и результаты инференса — примеры из источника, а не испытания ArmSoM. Питание, подключение и драйверы сверяйте с BSP конкретной платы.
Источник: локальные китайский и английский PDF V2.5.0. Китайский использует свой текст и рисунки, английский, русский и немецкий — английский источник. Все технические разделы, команды и таблицы сохранены; восстановлены переносы PDF и отступы деревьев каталогов. Старая версия драйвера в примере журнала не является рекомендованной: рекомендация приведена в тексте. Загрузки и установки pip без фиксации версии сверяйте с SDK.
RKNN на RV1103/RV1106, часть 1: развёртывание, платформы и репозитории
RKNN на RV1103/RV1106, часть 2: подключение и проверка оборудования
RKNN на RV1103/RV1106, часть 3: среда ПК и Mini Runtime
RKNN на RV1103/RV1106, часть 4: YOLOv5, Python и развёртывание C
RKNN на RV1103/RV1106, часть 5: Docker, диагностика и документация
1. Перед началом работы
Руководство описывает кратчайший путь к первому запуску RKNN SDK на RV1103/RV1103B/RV1106/RV1106B: подключение оборудования, проверку среды, преобразование модели, отладку с подключённой платой и развёртывание C/C++ на плате.
Полный процесс разработки, преобразование и квантование моделей, установку среды и систематическое устранение ошибок см. в RKNN2_SDK_Development_Guide. Python API RKNN-Toolkit2 описаны в RKNN2_Toolkit_Python_API_Reference, Python API RKNN-Toolkit-Lite2 — в RKNN2_Toolkit_Lite_Python_API_Reference. C API на плате и интерфейсы RKNPU2 Mini Runtime (librknnmrt.so) описаны в RKNN2_Runtime_C_API_Reference.
1.1 Цели руководства
После выполнения руководства вы сможете:
-
Убедиться, что компьютер разработки и плата подключены правильно.
-
Установить и проверить среду разработки RKNN-Toolkit2.
-
Проверить или обновить RKNPU2 Mini Runtime (librknnmrt.so) и rknn_server на плате.
-
Загрузить модель YOLOv5 через RKNN Model Zoo и преобразовать её в RKNN.
-
Выполнить инференс на плате с помощью RKNN Python Demo.
-
Собрать и запустить RKNN C Demo на плате и проверить результат.
1.2 Цепочка развёртывания RKNN SDK
Первый запуск на RV1103/RV1103B/RV1106/RV1106B в основном использует инструменты разработки на компьютере и среду выполнения на плате.
| Компонент | Расположение | Назначение |
|---|---|---|
| RKNN-Toolkit2 | Компьютер | Преобразует исходные модели, например ONNX, в RKNN и поддерживает отладку с подключённой платой |
| RKNN Model Zoo | Компьютер | Примеры преобразования моделей, Python Demo и C/C++ Demo |
| rknn_server | Плата | Обрабатывает запросы инференса, поступающие от компьютера через USB |
| RKNPU2 Mini Runtime (librknnmrt.so) | Плата | Загружает модели RKNN и вызывает NPU для инференса |
Различия между RKNPU2 Mini Runtime и RKNPU2 Runtime:
| Параметр | RKNPU2 Mini Runtime | RKNPU2 Runtime |
|---|---|---|
| Библиотека | librknnmrt.so | librknnrt.so |
| Назначение | Сокращённый Runtime для платформ с ограниченными ресурсами, таких как RV1103/RV1103B/RV1106/RV1106B | Стандартный RKNPU2 Runtime |
| Применимость к руководству | Применим: далее библиотекой на плате называется librknnmrt.so | Не применим к примерам. Не заменяйте librknnmrt.so на librknnrt.so |
Далее под RKNPU2 Mini Runtime понимается именно библиотека librknnmrt.so на плате. За исключением этого сравнения двух вариантов, общее название RKNPU2 Runtime для библиотеки платы не используется, чтобы не путать её с librknnrt.so.
Рекомендуемая последовательность первого запуска:
-
Подключить плату и убедиться, что она отображается в adb devices.
-
Установить RKNN-Toolkit2 и проверить импорт.
-
Проверить драйвер RKNPU2, Mini Runtime и rknn_server.
-
Загрузить пример YOLOv5 и преобразовать модель в RKNN.
-
Сначала запустить RKNN Python Demo, чтобы проверить преобразование модели и канал отладки подключённой платы.
-
Собрать, передать и запустить RKNN C Demo для проверки развёртывания на плате.
1.3 Поддерживаемые платформы и требования к версиям
Руководство поддерживает следующие платформы:
| Платформа | Поддержка |
|---|---|
| RV1103 | Поддерживается |
| RV1103B | Поддерживается |
| RV1106 | Поддерживается |
| RV1106B | Поддерживается |
Примеры на компьютере разработки основаны на Ubuntu 18.04 / Ubuntu 20.04 / Ubuntu 22.04. Для RKNN-Toolkit2 рекомендуется Python 3.8.
Примечание: модели RKNN для RV1103/RV1106 нельзя использовать совместно с RV1103B/RV1106B. При преобразовании выбирайте правильный параметр платформы для фактической платы.
1.4 Выбор типа примера
Во всём процессе первого запуска используется пример YOLOv5 из RKNN Model Zoo.
| Пример | Назначение | Каталог Model Zoo |
|---|---|---|
| YOLOv5 Python Demo | Преобразование модели и проверка инференса с подключённой платой | examples/yolov5/python |
| YOLOv5 C Demo | Проверка компиляции C/C++ и развёртывания на плате | examples/yolov5/cpp |
Python Demo и C Demo используют одну и ту же ONNX-модель YOLOv5 и одну преобразованную модель RKNN. Поэтому достаточно загрузить и преобразовать модель один раз.
1.5 Получение SDK и связанных репозиториев
Рекомендуется создать отдельный каталог для репозиториев RKNN, например Projects, и разместить в нём RKNN-Toolkit2 и RKNN Model Zoo.
# Create the Projects folder
mkdir Projects
# Switch to this directory
cd Projects
# Download the RKNN-Toolkit2 repository
git clone https://github.com/airockchip/rknn-toolkit2.git --depth 1
# Download the RKNN Model Zoo repository
git clone https://github.com/airockchip/rknn_model_zoo.git --depth 1
Примечание: –depth 1 клонирует только последний коммит. Если git clone не работает, можно загрузить архив напрямую с GitHub и распаковать его в этот каталог.
Структура каталогов по умолчанию в следующих примерах:
Projects
├── rknn-toolkit2
│ ├── doc
│ ├── rknn-toolkit2
│ │ ├── packages
│ │ ├── docker
│ │ └── ...
│ ├── rknpu2
│ │ ├── runtime
│ │ └── ...
│ └── ...
└── rknn_model_zoo
├── datasets
├── examples
└── ...
