Конвейер для сегментации мультимодальных телешоу

Привет, с возвращением! Если вы еще не читали вступительную статью, основанную на периоде общения с сообществом, я настоятельно рекомендую вам сделать это, прежде чем продолжить.

На прошлой неделе я завершил первый этап конвейера мультимодальной сегментации телешоу (mtvss). На этом этапе создается CSV-файл с классификационной меткой (последовательность рекламы/заголовка), временем начала, временем окончания и достоверностью прогноза. Теперь, переходя ко второму этапу, я буду хранить функции, извлеченные из этих изображений ключевых кадров последовательности заголовков, используя существующую модель ResNet50V2. Затем я сгруппирую эти функции с помощью RNN-DBSCAN.

Цели на неделю

  1. Продолжайте выполнять конвейер stage-1 для извлечения последовательностей заголовков.
  2. Сконфигурируйте и настройте новую изолированную базу кода для этапа 2.
  3. Извлеките функции изображения и сохраните их в виде файла .npy.

Работа выполнена

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

Текущая древовидная структура моего проекта выглядит так:

├── mtvss
│   ├── annotation
│   ├── constants.py
│   ├── data
│   ├── data_raw.py
│   ├── __init__.py
│   ├── pipeline_stage1
│   ├── pipeline_stage2
│   └── __pycache__

Где pipe_stage1 и 2 — это каталоги, в которых есть скрипты Python, которые работают независимо друг от друга.

│   ├── pipeline_stage1
│   │   ├── data.py
│   │   ├── __init__.py
│   │   ├── model.py
│   │   ├── PretrainedResNet50V2.py
│   │   ├── __pycache__
│   │   └── run_pipeline_stage1.py
│   ├── pipeline_stage2
│   │   ├── data.py
│   │   ├── __init__.py
│   │   ├── model.py
│   │   └── run_pipeline_stage2.py

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

Двигаясь дальше, входные данные для этапа 2 пайплайна — это объекты изображения размером (#imgs, 2048).. Чтобы быстро напомнить, эти выходные данные извлекаются из слоя глобального среднего пула. Архитектура модели еще раз показана ниже.

Заключение

В целом прогресс был довольно медленным на этой неделе из-за чрезвычайной ситуации в семье. Тем не менее, я смог составить осуществимый план на вторую половину GSoC. Разрешив существующий код этапа 1 в фоновом режиме, я смог увеличить количество обрабатываемых файлов категории 1 до чуть менее 50% (~ 5000 файлов). В то же время я работал над извлечением и сохранением изображений последовательности заголовков в двоичном формате.

На следующей неделе я надеюсь заняться реализацией RNN-DBSCAN и хотел бы изучить и проанализировать результаты, полученные на этапе 1, чтобы увидеть, как они повлияют на производительность этапа кластеризации.