Video Understanding позволяет компьютерам распознавать действия, объекты и события в видео. От розничной торговли, здравоохранения до сельского хозяйства, Video Understanding позволяет автоматизировать бесчисленные отраслевые сценарии использования.

Компания Facebook AI Research недавно выпустила новую библиотеку под названием PyTorchVideo на базе PyTorch Lightning, которая упрощает понимание видео, предоставляя предварительно обученные модели видео, наборы данных и преобразователи видео для SOTA. Все модели библиотеки оптимизированы для вывода и поддерживают различные наборы данных и преобразования.

Lightning Flash - это набор задач для быстрого прототипирования, базовой и тонкой настройки масштабируемых моделей Deep Learning, построенных на PyTorch Lightning. Это позволяет вам тренировать и настраивать модели, не перегружая себя всеми деталями, а затем легко переопределять и экспериментировать с Lightning для полной гибкости. Узнайте больше о Flash здесь.



В своем новом приближающемся выпуске PyTorch Lightning Flash обеспечит глубокую интеграцию с PyTorchVideo, а его основы и преобразования могут использоваться вместе с Kornia ones для обеспечения непрерывной предварительной обработки, обучения и тонкой настройки предварительно обученных моделей классификации видео SOTA.

Kornia - это дифференцируемая библиотека компьютерного зрения для PyTorch, которая состоит из набора процедур и дифференцируемых модулей для решения общих задач компьютерного зрения.

В этой статье вы узнаете, как обучить пользовательскую модель классификации видео за 5 простых шагов, используя PyTorch Video, Lightning Flash и Kornia, используя набор данных Kinetics.

Продолжайте читать, чтобы мгновенно обучить свою модель !

5 простых шагов для классификации видео

Грид-платформа позволяет вам беспрепятственно обучать сотни моделей машинного обучения в облаке с вашего ноутбука, не изменяя код полностью воспроизводимым образом.

Найдите полный сквозной код для этого учебного кода здесь, а полную воспроизводимую версию запустите здесь на сетке.

Предварительный импорт

Шаг 1 - Загрузите набор данных кинетики

Шаг 2. Укажите преобразования Корнии для применения к видео

Поскольку видео представляют собой объекты с большим объемом памяти, выборка и увеличение данных играют ключевую роль в процедуре обучения видеомодели и должны быть тщательно обработаны для достижения результатов SOTA.

Flash оптимизирует этот процесс, поскольку преобразования могут быть предоставлены с помощью простого сопоставления словаря между хуками и преобразованиями. Флэш-хуки - это простые функции, которые можно переопределить, чтобы расширить функциональность Flash.

В приведенном ниже коде мы используем хук post_tensor_transform для равномерного выбора 8 кадров из выбранного видеоклипа и изменения их размера до 224 пикселей. Это делается параллельно внутри каждого рабочего процесса PyTorch DataLoader.

Мы также используем ловушку per_batch_transform_on_device , чтобы разрешить применение нормализации Kornia непосредственно к пакету, уже перемещенному в GPU или TPU.

Шаг 3 - Загрузите данные

Lightning DataModule - это совместно используемые многократно используемые объекты, которые инкапсулируют весь код, связанный с данными. Flash позволяет быстро загружать видео и этикетки из различных форматов, таких как файлы конфигурации или папки, в DataModule.

В этом примере мы используем вспомогательную функцию Flash from_folders для создания DataModule. Чтобы использовать from_folders функции, видео следует упорядочить по папкам для каждого класса следующим образом:

dir_path / ‹class_name› / ‹video_name›. {mp4, avi}

Шаг 4 - Создайте экземпляр VideoClassifier с предварительно обученной магистралью модели.

Обучение классификатора видео SOTA с нуля на Kinetics может занять около 2 дней на 64 GPUS. К счастью, Flash Backbones Registry API упрощает интеграцию отдельных моделей, а также концентраторов моделей целиком с Flash.

По умолчанию PyTorchVideo Model Hub предварительно зарегистрирован в задаче классификатора видео Backbone Registry.

Вы можете перечислить любые доступные магистрали и получить более подробную информацию следующим образом:

Выбрав магистраль, вы можете инициализировать ее с помощью всего одной строчки кода:

Примечание. Сериализаторы - это необязательные компоненты, которые можно передать классификаторам Flash, которые позволяют настроить формат вывода прогнозов задач какLogits, Probabilities или Labels. Подробнее здесь.

Шаг 5 - точная настройка модели

Когда у нас есть DataModule и VideoClassifier, мы можем настроить Flash Trainer. По умолчанию Flash Trainer поддерживает все флажки и трюки, которые вы знаете и любите, включая распределенное обучение, контрольные точки, ведение журнала, смешанную точность, SWA, квантование, ранняя остановка и другое.

Flash Trainer не только позволяет обучать модели с нуля, но и обеспечивает быстрый доступ к множеству стратегий для точной настройки предварительно обученных моделей на новых данных.

В этом примере мы используем Стратегию NoFreeze, в которой магистраль будет полностью обучаемой с самого начала. Вы даже можете определить свои собственные Стратегии точной настройки.

Вывод

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

Одним из основных преимуществ использования магистральных сетей PyTorch Video является то, что они оптимизированы для мобильных устройств. С помощью Lightning модели можно сохранять и экспортировать как классические контрольные точки PyTorch или оптимизировать для вывода на краю с помощью ONNX и / или TorchScript.

Полный код руководства можно найти здесь.

Мы благодарим Тулли Мюррелл из команды PyTorchVideo за поддержку и отзывы, приведшие к интеграции во Flash.

Следующие шаги

Теперь, когда вы обучили свою первую модель, пришло время поэкспериментировать. Флэш-задачи обеспечивают полный доступ ко всем крючкам Lightning, которые можно игнорировать по мере продвижения к современному уровню техники.

Ознакомьтесь со следующими ссылками, чтобы узнать больше:

Об авторах

Аарон (Ари) Борнштейн - исследователь искусственного интеллекта, увлеченный историей, занимающийся новыми технологиями и вычислительной медициной. В качестве главы отдела защиты разработчиков в Grid.ai он сотрудничает с сообществом машинного обучения, чтобы решать реальные проблемы с помощью технологий, меняющих правила игры, которые затем документируются, публикуются в открытом доступе и передаются остальному миру.

Томас Чатон - руководитель отдела исследований PyTorch Lightning. Ранее, старший инженер-исследователь Fujitsu AI и Comcast-Sky Labs, Томас также является создателем TorchPoints3D.