Интеграция нейронных сетей в 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/
Здесь лежат:
Основные скрипты инференса (например,
yolo_face_node.py,infer.pyи т.п.).Скрипт конвертации модели из
.onnxв.rknn.
Скрипт конвертации .onnx → .rknn
В папке scripts есть файл/скрипт, который:
Загружает модель формата ONNX.
Использует RKNN Toolkit (SDK от Rockchip) для:
построения графа под конкретный чип (RKNN-платформа),
квантизации (при необходимости),
сохранения готовой модели в формате
.rknn.
Типичный общий сценарий (пример, который можно описать в доке):
Скопировать/подготовить
.onnxмодель, например:technic_ws/src/yolo_face/models/yolo_face.onnxили оставить в
scripts/, как удобнее, главное — правильно указать путь в скрипте.Запустить скрипт конвертации (имя — примерное, подставьте реальное):
cd technic_ws/src/yolo_face/scripts python3 convert_onnx_to_rknn.py --onnx ../models/yolo_face.onnx --out ../models/yolo_face.rknnПосле успешной конвертации:
В
models/появитсяyolo_face.rknn.В
config/params.yamlпрописать:model_path: "models/yolo_face.rknn"
Теперь при запуске ноды/launch-файла будет использоваться NPU-модель.
Внутри самого конвертационного скрипта обычно:
Импортируется
rknn.api.RKNN.Указываются:
платформа (
rk3566,rk3588и т.п.);режим квантизации (если нужен INT8, то нужны датасеты для калибровки);
параметры входного тензора (размер, формат, mean/std).