Руководство по загрузке, визуализации и оценке моделей в наборе данных ActivityNet с использованием FiftyOne.

Год за годом вызов ActivityNet раздвигал границы того, на что способны модели понимания видео. Обучение модели машинного обучения классификации видеоклипов и обнаружению действий, выполняемых в видео, — непростая задача. К счастью, команды разработчиков наборов данных, такие как Kinetics и ActivityNet, предоставили огромное количество видеоданных сообществу компьютерного зрения, чтобы помочь в создании высококачественных видеомоделей.

Мы объявляем о партнерстве с командой ActivityNet, чтобы сделать наборы данных ActivityNet изначально доступными в Зоопарке наборов данных FiftyOne, что позволит вам получить доступ к набору данных и визуализировать его проще, чем когда-либо прежде, а также оценивать и анализировать модели, обученные на набор данных. FiftyOne — это инструмент с открытым исходным кодом, предназначенный для курирования наборов данных и анализа моделей. Загрузить подмножество ActivityNet теперь так же просто, как:

Настраивать

Для запуска примеров из этого поста вам необходимо установить FiftyOne.

pip install fiftyone

Набор данных ActivityNet

Существуют две популярные версии ActivityNet: одна со 100 классами активности и более новая версия с 200 классами активности.

Эти версии содержат 9 682 и 19 994 видеоролика соответственно в разделах обучения, тестирования и проверки с более чем 8 000 и 23 000 помеченных экземпляров активности.

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

Загрузка набора данных

Для загрузки всего ActivityNet необходимо заполнить эту форму, чтобы получить доступ к набору данных. Однако многие варианты использования включают определенные подмножества ActivityNet. Например, вы можете обучать модель специально для обнаружения класса Купающаяся собака.

Интеграция между FiftyOne и ActivityNet означает, что к набору данных теперь можно получить доступ через Зоопарк наборов данных FiftyOne. Кроме того, стало проще, чем когда-либо, загружать определенные подмножества ActivityNet непосредственно с YouTube. Вы можете загрузить все образцы класса Купание собаки из приведенного выше примера следующим образом:

Другие полезные параметры включают возможность указать набор данных split для загрузки, max_samples если вас интересуют только подмножества набора данных, max_duration определить максимальную продолжительность видео, которые вы хотите загрузить, и многое другое.

Если вы работаете с полным набором данных ActivityNet, вы можете использовать параметр source_dir, чтобы указать расположение набора данных на диске и легко загрузить его в FiftyOne для визуализации и анализа ваших моделей.

Оценка модели ActivityNet

В этом разделе мы расскажем, как добавить прогнозы вашей пользовательской модели в набор данных FiftyOne и оценить временные обнаружения в соответствии с протоколом оценки ActivityNet.

Добавление прогнозов модели в набор данных

Любые пользовательские метки и метаданные можно легко добавить в набор данных FiftyOne. В этом случае нам нужно заполнить поле TemporalDetection с именем predictions предсказаниями модели для каждой выборки. Затем мы можем визуализировать прогнозы в FiftyOne App.

Вычисление карты

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

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

Объект результатов оценки также можно использовать для расчета кривых PR и матриц путаницы производительности вашей модели.

Дополнительные показатели можно рассчитать с помощью инструмента DETAD, введенного для диагностики производительности моделей обнаружения действий в ActivityNet и THUMOS14. В последующем посте будет рассказано, как включить анализ DETAD в наш рабочий процесс FiftyOne для анализа моделей, обученных в ActivityNet.

Анализ результатов

Одним из основных преимуществ реализации FiftyOne протокола оценки ActivityNet является то, что он хранит не только метрики всего набора данных, такие как mAP, но и результаты на уровне отдельных меток. Указание параметра eval_key при вызове evaluate_detections() заполнит поля в нашем наборе данных, содержащие отдельные результаты на уровне выборки и метки о том, было ли предсказанное или истинное временное обнаружение истинно положительным, ложноположительным или ложноотрицательным.

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

Отсюда вы можете использовать метод to_clips() для преобразования набора данных полных видео в просмотр только клипов видео в соответствии с аннотациями поля, такими как наши прогнозы TemporalDetection.

Образцы в этих оценочных представлениях — это видеоролики, которые модель не смогла правильно понять. Один из способов решить эту проблему — тренироваться на большем количестве образцов, подобных тем, на которых модель не удалась. Если вам интересно использовать этот рабочий процесс в своих проектах, ознакомьтесь с методом compute_similarity() FiftyOne Brain.

Краткое содержание

ActivityNet — один из ведущих наборов видеоданных в сообществе компьютерного зрения, который включен в популярный ежегодный конкурс ActivityNet. Интеграция между ActivityNet и FiftyOne упрощает доступ к набору данных, визуализирует его в FiftyOne App и анализирует производительность вашей модели, чтобы понять, как построить лучшую классификацию действий и модели обнаружения.