Другой способ посмотреть на матрицу [Nx1280]: это ведь черно-белое изображение! Получилось, что мы сжали видео до картинки.
Все фичи от нейронок отмасштабируем так, чтобы все координаты были между 0 и 1 (изначально это могут быть любые числа) и выведем изображение для нашего видео
Все фичи от нейронок отмасштабируем так, чтобы все координаты были между 0 и 1 (изначально это могут быть любые числа) и выведем изображение для нашего видео
Во-вторых, прямо на глаз можно увидеть много паттернов. Сложно сказать, что это за паттерны, но видно, когда на видео что-то меняется. Например до 200-с-чем-то фрейма идет вступление и полоски все горизонтальные и одинаковые.
Давайте посмотрим на такое же изображение, полученное для куска из 15 секунд этого видео.
Самое главное: если взять это изображение, наложить на изображение полного видео и двигать слева направо, то рано или поздно они полностью совпадут.
По этой картинке легко можно понять, что она часть картинки выше
Самое главное: если взять это изображение, наложить на изображение полного видео и двигать слева направо, то рано или поздно они полностью совпадут.
По этой картинке легко можно понять, что она часть картинки выше
Я очень долго пялился на эти красные полоски. Здесь явно что-то можно раскопать про интерпретируемость неиронок и про их избыточность. Но я так и не придумал что.
Однако схожесть представления для куска видео и для полного видео выглядит очень круто. Дело в том, что есть открытая проблема Content-Based Video Retrieval: узнаем из какого полного видео взят короткий кусок видео. Именно из-за нерешенности этой проблемы мы не можем вбить в гугл порно-гиф и узнать, из какого она видео. Или например поэтому у нас нет шазама для фильмов. В целом применения ограниченные, а задача сложная, поэтому этой задачей мало кто занимается. Но меня она не отпускает с 1 курса магистратуры.
Итак: мы получили скукоженное до небольшой картинки представление видео, позволяющее понять, из какого полного видео тот или иной кусок видео. Причем так как это фичи из неиронок, опирающиеся на смысловое наполнение кадра, изображения не будут особо меняться даже если видео исказить, наполнить шумом, зашакалить компроссией, итд. То есть мы получили даже устойчивое представление видео.
Я стал думать как сделать из этого систему для CBVR. Типичное решение: вытаскиваем ключевые кадры, кладем в базу данных. Из короткого видео на входе таким же образом вытаскиваем ключевые кадры, ищем их в базе данных. Если находим много похожих кадров, причем они идут друг за другом так же как в коротком видео, то у нас метч и поиск успешен.
Однако схожесть представления для куска видео и для полного видео выглядит очень круто. Дело в том, что есть открытая проблема Content-Based Video Retrieval: узнаем из какого полного видео взят короткий кусок видео. Именно из-за нерешенности этой проблемы мы не можем вбить в гугл порно-гиф и узнать, из какого она видео. Или например поэтому у нас нет шазама для фильмов. В целом применения ограниченные, а задача сложная, поэтому этой задачей мало кто занимается. Но меня она не отпускает с 1 курса магистратуры.
Итак: мы получили скукоженное до небольшой картинки представление видео, позволяющее понять, из какого полного видео тот или иной кусок видео. Причем так как это фичи из неиронок, опирающиеся на смысловое наполнение кадра, изображения не будут особо меняться даже если видео исказить, наполнить шумом, зашакалить компроссией, итд. То есть мы получили даже устойчивое представление видео.
Я стал думать как сделать из этого систему для CBVR. Типичное решение: вытаскиваем ключевые кадры, кладем в базу данных. Из короткого видео на входе таким же образом вытаскиваем ключевые кадры, ищем их в базе данных. Если находим много похожих кадров, причем они идут друг за другом так же как в коротком видео, то у нас метч и поиск успешен.
Выглядит неплохо, вроде бы пики в одном и том же месте на обоих версиях, но при проверке на качество retrieval всё это показало себя не очень. Много false positive метчей. И в целом работало хуже, чем если просто взять каждый 20 фрейм и положить в базу данных. И так бы уже давное кто-то сделал и запустил шазам для видео, но ненапасешься SSD хранить терабайты фичей фреймов. Надо как-то поумнее.
И тогда меня осенило. Я по сути руками пытаюсь подобрать функцию, позволяющую сжать видео до ключевых фреймов. А что мы делаем, когда надо подобрать какую-то функцию, но хз как она должна выглядеть? Заставляем нейронки её выучить!
Другой путь размышления. Нам нужно сделать поиск по видео. Мы превратили видео в картинки. Теперь задача сводится к поиску по картинкам. А как мы делаем поиск по картинкам? Обрабатываем картинки нейронкой и кладем фичи вытащенные этой нейронкой из картинок в базу данных.
Вывод: а давайте полученные изображения снова обрабатывать нейронкой.
Получаем такой алгоритм: видео + нейросеть -> картинка для видео + нейросеть -> фичи картинки.
Далее учим нейросеть вытаскивать из картинок-из-видео такие фичи, чтобы фичи куска видео были похожи на фичи полного видео, и непохожи на фичи какого-то левого видео.
Другой путь размышления. Нам нужно сделать поиск по видео. Мы превратили видео в картинки. Теперь задача сводится к поиску по картинкам. А как мы делаем поиск по картинкам? Обрабатываем картинки нейронкой и кладем фичи вытащенные этой нейронкой из картинок в базу данных.
Вывод: а давайте полученные изображения снова обрабатывать нейронкой.
Получаем такой алгоритм: видео + нейросеть -> картинка для видео + нейросеть -> фичи картинки.
Далее учим нейросеть вытаскивать из картинок-из-видео такие фичи, чтобы фичи куска видео были похожи на фичи полного видео, и непохожи на фичи какого-то левого видео.
Получаем такую архитектуру: извлекаем фичи из картинок извлеченных фичей из картинок.
Идея звучит абсолютно безумно (давайте нейронкой обрабатывать выплюнутые нейронкой изображения?), но на самом деле если я глазами могу определить, что картинка похожа на часть другой картинки, то для нейросети это будет раз плюнуть.
Если это покажет хорошее качество, то создание поисковика по видео станет не сложнее поисковика по изображениям (который уже никого не удивляет). Значит будет опубликованная статья, и возможно я найду этому бизнес-применение.
Минусов идеи очень много:
1. Долго. Работа с видео это боль, а серверов у меня нет.
2. Непопулярная сфера. Конкретно retrieval мало кто занимается, значит мало будут цитировать.
3. Возможно это велосипед, и очень возможно, что не сработает. Есть гораздо более сложные методы для обработки видео, всякие 3D конволюции, optical flow и др, созданные, чтобы учитывать темпоральные связи в видео. Наверняка не от скуки их придумали.
4. Мой научник и все знакомые не занимаются этой темой, делать придется одному.
Однако в любом случае идея меня зацепила и я её как минимум проверю. Я не могу блин делать работу за которую мне платят, потому что хочу пробовать все идеи связанные с этой штукой, помогите.
Если это покажет хорошее качество, то создание поисковика по видео станет не сложнее поисковика по изображениям (который уже никого не удивляет). Значит будет опубликованная статья, и возможно я найду этому бизнес-применение.
Минусов идеи очень много:
1. Долго. Работа с видео это боль, а серверов у меня нет.
2. Непопулярная сфера. Конкретно retrieval мало кто занимается, значит мало будут цитировать.
3. Возможно это велосипед, и очень возможно, что не сработает. Есть гораздо более сложные методы для обработки видео, всякие 3D конволюции, optical flow и др, созданные, чтобы учитывать темпоральные связи в видео. Наверняка не от скуки их придумали.
4. Мой научник и все знакомые не занимаются этой темой, делать придется одному.
Однако в любом случае идея меня зацепила и я её как минимум проверю. Я не могу блин делать работу за которую мне платят, потому что хочу пробовать все идеи связанные с этой штукой, помогите.
Насчет более сложных подходов есть такая забавная статья:
An Image Classifier Can Suffice Video Understanding https://arxiv.org/abs/2106.14104
Вся суть: вместо 3D конволюций и всех сложных штук для обработки видео, давайте фреймы видео просто в клеточку поставим и пройдемся по этой картинке нейросеткой. Прямо как в моей идее, только я предлагаю обрабатывать не картинки, а уже отфильтрованные представления картинок.
Так что есть ещё место для простых решений
An Image Classifier Can Suffice Video Understanding https://arxiv.org/abs/2106.14104
Вся суть: вместо 3D конволюций и всех сложных штук для обработки видео, давайте фреймы видео просто в клеточку поставим и пройдемся по этой картинке нейросеткой. Прямо как в моей идее, только я предлагаю обрабатывать не картинки, а уже отфильтрованные представления картинок.
Так что есть ещё место для простых решений
Forwarded from Just links
https://tilde.town/~fessus/reward_is_unnecessary.pdf
How to write supplementary material
How to write supplementary material
Forwarded from Just links
Twitter
Joseph Suarez
Announcing the Neural MMO Challenge, live...now! Create RL, scripted, or hybrid agents to complete high-level exploration, foraging, and combat tasks. We’ll drop them in a massively multiagent environment full of competing submissions. aicrowd.com/challenges/the…
Ребята, которые читают научные статьи: как вы это делаете?
Я вышел на обороты в пару статей в неделю, и начинаю ощущать тонну рутины.
Во-первых, найти какие статьи стоит читать это целое приключение. Текущие источники статей: услышал от кого-то про важную штуку или увидел в телеграм канале ноунейма со ссылками на статьи, рассылки papers with code digest, the batch. Я пытался найти что-то более осмысленное, какие-нибудь фидленты для ученых с возможностью подписаться на тему, журнал или конфу, но не нашел ничего годного. Есть paperdigest.org, я подписался на статьи по CS и ML, и он присылает мне 100+ статей в день. Причем без какой-то инфы позволяющей их фильтровать, просто плейнтекст поток названий.
Во-вторых, где хранить список для чтения статей? Сейчас я скидываю ссылки в свой запиненый канал в телеге для сохранения ссылок. Но я туда же скидываю все интересности. И чаще всего то, что туда попадает, потом никогда не открывается, а просто заваливается новыми интересностями.
Интересно было бы послушать и людей не из компьютерных наук, как у них всё устроено.
Из позитивного могу сказать одно: больше читать статей нереально помогает покупка планшета за ~20к (конкретно у меня Samsung). До покупки я и не знал, насколько я ненавижу читать pdf с ноутбука. Раньше я думал: "хотел бы читать статьи, читал бы и без планшета" и не покупал себе ничего, но теперь понял, что подходящий инструмент сильно влияет.
Я вышел на обороты в пару статей в неделю, и начинаю ощущать тонну рутины.
Во-первых, найти какие статьи стоит читать это целое приключение. Текущие источники статей: услышал от кого-то про важную штуку или увидел в телеграм канале ноунейма со ссылками на статьи, рассылки papers with code digest, the batch. Я пытался найти что-то более осмысленное, какие-нибудь фидленты для ученых с возможностью подписаться на тему, журнал или конфу, но не нашел ничего годного. Есть paperdigest.org, я подписался на статьи по CS и ML, и он присылает мне 100+ статей в день. Причем без какой-то инфы позволяющей их фильтровать, просто плейнтекст поток названий.
Во-вторых, где хранить список для чтения статей? Сейчас я скидываю ссылки в свой запиненый канал в телеге для сохранения ссылок. Но я туда же скидываю все интересности. И чаще всего то, что туда попадает, потом никогда не открывается, а просто заваливается новыми интересностями.
Интересно было бы послушать и людей не из компьютерных наук, как у них всё устроено.
Из позитивного могу сказать одно: больше читать статей нереально помогает покупка планшета за ~20к (конкретно у меня Samsung). До покупки я и не знал, насколько я ненавижу читать pdf с ноутбука. Раньше я думал: "хотел бы читать статьи, читал бы и без планшета" и не покупал себе ничего, но теперь понял, что подходящий инструмент сильно влияет.