Интеграция нейронных сетей в Technic
Для интеграции нейронных сетей в Technic необходимо веса модели конвертировать в формат .rknn, уть к пакету:
technic_ws/src/yolo_face
Внутри находятся основные каталоги:
config/ launch/ models/ scripts/
1. Папка config/
Здесь хранятся файлы конфигурации.
Главный файл:
config/params.yaml
В params.yaml указываются:
Общие параметры модели
размер входного изображения (например,
input_width,input_height);порог уверенности (
conf_threshold);
Путь к модели для NPU
Например:model_path: $(find yolo_face)/models/yolov8n-face.rknnЗдесь указывается относительный путь до .rknn-файла, который лежит в папке
models.
2. Папка models/
Здесь лежат готовые скомпилированные модели для Rockchip NPU:
models/*.rknn
Особенности:
Расширение
.rknn— это формат, который понимает SDK/рантайм Rockchip RKNN.Такие модели выполняются на NPU, а не на CPU, что:
ускоряет инференс (особенно на видео/камере в реальном времени),
разгружает CPU для других задач (ROS-нод, навигации и т.п.).
Примеры файлов (пример):
`models/yolov8n-face.rknn
Если вы добавляете свою модель:
Конвертируете
.onnx→.rknn(см. раздел про скрипт ниже).Кладёте
.rknnв папкуmodels/.Обновляете путь в
config/params.yaml:model_path: "models/your_model_name.rknn"
3. Папка launch/
Папка для ROS launch-файлов.
Здесь:
.launchфайлы для запуска ноды распознавания лиц, например:запуск ноды, которая использует
.rknnмодель;подхват параметров из
params.yamlчерезrosparamилиyaml-загрузку.
4. Папка scripts/
Здесь лежат:
- Основной скрипт инференса
Конвертация .onnx → .rknn
Чип RK3588 представляет собой мощный ARM-процессор, предназначенный для периферийных вычислений (Edge AI). Ключевой особенностью данной системы-на-чипе (SoC) является наличие встроенного специализированного вычислительного блока — NPU (Neural Processing Unit / Neural-network Processing Unit)
Для эффективной обработки нейронных сетей на RK3588 необходимо использовать NPU. Это обусловлено следующими факторами:
Производительность: NPU обеспечивает высокую скорость инференса (до 6 TOPS), что критически важно для работы моделей в реальном времени (например, для обработки видеопотока с YOLO)
Энергоэффективность: Обработка на NPU потребляет значительно меньше энергии по сравнению с запуском тех же моделей на CPU или GPU.
Разгрузка ядер: Перекладывание задач AI на NPU освобождает ресурсы CPU и GPU для выполнения других прикладных задач.
Однако, для того чтобы модель, обученная на персональном компьютере, «заработала» на NPU чипа RK3588, необходимо преобразовать её веса в проприетарный формат RKNN.
Стандартный фреймворк PyTorch сохраняет обученные модели в формате .pt. NPU Rockchip не может напрямую интерпретировать этот формат. Процесс преобразования включает два основных этапа и требует специального инструментария от Rockchip
Этап 1: Конвертация .pt в .onnx
Первым шагом является преобразование модели YOLO в промежуточный формат ONNX (Open Neural Network Exchange). Это универсальный формат, используемый для переноса моделей между различными фреймворками. Этот шаг можно выполнить стандартными средствами библиотеки ultralytics
Этап 2: Конвертация .onnx в .rknn
На этом этапе происходит компиляция модели для конкретного чипа (RK3588) с использованием набора инструментов RKNN-Toolkit2. Инструмент оптимизирует модель, применяет квантизацию (например, преобразование весов из float32 в int8 для ускорения) и генерирует итоговый файл .rknn
3. Настройка среды конвертации (Linux + RKNN-Toolkit2)
Инструмент RKNN-Toolkit2 официально поддерживается только в среде Linux (рекомендуются дистрибутивы Ubuntu 20.04/22.04/24.04). Для выполнения конвертации необходимо установить его на хост-машину (ноутбук или ПК с Linux).
Ниже представлено пошаговое руководство по установке необходимого окружения.
Установите Ubuntu 22.04 или 24.04 на ноутбук
Рекомендуется использовать виртуальное окружение venv для изоляции зависимостей
sudo apt update
sudo apt install python3-pip python3-venv
mkdir ~/rknn_env && cd ~/rknn_env
python3 -m venv .
source bin/activate
Скачайте и установите пакеты `rknn-toolkit2`.
Обратите внимание, что версия Python должна совпадать с версией вашего окружения (например, cp310 для Python 3.10, cp312 для Python 3.12)
pip install --upgrade pip
pip install opencv-python
pip install ultralytics
###### Установка самого RKNN-Toolkit2 (файл нужно скачать с GitHub Rockchip или использовать pip)
Пример:
pip install rknn_toolkit2-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
_Примечание: Точные ссылки на файлы .whl и requirements.txt рекомендуется брать из официального репозитория airockchip/rknn-toolkit2 на GitHub, так как версии часто обновляются
После настройки окружения используйте команду в терминале для конвертации:
yolo export model=ваша_модель.pt format=rknn name=rk3588
Требования к окружению:
Установка актуальной версии Ultralytics и установка RKNN Toolkit (необходим для экспорта)
pip install --upgrade ultralytics
pip install rknn-toolkit2