Что такое регулирование FPS

Сценарий регулирования FPS предназначен для настройки FPS видеовхода. FPS, что означает количество кадров в секунду, является мерой плотности кадров видео. Чем выше FPS, тем плотнее кадры и тем лучше качество. Поскольку длина видео будет фиксированной во время регулирования, настройка FPS также означает настройку количества кадров.

Камера использует кадры для записи видео. То есть записанное видео эквивалентно съемке изображений через фиксированный период, и каждое изображение называется «кадром». Например, когда камера записывает видео со скоростью 30 кадров в секунду, 30 кадров захватываются в течение секунды.

Вводимые нами «видео» представляют собой наборы координат. В каждом кадре есть 21 точка с координатами x, y и z, отслеживающая определенную часть руки. Во-первых, у нас есть оригинальные ролики с исходным количеством кадров. Затем мы пропускаем все кадры видео через наши сценарии, чтобы распознать и получить 21 координату руки в каждом кадре. Выходные данные представлены в виде списка списков, в каждом подсписке которого представлены все координаты кадра.

Этот скрипт может преобразовывать видео в любой целевой FPS, учитывая входное видео и целевое количество кадров или FPS.

Зачем это нужно

Снятые видео используются в качестве обучающих данных для нашей нейронной сети, распознающей персонажей. Короче говоря, причина в том, что нейронная сеть может принимать только постоянный объем входных данных, поэтому нам нужно регулировать все наши данные (подписывая видео), чтобы все они имели одинаковое количество кадров. Одно и то же количество кадров означает одинаковое количество параметров, вводимых в нейронную сеть.

Нам нужно одинаковое количество кадров в каждом видео, которое мы передаем в нейронную сеть. Правда, у разных камер разный FPS, но время подписи алфавита близко. Поэтому очень вероятно, что мы получим видео с одинаковой длиной, но с разным количеством кадров. Эти сцены происходят не только при подаче обучающих данных, но и при распознавании. Следовательно, нам нужен скрипт, чтобы преобразовать все сырые видео в видео с одинаковым количеством кадров, а затем передать эти кадры и координаты в форме списка списков в нейронную сеть.

Как достигается цель

Регулировка количества кадров в видео означает увеличение или уменьшение количества кадров, но это не означает, что мы вставляем, копируем или удаляем случайно выбранные кадры. Мы хотим, чтобы наши регулируемые видеоролики максимально плавно восстанавливали движения рук в исходных видеороликах. Для этого мы используем метод под названием «интерполяция», что означает, что координаты перемещаются линейно между кадрами, чтобы предсказать координату точки в любое время.

Процесс интерполяции можно лучше объяснить с помощью приведенной выше диаграммы. Мы стремимся преобразовать исходное 8-кадровое видео в 6-кадровое видео. Синяя кривая - оригинальное движение, плавное и непрерывное. Камера записывает движение посредством захвата кадров в каждое «синее время», а затем получают координаты. Наша цель - узнать координаты в каждое «красное время». Это достигается за счет предположения, что координаты перемещаются с постоянной скоростью от синего кадра к следующему синему кадру. Когда дано «красное время», мы можем использовать целое деление («//» в python), чтобы найти два соседних «синего времени», а также координаты в это время. Затем мы можем предсказать красную координату с помощью линейной алгебры.

Затем сценарий расширяется от работы с одной координатой до списка и, наконец, до списка списков. С тех пор мы можем регулировать все видеоданные, которые мы должны передавать в нейронную сеть для обучения, или же мы можем регулировать и видеовходы для распознавания. Скрипт теперь доступен на github нашего проекта по адресу https://github.com/AriAlavi/SigNN.

Ссылка:

Фотография на обложке: https://www.pexels.com/photo/blur-close-up-code-computer-546819/

Координаты руки: https://user-images.githubusercontent.com/49175620/76174303-cb60d980-6163-11ea-933b-f0c0fd09d32f.PNG

Скрипт: https://github.com/AriAlavi/SigNN/blob/master/scripts/regulation_python.py