coresmith.dev
← Все работы

Продукт компьютерного зрения с AI на устройстве

CV в реальном времени · своё железов работесвоя командав продакшене
Проблема

Детекция и OCR быстрее 100 мс — на плате, которой ещё не существовало.

Продукту нужны были детекция объектов и распознавание текста прямо на устройстве, достаточно быстро, чтобы это ощущалось мгновенным, и на железе достаточно дешёвом для серийного выпуска. Без похода в облако.

И ещё одно ограничение: один и тот же бинарник C++ должен был работать и на компьютере разработчика, и на embedded-плате, иначе скорость итераций рухнула бы.

Подход

Один пайплайн, три движка инференса.

Пайплайн зрения написан один раз — против интерфейса инференса с тремя реализациями: ONNX Runtime для десктопа, RKNN для NPU на устройстве, OpenCV DNN как запасной вариант. Смена движка — правка конфига, а не переписывание.

Кадры не покидают память GPU между захватом и инференсом: GStreamer перемещает их zero-copy, и именно там выигралась большая часть бюджета задержки.

Архитектура

Софт и плата, на которой он работает.

C++17, YOLO для детекции, PP-OCRv4 (DBNet ищет текст, CRNN его читает). Устройство представляется как USB HID, поэтому хосту не нужен драйвер. За ним следит systemd.

Плата тоже наша: 8-слойный PCB вокруг RK3576 с LPDDR4X, разведён в KiCad.

C++17YOLOONNX RuntimeRKNNOpenCV DNNPP-OCRv4GStreamerUSB HIDsystemdRK3576LPDDR4XKiCad
Результат

30 fps, на устройстве, без облака.

30 fpsпайплайн
3движка инференса

Детекция и OCR работают целиком на плате. Тот же бинарник отлаживается на ноутбуке — поэтому продукт вообще дошёл до выпуска.

Нужно что-то похожее?

Начать проект