Классификация видео — это задача машинного обучения для определения того, что представляет собой видео. Модель классификации видео обучается на наборе видеоданных, содержащем набор уникальных классов, таких как различные действия или движения. Модель получает видеокадры в качестве входных данных и выводит вероятность того, что каждый класс представлен в видео.
Модели классификации видео и изображений используют изображения в качестве входных данных для прогнозирования вероятности того, что эти изображения принадлежат предопределенным классам. Однако модель классификации видео также обрабатывает пространственно-временные отношения между соседними кадрами для распознавания действий в видео.
Например, модель распознавания действий на видео можно обучить распознавать действия человека, такие как бег, аплодисменты и махание руками. На следующем изображении показаны выходные данные модели классификации видео на Android.
Начать
Если вы используете платформу, отличную от Android или Raspberry Pi, или если вы уже знакомы с API- интерфейсами TensorFlow Lite , загрузите начальную модель классификации видео и вспомогательные файлы. Вы также можете создать собственный пользовательский конвейер вывода, используя библиотеку поддержки TensorFlow Lite .
Скачать начальную модель с метаданными
Если вы новичок в TensorFlow Lite и работаете с Android или Raspberry Pi, изучите следующие примеры приложений, которые помогут вам начать работу.
Андроид
Приложение для Android использует заднюю камеру устройства для непрерывной классификации видео. Вывод выполняется с помощью TensorFlow Lite Java API . Демонстрационное приложение классифицирует кадры и отображает предсказанные классификации в режиме реального времени.
Raspberry Pi
В примере Raspberry Pi используется TensorFlow Lite с Python для выполнения непрерывной классификации видео. Подключите Raspberry Pi к камере, например Pi Camera, для классификации видео в реальном времени. Чтобы просмотреть результаты с камеры, подключите монитор к Raspberry Pi и используйте SSH для доступа к оболочке Pi (чтобы не подключать клавиатуру к Pi).
Прежде чем начать, настройте Raspberry Pi с ОС Raspberry Pi (желательно обновленной до Buster).
Описание модели
Мобильные видеосети ( MoViNets ) — это семейство эффективных моделей классификации видео, оптимизированных для мобильных устройств. MoViNets демонстрируют современную точность и эффективность на нескольких крупномасштабных наборах данных распознавания видеодействий, что делает их хорошо подходящими для задач распознавания видеодействий.
Существует три варианта модели MoviNet для TensorFlow Lite: MoviNet-A0 , MoviNet-A1 и MoviNet-A2 . Эти варианты были обучены набору данных Kinetics-600 для распознавания 600 различных действий человека. MoviNet-A0 — самый маленький, быстрый и наименее точный. MoviNet-A2 — самый большой, самый медленный и самый точный. MoviNet-A1 представляет собой компромисс между A0 и A2.
Как это работает
Во время обучения модели классификации видео предоставляются видеоролики и связанные с ними метки . Каждая метка — это имя отдельного понятия или класса, который модель научится распознавать. Для распознавания видео действий , видео будут изображать человеческие действия, а метки будут связанными с ними действиями.
Модель классификации видео может научиться предсказывать, принадлежат ли новые видео к какому-либо из классов, представленных во время обучения. Этот процесс называется выводом . Вы также можете использовать трансферное обучение для определения новых классов видео, используя уже существующую модель.
Модель представляет собой потоковую модель, которая получает непрерывное видео и отвечает в режиме реального времени. Когда модель получает видеопоток, она определяет, представлены ли в видео какие-либо классы из обучающего набора данных. Для каждого кадра модель возвращает эти классы вместе с вероятностью того, что видео представляет класс. Пример вывода в заданное время может выглядеть следующим образом:
Действие | Вероятность |
---|---|
кадриль | 0,02 |
заправочная игла | 0,08 |
скручивание пальцев | 0,23 |
машет рукой | 0,67 |
Каждое действие в выходных данных соответствует метке в обучающих данных. Вероятность обозначает вероятность того, что действие отображается в видео.
Входные данные модели
Модель принимает на вход поток видеокадров RGB. Размер входного видео может быть гибким, но в идеале он соответствует разрешению и частоте кадров обучения модели:
- MoviNet-A0 : 172 x 172 при 5 кадрах в секунду
- MoviNet-A1 : 172 x 172 при 5 кадрах в секунду
- MoviNet-A1 : 224 x 224 при 5 кадрах в секунду
Ожидается, что входные видео будут иметь значения цвета в диапазоне от 0 до 1 в соответствии с общими соглашениями о вводе изображений .
Внутри модель также анализирует контекст каждого кадра, используя информацию, собранную в предыдущих кадрах. Это достигается путем извлечения внутренних состояний из вывода модели и передачи их обратно в модель для предстоящих кадров.
Выходы модели
Модель возвращает серию меток и соответствующие им оценки. Оценки представляют собой логит-значения, которые представляют прогноз для каждого класса. Эти оценки можно преобразовать в вероятности с помощью функции softmax ( tf.nn.softmax
).
exp_logits = np.exp(np.squeeze(logits, axis=0))
probabilities = exp_logits / np.sum(exp_logits)
Внутри выходные данные модели также включают внутренние состояния модели и передают их обратно в модель для предстоящих кадров.
Тесты производительности
Цифры эталонных показателей производительности генерируются с помощью инструмента эталонного тестирования . MoviNet поддерживает только ЦП.
Производительность модели измеряется количеством времени, которое требуется модели для выполнения вывода на данном оборудовании. Меньшее время подразумевает более быструю модель. Точность измеряется тем, как часто модель правильно классифицирует класс в видео.
Название модели | Размер | Точность * | Устройство | ПРОЦЕССОР ** |
---|---|---|---|---|
MoviNet-A0 (целочисленное квантование) | 3,1 МБ | 65% | Пиксель 4 | 5 мс |
Пиксель 3 | 11 мс | |||
MoviNet-A1 (целочисленное квантование) | 4,5 МБ | 70% | Пиксель 4 | 8 мс |
Пиксель 3 | 19 мс | |||
MoviNet-A2 (целочисленное квантование) | 5,1 МБ | 72% | Пиксель 4 | 15 мс |
Пиксель 3 | 36 мс |
* Топ-1 точности, измеренной на наборе данных Kinetics-600 .
** Задержка измерена при работе на ЦП с 1 потоком.
Настройка модели
Предварительно обученные модели обучены распознавать 600 действий человека из набора данных Kinetics-600 . Вы также можете использовать трансферное обучение, чтобы повторно обучить модель распознавать действия человека, которых нет в исходном наборе. Для этого вам понадобится набор обучающих видеороликов для каждого из новых действий, которые вы хотите включить в модель.
Дополнительные сведения о тонкой настройке моделей на основе пользовательских данных см. в репозитории MoViNets и руководстве по MoViNets .
Дополнительная литература и ресурсы
Используйте следующие ресурсы, чтобы узнать больше о концепциях, обсуждаемых на этой странице: