Свои нейросети на NPU
Пионер Мини 2 выполняет инференс нейросетей прямо на борту — на NPU процессора RK3576 через библиотеку pioneer_rknn. Можно использовать готовые модели или обучить и зарегистрировать собственную. Этот урок описывает полный маршрут: от обучения до запуска на борту.
Маршрут модели
обучение (PyTorch/Ultralytics)
│
▼
экспорт в ONNX (opset=19)
│
▼
конвертация в RKNN (rknn-toolkit2, x86 Linux)
│
▼
загрузка на борт (сервис «Модели ИИ», :7777)
│
▼
инференс (pioneer_rknn, NPU)1. Обучение
Модель обучается на компьютере (не на борту). Для детекции удобно использовать Ultralytics YOLO; для поз — YOLO-pose. Рекомендованный набор библиотек для обучения приведён в уроке «Быстрый старт» (раздел «Модели ИИ»).
Поддерживаемые на борту архитектуры (по данным model-registry):
| Архитектура | Задача |
|---|---|
yolov8 | Детекция объектов |
yolov8-pose | Оценка позы (скелет) |
PP-OCRv5_mobile_det / PP-OCRv5_mobile_rec | Распознавание текста (детекция и распознавание) |
custom | Своя архитектура (без авто-постобработки) |
2. Экспорт в ONNX (opset=19)
Экспортируйте модель в ONNX с opset=19 — именно этот вариант принимает сервис загрузки моделей на борту. Пример для Ultralytics:
model.export(format="onnx", opset=19, simplify=True, imgsz=640)
3. Конвертация в RKNN
RKNN-модель собирается утилитой rknn-toolkit2 на компьютере под Linux x86_64. На борту установлена только rknn-toolkit-lite2 (инференс) и librknnrt — конвертация на коптере не выполняется. Для конвертации нужны целевая платформа RK3576 и калибровочный датасет (для квантования).
from rknn.api import RKNN
rknn = RKNN()
rknn.config(target_platform="rk3576")
rknn.load_onnx(model="best.onnx")
rknn.build(do_quantization=True, dataset="dataset.txt")
rknn.export_rknn("best.rknn")
4. Загрузка и регистрация на борту
- Подключитесь к коптеру и откройте сервис «Модели ИИ».
- Загрузите
.rknn-файл кнопкойЗагрузить модель. - Укажите архитектуру (
yolov8,yolov8-pose,PP-OCRv5_*илиcustom) и описание.
Реестр хранится в /usr/local/bin/model-registry/models, список — в list.json (см. аудит системы).
5. Запуск на борту
Инференс выполняется классом Yolo из pioneer_rknn (а также YoloPose, PaddleOCR, ModelRegistry). Полный разбор — в уроке «Нейросети (RKNN)» и справочнике.
from pioneer_rknn import Yolo
from pioneer_sdk2 import Camera, CameraType
yolo = Yolo(model_name="yolov8n")
cam = Camera(CameraType.MAIN)
frame = cam.get_cv_frame()
boxes, scores, classes = yolo.inference(frame)
Практические советы
- Начинайте с готовой
yolov8nи лишь затем обучайте свою — так проще проверить весь маршрут. - Качество модели на NPU зависит от квантования: подбирайте репрезентативный калибровочный набор.
- Проверяйте входной размер (
imgsz) — он должен совпадать с тем, что ожидает постобработка. - Нагрузка NPU повышает температуру борта — следите за термозонами (см. Диагностику).
См. также
- Нейросети (RKNN).
- Быстрый старт — сервис «Модели ИИ».
- Исследование системы — версии RKNN и список моделей.