tgoop.com/architect_says/500
Last Update:
Об мышиное зрение 2 /памятка для себя самого/
Так как не на каждое изделие можно взгромоздить системный блок, а распознавание картинки требует сложных вычислений, приходится выбирать что-то более портативное. Мой выбор пал пока на творения китайской Rockchip серии RK35xx, оснащенные нейроускорителем. Вариантов исполнения модуля доступно несколько, мне приглянулся самый простой Orange Pi.
Многочисленные тесты показывают на модельке YOLO v5 производительность вывода на кадре 640х640 пикселей такую:
* i7 7700k - 120ms
* i5 13600k - 80ms (npu)
* rk3566 - 100ms
> ПРИЕМЛЕМО <
Ниже пишу шаги, как дойти от готовой модели к работающей системе. Тренировку модели оставим за скобками. Я использовал Python 3.10.15 для всего.
1. Китайцы из Rockchip немного доработали модель YOLO, так что её input/output форматы не совместимы с оригинальной моделью. Причина написана в пункте 2. Код для тренировки модели, а так же код для детекции надо брать в репозитории самого Rockchip, а не у Ultralytics: https://github.com/airockchip/yolov5
2. Если вы сами тренировали модель на своих данных, предстоит её экспортировать из PyTorch в Onnx. Тут надо сделать небольшое отступление. Современные модели давно уже не просто матрицы весов, а целые программы для виртуальных машин, со своими байт-кодами. Они могут быть не совместимы между собой, хотя и используют общий базис операторов. Не все операции поддерживаются аппаратно Rockchip, именно для такой оптимизации модель видоизменена. Модели PyTorch (.pt) и вовсе могут включать в себя сериализованные питон-объекты. Чтобы привести модель к каноническому виду, нужен экспорт в какой-то нейтральный формат. Экспорт делается, как указано тут https://github.com/airockchip/yolov5/blob/master/README_rkopt.md Результатом будет модель формата ONNX. Это тоже промежуточный шаг на пути к плате.
3. Для симуляции работы модели на компьютере следует использовать библиотеку https://github.com/airockchip/rknn-toolkit2/tree/master/rknn-toolkit2, а для работы на плате https://github.com/airockchip/rknn-toolkit2/tree/master/rknn-toolkit-lite2
Библиотеки существуют только для Linux. Ubuntu 24 в WSL2 подойдет.
При этом в симуляции работает только ONNX модель, а на плате для использования ускорения только RKNN.
В исходниках можно найти код загрузки ONNX модели и конвертации её на лету в RKNN модель. Также в репозитории можно найти инструкции, как конвертировать ONNX в RKNN запуском скрипта.
4. Остальной код, включая препроцессинг и постпроцессинг изображений, одинаков и для симуляции, и для платы, и взят тут https://github.com/airockchip/rknn-toolkit2/blob/master/rknn-toolkit2/examples/onnx/yolov5/test.py.
После загрузки RKNN в ускоритель можно подавать в неё кадры и получать положительные результаты.
Картинки детектятся, Python круто, Orange Pi 3B тоже хороша.
BY Господин Архитектор
Share with your friend now:
tgoop.com/architect_says/500