Улучшаем систему видеонаблюдения, ч.3
Распознавание на python работало хорошо, но хотелось еще как-то это ускорить.
Спрашивается: если есть некоторая оболочка, позволяющая запустить модель на python - может быть есть оболочка позволяющая запустить ее на C/C++?
И такая нашлась: https://github.com/Geekgineer/YOLOs-CPP
Копируем:
git clone https://github.com/Geekgineer/YOLOs-CPP
cd YOLOs-CPP
Нам нужны дополнительно некоторые пакеты:
apt install curl libopencv-dev cmake g++
В файле build.sh нужно найти ONNXRUNTIME_VERSION - а потом посмотреть, на что реально она влияет. Описание процесса установки уже отстало от жизни, поэтому придётся ручками.
Скрипт должен скачать соответствующий версии файл - но там, откуда он его скачивает, версия более новая, к тому же скрипт желает загрузить версию для arm64, а там - aarch64.
В общем, вот это надо выполнить вручную: скачать, распаковать, сделать симлинк с нужным названием, закомментировать уже выполненное
ln -s onnxruntime-linux-aarch64-1.20.1 onnxruntime-linux-arm64-1.20.1
В этом пакете лежат include-файлы и so-библиотеки, нужные для сборки и работы.
Библиотеки *so имеет смысл скопировать в /usr/local/lib/
В каталоге YOLOs-CPP/src - три файла-примера использования детектора: для изображений, для видеофайлов и для видеопотока, например с камеры.
Каталог models содержит модели yolo в формате onnx, а include - *.hpp-файлы для работы с ними.
В файлах примеров необходимо правильно выбрать нужную версию модели - если используем yolo11 - то нужны будут YOLO11.hpp и указатели типа YOLO11* в коде *.cpp
Читать далее