Интеграция нейронных сетей в 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

Если вы добавляете свою модель:

  1. Конвертируете .onnx.rknn (см. раздел про скрипт ниже).

  2. Кладёте .rknn в папку models/.

  3. Обновляете путь в 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

results matching ""

    No results matching ""