Модуль baetyl-video-infer
Модуль baetyl-video-infer — это официальный модуль BAETYL, который используется для захвата видеокадров и вывода модели искусственного интеллекта (ИИ). Для захвата видеокадров модуль baetyl-video-infer может поддерживать IP-сетевую камеру, USB-камеру и видеофайлы. Поддерживаемые фреймворки глубокого обучения (Deep Learning, DL) и слои синхронизированы с OpenCV. Более подробную информацию можно найти здесь.
Кроме того, модуль baetyl-video-infer тесно интегрирован с другими модулями платформы BAETYL, что позволяет использовать его в пограничных вычислениях ИИ и некоторых отраслевых сценариях. Кроме того, baetyl-video-infer также обеспечивает ускоренную обработку моделей ИИ на основе центрального процессора (CPU) и специального оборудования (например, OpenCL, OpenVINO, INFERENCE_ENGINE).
Сборка программы
Модуль baetyl-video-infer зависит от GoCV. Перед сборкой убедитесь, что GoCV работает правильно.
git clone https://github.com/baetyl/baetyl-video-infer.git
cd baetyl-video-infer
make build # сборка baetyl-video-infer
Создание образа
Как описано выше, модуль baetyl-video-infer теперь может поддерживать CPU и специальное оборудование (Intel GPU, известное как OpenCL) для вывода моделей ИИ. Для CPU baetyl поддерживает платформы Linux-armv7, Linux-arm64, Linux-amd64 и обеспечивает ускоренную обработку моделей благодаря Intel GPU (OpenCL) из фреймворка OpenVINO.
# CPU
make image # создание образа для CPU
# OpenVINO(OpenCL)
make image-openvino # создание образа для OpenVINO
# вывод образов
docker images | grep baetyl/video-infer
# baetyl/video-infer-openvino git-e7ed6d0 4d89e690b226 About an hour ago 2.53GB
# baetyl/video-infer git-e7ed6d0 ccab5f4b07ff 3 hours ago 672MB
Примечание:
— Для OpenVINO (OpenCL) сейчас поддерживается только платформа linux/amd64; — для CPU кросс-компиляция не поддерживается.
Конфигурация
video:
uri: [ОБЯЗАТЕЛЬНО] Путь к файлу видео или адрес камеры.
# Для IP-камеры конфигурация похожа на `rtsp://<имя пользователя>:<пароль>@<ip>:<порт>/Streaming/channels/<номер потока>`
# `<имя пользователя>` и `<пароль>` — элементы аутентификации при входе
# `<ip>` — IP-адрес камеры
# `<порт>` — номер порта RTSP-протокола, значение по умолчанию — 554
# `<номер потока>` — номер канала, если он равен 1, это указывает на то, что захватывается основной поток; если он равен 2, это указывает на то, что захватывается дополнительный поток
# Для USB-камеры конфигурация похожа на «0» (представляет сопоставление устройства `/dev/video0` с контейнером, также должно быть смонтировано на сервисе видеовывода)
# Для файла видео конфигурация похожа на `var/db/baetyl/data/test.mp4`(монтирование тома (хранение файла видео) на сервис видеовывода)
limit:
fps: [ОБЯЗАТЕЛЬНО] Максимальное количество кадров видео, обрабатываемых выводом в секунду. Если видео имеет N кадров в секунду, limit.fps равно M, тогда будет пропущено Ceil(N/M) - 1 кадров.
process:
before: создаёт четырёхмерный большой двоичный объект из изображения. При необходимости изменяет размер и обрезает изображение по центру, вычитает средние значения, масштабирует значения с помощью коэффициента масштабирования, меняет местами синий и красный каналы. Более подробное содержание см. в https://docs.opencv.org/4.1.1/d6/d0f/group__dnn.html#ga29f34df9376379a603acd8df581ac8d7.
scale: множитель для значений изображения.
swaprb: флаг, указывающий на необходимость поменять местами первый и последний каналы в трёхканальном изображении.
width: ширина пространственного размера для выходного изображения.
height: высота пространственного размера для выходного изображения.
mean: скаляр со средними значениями, которые вычитаются из каналов. Значения предназначены для упорядочивания в (mean-R, mean-G, mean-B), если изображение имеет порядок BGR и swapRB истинно.
v1: синий компонент типа Scalar (Scalar — это 4-элементный (v1, v2, v3, v4) вектор, широко используемый в OpenCV для передачи значений пикселей).
v2: зелёный компонент типа... Скаляр.
v3: красный компонент типа Скаляр.
v4: альфа-компонент типа Скаляр.
crop: флаг, который указывает, будет ли изображение обрезано после изменения размера или нет.
infer:
model: [ОБЯЗАТЕЛЬНО] Путь к файлу модели, более подробное содержание см. в https://docs.opencv.org/4.1.1/d6/d0f/group__dnn.html#ga3b34fe7a29494a6a4295c169a7d32422.
config: [ОБЯЗАТЕЛЬНО] Путь к конфигурационному файлу модели, более подробное содержимое см. в https://docs.opencv.org/4.1.1/d6/d0f/group__dnn.html#ga3b34fe7a29494a6a4295c169a7d32422.
backend: [Необязательно] Сетевой бэкенд, используемый для повышения эффективности вывода. Теперь поддерживаются `halide`, `openvino`, `opencv`, `vulkan` и `default`. Более подробное содержание см. в https://docs.opencv.org/4.1.1/d6/d0f/group__dnn.html#ga186f7d9bfacac8b0ff2e26e2eab02625.
device: [Необязательно] Целевое устройство обработки DNN. Теперь поддерживается `cpu`(по умолчанию), `fp32`, `fp16`, `vpu`, `vulkan` и `fpga`. Более подробное содержание см. в https://docs.opencv.org/4.1.1/d6/d0f/group__dnn.html#ga709af7692ba29788182cf573531b0ff5.
after:
function:
name: [ОБЯЗАТЕЛЬНО] Имя функции, которая обрабатывает результат вывода.
logger:
filename: Если путь указан, записывает журнал в файл, в противном случае записывает в стандартный вывод.
level: Уровень журнала, поддержка `debug`, `info`(по умолчанию), `warn` и `error`.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )