Платформа и источник
Статья подготовлена по PDF производителя RKNN V2.5.0 и относится только к перечисленным в нём чипам и интерфейсам. Для платы ArmSoM сначала проверьте SoC, драйвер NPU, Toolkit/Runtime, SDK/BSP и версию ядра. Проверки на оборудовании ArmSoM не проводились; примеры и измерения оригинала не являются тестами ArmSoM.
Навигация по серии
- Среда и жизненный цикл объекта
- Конфигурация модели и параметры квантования
- Загрузка Caffe, TensorFlow, ONNX и PyTorch
- Построение, гибридное квантование и экспорт
- Среда выполнения, регистрация операторов и инференс
- Точность, производительность, память и запросы устройств
- Генерация, сборка и запуск примеров C++
1 Требования
1.1 Поддерживаемые модели чипов
RV1103
RV1103B
RV1106
RV1106B
RV1126B
RK2118
RK3562
Серия RK3566
Серия RK3568
Серия RK3576
Серия RK3588
Примечание: далее RK3566 / RK3568 / RK3576 / RK3588 обозначают соответствующие серии RK3566 / RK3568 / RK3576 / RK3588.
1.2 Требования к среде и зависимостям
Рекомендуется следующая среда операционной системы:
| Версия операционной системы | Ubuntu18.04 (x64) |
Ubuntu20.04 (x64) |
Ubuntu22.04 (x64) |
Ubuntu24.04 (x64) |
|---|---|---|---|---|
| Версия Python | 3.6 / 3.7 | 3.8 / 3.8 | 3.10 / 3.11 | 3.12 |
Для ARM64:
| Версия операционной системы | Debian10 (x64) | Debian11 (x64) | Debian12 (x64) |
|---|---|---|---|
| Версия Python | 3.6 / 3.7 | 3.8 / 3.8 | 3.10 / 3.11 / 3.12 |
Примечания:
- Подробные зависимости библиотек Python указаны в doc/requirements*.txt.
- Примеры документа в основном используют Ubuntu 20.04 / Python3.8.
1.3 Поддерживаемые фреймворки глубокого обучения
RKNN-Toolkit2 поддерживает Caffe, TensorFlow, TensorFlow Lite, ONNX, DarkNet и PyTorch.
Соответствие версий RKNN-Toolkit2 и фреймворков приведено ниже:
| 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 |
Версия схемы=3 |
1.7.0 ~1.10.0 |
Идентификатор коммита: 810d7f7 |
1.6.0 ~1.10.1 |
| 1.6.0 | 1.0 | 1.12.0 ~2.14.0 |
Версия схемы=3 |
1.7.0 ~1.14.0 |
Идентификатор коммита: 810d7f7 |
1.6.0 ~1.13.1 |
| 2.0.0 2.1.0 2.2.0 |
1.0 | 1.12.0 ~2.14.0 |
Версия схемы=3 |
1.7.0 ~1.14.1 |
Идентификатор коммита: 810d7f7 |
1.10.1 ~2.1.0 |
| 2.3.0 ~2.5.0 |
1.0 | 1.12.0 ~2.14.0 |
Версия схемы=3 |
1.7.0 ~1.17.0 |
Идентификатор коммита: 810d7f7 |
1.10.1 ~2.4.0 |
Примечания:
- Благодаря совместимости версий TensorFlow теоретически поддерживаются и pb-файлы, экспортированные версиями до TensorFlow 1.12.0. Подробности совместимости разных версий приведены в официальной документации: https://www.tensorflow.org/guide/versions
- Схемы разных версий TFLite несовместимы. Если схема экспортированной модели отличается от версии схемы, используемой RKNN-Toolkit2, загрузка модели может завершиться ошибкой.
- Протокол Caffe в RKNN-Toolkit2 основан на официальном Berkeley-протоколе с модификациями. Источник: https://github.com/BVLC/caffe/tree/master/src/caffe/proto, commit 828dd10. RKNN-Toolkit2 добавляет на этой основе некоторые операторы.
- Соответствие выпусков ONNX версиям opset и IR описано в документации onnxruntime: https://github.com/microsoft/onnxruntime/blob/v1.10.0/docs/Versioning.md
- Официальный репозиторий DarkNet: https://github.com/pjreddie/darknet. Правила преобразования RKNN-Toolkit2 в исходном документе основаны на последнем для его состояния коммите ветки master — 810d7f7; это не утверждение о текущем HEAD.
- При загрузке PyTorch-модели (torchscript) рекомендуется использовать одну и ту же версию PyTorch для экспорта модели и преобразования в RKNN. Различие версий может привести к ошибке преобразования.
- Версия ARM64 поддерживает только PyTorch и ONNX; остальные фреймворки в состоянии источника не поддерживаются.
2 Объект RKNN и жизненный цикл ресурсов
Эта группа интерфейсов создаёт и освобождает объект RKNN. Перед использованием любых API RKNN-Toolkit2 вызовите RKNN(); после завершения задачи освободите объект методом release().
При создании объекта RKNN параметры verbose и verbose_file управляют подробным журналом загрузки и построения модели и других операций. verbose имеет тип bool: при True RKNN-Toolkit2 печатает подробный журнал. verbose_file — строка; если она содержит путь к файлу, журнал записывается туда, причём verbose также должен быть True.
Пример кода:
# Print the detailed log information.
rknn = RKNN(verbose=True)
...
rknn.release()
Источник и редакционные примечания
Технические главы разделены по назначению. Код, идентификаторы и параметры сохранены. Китайская версия следует китайскому оригиналу; английская, русская и немецкая — английскому. В главы без иллюстраций вымышленные изображения не добавлены.
Примечания: журналы с 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 и уточняет квантование и стратегии памяти; параметры старой версии не подменяют новый источник.
