Автор: Амрит Сандху (ams22664), Михир Дешпанде (md46487), Маскан Агарвал (ma64547), Самарт Мишра (sm79247) и Танви Далал (trd878)

Вы когда-нибудь сидели там, готовясь к этому выпускному экзамену, смотрели все видео вашего профессора и думали: «Я должен посмотреть все эти видео по одной теме?!»

Мы все были там, часами смотрели лекции в поисках одной темы, которую упомянул наш профессор.

Мы в HornAI подумали, что должны что-то с этим сделать.

Представляем Что говорит профессор? — Просто загрузите видеолекции, которые вы хотите найти, введите запрос, и приложение сообщит вам, когда именно профессор обсуждал или говорил об этих темах.

Но чем он отличается?
Мы внедряем последние достижения в области искусственного интеллекта, такие как сети преобразования кодировщика-декодера для автоматического распознавания речи, крупноязыковые сети для семантического извлечения и сегментации изображений CNN для оптического распознавания символов, чтобы предоставить вам очень актуальные и точные временные метки.

Используя возможности семантического и контекстуального сравнения современных LLM, нам не нужно, чтобы пользовательские запросы точно соответствовали тому, что профессор сказал или записал. Пока ключевые слова в чем-то связаны с обсуждаемыми темами, наш продукт понимает контекст, вычисляет, насколько «похожа» каждая тема на запрос пользователя, и подсказывает, когда ее искать.

Что это такое?

Во-первых, давайте взглянем на интерфейс и его функциональность.

Пользователю необходимо ввести две вещи:

  1. Файл MP4 — видеофайлы с записями лекций.
  2. Запрос — текстовое поле, в которое пользователь может записать запрос, например. «Когда профессор говорил о модели ценообразования опционов Блэка-Шоулза?» или простая строка ключевых слов, например «экономические модели ценообразования опционов Блэка-Шоулза».

После нажатия кнопки «Отправить» в выходных данных пользователю предоставляется отметка времени, в которой обсуждаемая тема была «наиболее схожа» с запросом пользователя, и график, показывающий «сходство» тем, обсуждаемых в видео(ах).

И вуаля! Вы можете пропустить сотни часов, потерянных каждый день на просмотр всех видео, перематывая по 5 секунд за раз, чтобы сделать несколько заметок. Довольно аккуратно, да? Это может показаться простым в реализации, но вы не поверите, какое количество технологий делает это возможным. В конце концов, лучшая технология — это та, о которой вы даже не подозреваете.

«Я охотник на вампиров».
«Что? Это глупо, я никогда не видел вампиров!»
«Пожалуйста».

Давайте посмотрим, как делается колбаса.

Как это работает?

В архитектуре есть 3 основных компонента или строительных блока:

  1. Автоматическое распознавание речи с помощью Whisper от OpenAI
  2. Извлечение текста изображения (печатного и рукописного) с использованием Google Cloud Vision
  3. Встраивание слов с использованием большой языковой модели GPT3 для вычисления подобия

Вот общий обзор –

Сначала мы отделяем видео и аудио от файлов .mp4 и обрабатываем их отдельно. Аудио сначала передается в качестве входных данных для Whisper API.

Вывод API дает нам 3 значения для каждого произнесенного предложения: текст/расшифровка предложения, отметка времени в аудио(видео), когда говорящий начал предложение, и отметка времени в аудио(видео). ), когда говорящий закончил предложение. Одной стенограммы может быть достаточно, чтобы получить достаточно точное предположение, но мы также дополнили ее информацией (текстом), видимой в видео. Чтобы извлечь текст во фрейме, мы пытались использовать множество различных моделей OCR, но в итоге остановились на Google Cloud Vision, поскольку он точно определяет как печатный, так и рукописный текст, а также готов к работе.

Чтобы синхронизировать текст, извлеченный из видео, и аудиозаписей, мы взяли временные метки начала каждого предложения (из вывода Whisper) и извлекли кадр из видео в каждой временной метке (т.е. каждое предложение), передали его в качестве входных данных для Google Cloud Vision API (модель OCR) и считывать выходные данные в виде строки, содержащей извлеченный печатный и рукописный текст.

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

Лучшее решение для сравнения двух строк — это встраивание слов и вычисление их косинусного сходства. Мы использовали модель OpenAI GPT3 ADA для получения семантических и контекстных вложений слов. Взяв среднее косинусное сходство между запросом пользователя — расшифровкой и текстом запроса-изображения пользователя, мы получим общее сходство для каждой временной метки в видео.

В этом суть. Теперь мы можем вернуть метку времени с наибольшим сходством и график сходства со временем.

Давайте рассмотрим некоторые из используемых технологий немного глубже.

I) Автоматическое распознавание речи с помощью шепота

Whisper от OpenAI использует простую сеть преобразования кодера в декодер, реализующую модель Sequence to Sequence, где входная последовательность представляет собой спектрограмму log-Mel (довольно стандартный ввод, используемый при распознавании речи), которая передается кодировщику. . Выходная последовательность представляет собой расшифрованный текст (по умолчанию английский, но поддерживаются и другие языки). Его универсальность обусловлена ​​массивными 680 000 часов данных, использованных для обучения модели.

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

II) Извлечение текста изображения с помощью Google Cloud Vision

В Google Cloud Vision есть отличные модели для извлечения как печатного, так и рукописного текста.

Он имеет двухэтапный подход к извлечению текста: поиск текста с использованием обнаружения объектов и извлечение текста с использованием оптического распознавания символов (OCR). Мы попытались реализовать нашу собственную модель, используя модели Detectron и YOLO для обнаружения объектов/текста и Microsoft Generative Image-to-Text (GIT), Tesseract и т. д. для распознавания символов и использования трансферного обучения с использованием нашего собственного набора обучающих данных, но Google Cloud Vision дал мы отлично готовим к работе, обучаясь на изображениях 5B+.

III) Вложения слов с использованием GPT3 ADA

Для сравнения двух строк идеальным решением является встраивание слов. Используя OpenAI GPT3 ADA, мы можем получать встраивания слов, которые включают контекстную информацию из 45 терабайт текстовых данных из Интернета. Именно это контекстуальное сравнение позволяет нам выполнять относительно точный «нечеткий» поиск релевантных тем.

Ограничения:

  • Из-за сложности текущих моделей OCR имеющихся в нашем распоряжении ресурсов (как с точки зрения объема данных, так и вычислительных ресурсов) было недостаточно для заметного повышения точности.​
  • Для модели OCR сложно определить правильную последовательность, особенно когда рукописный и печатный текст перемежаются в одном кадре, а ориентация перекошена (например, профессор пишет свои заметки на слайде PPT). Мы хотели бы изучить больше, чтобы обойти эту трудность или обучить модели, используя наш собственный набор данных.
  • Множественные вызовы API Whisper составляют большую часть накладных расходов. Поиск эффективного способа кэширования выходных данных может помочь сократить время начальной обработки.​

Расширения:

  • Productionalize: В настоящее время мы должны вводить собственные файлы mp4. Мы могли бы расширить базу данных записей или сотрудничать с университетами, чтобы интегрировать наше приложение в университетское программное обеспечение (видео Panopto) и масштабировать. ​
  • Ищите альтернативные модели OCR, которые были бы более точными, особенно с рукописным текстом, возможно, с включением моделей внутреннего внимания в предложениях, чтобы давать более качественные и более контекстуальные прогнозы.
  • Способность интерпретировать математические уравнения и вычислять сходство

Вот ссылка на github и запись демо.

Не стесняйтесь обращаться к нам, если у вас есть какие-либо вопросы!