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

Здесь лежат:

  • Основные скрипты инференса (например, yolo_face_node.py, infer.py и т.п.).

  • Скрипт конвертации модели из .onnx в .rknn.

Скрипт конвертации .onnx.rknn

В папке scripts есть файл/скрипт, который:

  1. Загружает модель формата ONNX.

  2. Использует RKNN Toolkit (SDK от Rockchip) для:

    • построения графа под конкретный чип (RKNN-платформа),

    • квантизации (при необходимости),

    • сохранения готовой модели в формате .rknn.

Типичный общий сценарий (пример, который можно описать в доке):

  1. Скопировать/подготовить .onnx модель, например:

    technic_ws/src/yolo_face/models/yolo_face.onnx

    или оставить в scripts/, как удобнее, главное — правильно указать путь в скрипте.

  2. Запустить скрипт конвертации (имя — примерное, подставьте реальное):

    cd technic_ws/src/yolo_face/scripts python3 convert_onnx_to_rknn.py --onnx ../models/yolo_face.onnx --out ../models/yolo_face.rknn

  3. После успешной конвертации:

    • В models/ появится yolo_face.rknn.

    • В config/params.yaml прописать:

      model_path: "models/yolo_face.rknn"

  4. Теперь при запуске ноды/launch-файла будет использоваться NPU-модель.

Внутри самого конвертационного скрипта обычно:

  • Импортируется rknn.api.RKNN.

  • Указываются:

    • платформа (rk3566, rk3588 и т.п.);

    • режим квантизации (если нужен INT8, то нужны датасеты для калибровки);

    • параметры входного тензора (размер, формат, mean/std).

results matching ""

    No results matching ""