📄 Video-to-Video Synthesis [NeurIPS 2018]
Это основная статья про видео-дипфейки. В ней впервые предложен фреймворк для conditional video generation, когда для каждого кадра есть семантическая информация, например, карта сегментации, по которой генерируется реалистичное видео
Подробнее тут: https://teletype.in/@ploshkin/vid2vid
Это основная статья про видео-дипфейки. В ней впервые предложен фреймворк для conditional video generation, когда для каждого кадра есть семантическая информация, например, карта сегментации, по которой генерируется реалистичное видео
Подробнее тут: https://teletype.in/@ploshkin/vid2vid
Teletype
Video-to-Video Synthesis
https://arxiv.org/abs/1808.06601
Слишком объёмный разбор получился, больше времени потратил на публикацию, чем на сам разбор. Причём в разы)
Успокаиваю себя тем, что это реально очень нужная мне статья, и ещё не раз пригодится. Плюс дальше будет несколько опирающихся на неё статей
В общем, дальше посты будут поменьше
Успокаиваю себя тем, что это реально очень нужная мне статья, и ещё не раз пригодится. Плюс дальше будет несколько опирающихся на неё статей
В общем, дальше посты будут поменьше
📄 Few-shot Video-to-Video Synthesis [NeurIPS 2019]
Статья-продолжение vid2vid. Здесь предлагается решение задачи «как сгенерировать видео из домена, которого не было в обучении». Главная идея — модуль, который на основе картинок-примеров генерирует веса для другого модуля — генерации картинок
Пересказ тут: https://teletype.in/@ploshkin/few-shot-vid2vid
Статья-продолжение vid2vid. Здесь предлагается решение задачи «как сгенерировать видео из домена, которого не было в обучении». Главная идея — модуль, который на основе картинок-примеров генерирует веса для другого модуля — генерации картинок
Пересказ тут: https://teletype.in/@ploshkin/few-shot-vid2vid
Teletype
Few-shot Video-to-Video Synthesis
https://arxiv.org/abs/1910.12713
📄 World-consistent Video-to-Video Synthesis [ECCV 2020]
Достигнута глобальная консистентность синтезируемого видео: теперь, если объект появляется в видео повторно, гарантируется, что его внешний вид будет таким же, как и раньше.
Для этого при генерации кадр за кадром строится 3D point-cloud сцены, чтобы «помнить» состояние всех точек. Для нового кадра сцена проектируется на плоскость камеры, и получается guidance image, который служит ориентиром для цветов в новом кадре
Детали: https://teletype.in/@ploshkin/world-consistent-vid2vid
Достигнута глобальная консистентность синтезируемого видео: теперь, если объект появляется в видео повторно, гарантируется, что его внешний вид будет таким же, как и раньше.
Для этого при генерации кадр за кадром строится 3D point-cloud сцены, чтобы «помнить» состояние всех точек. Для нового кадра сцена проектируется на плоскость камеры, и получается guidance image, который служит ориентиром для цветов в новом кадре
Детали: https://teletype.in/@ploshkin/world-consistent-vid2vid
Teletype
World-Consistent Video-to-Video Synthesis
https://arxiv.org/abs/2007.08509
📄 pix2pixHD [CVPR 2018]
Развитие статьи pix2pix для conditional-генерации реалистичных картинок высокого разрешения. Эта работа послужила фундаментом и proof-of-concept для vid2vid-подходов.
Здесь предложены разные работающие хаки для стабилизации обучения GAN’ов:
* coarse-to-fine генератор
* разномасштабные дискриминаторы
* feature-matching лосс
* использование инстанс-сегментации
Помимо этого этого предложен способ, как на инференсе влиять на синтезируемый контент (например, как превратить асфальтовую дорогу в брусчатку)
Подробные хайлайты: https://teletype.in/@ploshkin/pix2pixhd
Развитие статьи pix2pix для conditional-генерации реалистичных картинок высокого разрешения. Эта работа послужила фундаментом и proof-of-concept для vid2vid-подходов.
Здесь предложены разные работающие хаки для стабилизации обучения GAN’ов:
* coarse-to-fine генератор
* разномасштабные дискриминаторы
* feature-matching лосс
* использование инстанс-сегментации
Помимо этого этого предложен способ, как на инференсе влиять на синтезируемый контент (например, как превратить асфальтовую дорогу в брусчатку)
Подробные хайлайты: https://teletype.in/@ploshkin/pix2pixhd
Teletype
pix2pixHD: High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
https://arxiv.org/abs/1711.11585
Вообще я понял, что погорячился с идеей разбирать по статье каждый день. На посты у меня уходит по 2–3 часа (уже не 6 как в первый раз), но они помогают хорошо структурировать информацию и лучше запомнить
Поэтому, чтобы не страдало погружение, подробность постов и я сам, я решил постить раз в 2 дня — типа день на чтение, и день на написание
Но челлендж был 1 день — 1 статья и так 30 дней, так что формально если я таки разберу 30 статей, условия будут выполнены 🤡🤡🤡
Поэтому, чтобы не страдало погружение, подробность постов и я сам, я решил постить раз в 2 дня — типа день на чтение, и день на написание
Но челлендж был 1 день — 1 статья и так 30 дней, так что формально если я таки разберу 30 статей, условия будут выполнены 🤡🤡🤡
📄 SPADE [CVPR 2019]
Новый подход в conditional-генерации картинок: оказывается, карты сегментации нельзя пропускать через нормализацию — теряется пространственная информация. Поэтому авторы предложили выбросить энкодер и прокидывать семантику через adaptive-денормализацию, причём так, чтобы у каждого пикселя были свои параметры преобразования. А эти параметры вычислять с помощью небольших fully-conv сетей.
Но самое главное: теперь есть настоящая демка! Там можно в реалтайме нарисовать карту сегментации для пейзажа, а сетка сгенерирует картинку:
http://nvidia-research-mingyuliu.com/gaugan
Люблю, когда можно наглядно посмотреть результат, а не только черрипикнутые картинки в статье 🌚
Press F to see details: https://teletype.in/@ploshkin/spade
Новый подход в conditional-генерации картинок: оказывается, карты сегментации нельзя пропускать через нормализацию — теряется пространственная информация. Поэтому авторы предложили выбросить энкодер и прокидывать семантику через adaptive-денормализацию, причём так, чтобы у каждого пикселя были свои параметры преобразования. А эти параметры вычислять с помощью небольших fully-conv сетей.
Но самое главное: теперь есть настоящая демка! Там можно в реалтайме нарисовать карту сегментации для пейзажа, а сетка сгенерирует картинку:
http://nvidia-research-mingyuliu.com/gaugan
Люблю, когда можно наглядно посмотреть результат, а не только черрипикнутые картинки в статье 🌚
Press F to see details: https://teletype.in/@ploshkin/spade
Teletype
SPADE: Semantic Image Synthesis with Spatially-Adaptive Normalization
https://arxiv.org/abs/1903.07291
📄 UNIT: Unsupervised Image-to-Image Translation Networks [NeurIPS 2017]
Продолжаем разбирать статьи из репозитория imaginaire
В этой работе решается общая задача image-to-image translation между двумя доменами. Поскольку сбор обучающей выборки с разметкой может быть очень дорогим (дневная / ночная съёмка) или вообще невозможным (превращение пород собак), на помощь приходит unsupervised-обучение. Имея два независимых множества картинок из разных доменов хочется смоделировать функцию, способную переводить один домен в другой не нарушая семантику.
Для этого часто используется условие cycle-consistency (см. CycleGAN), но авторы пошли дальше и предложили shared-latent space, когда для двух соответствующих картинок латентные коды в некотором пространстве совпадают.
Что из этого вышло, можно посмотреть по ссылке: https://teletype.in/@ploshkin/unit
Продолжаем разбирать статьи из репозитория imaginaire
В этой работе решается общая задача image-to-image translation между двумя доменами. Поскольку сбор обучающей выборки с разметкой может быть очень дорогим (дневная / ночная съёмка) или вообще невозможным (превращение пород собак), на помощь приходит unsupervised-обучение. Имея два независимых множества картинок из разных доменов хочется смоделировать функцию, способную переводить один домен в другой не нарушая семантику.
Для этого часто используется условие cycle-consistency (см. CycleGAN), но авторы пошли дальше и предложили shared-latent space, когда для двух соответствующих картинок латентные коды в некотором пространстве совпадают.
Что из этого вышло, можно посмотреть по ссылке: https://teletype.in/@ploshkin/unit
Teletype
UNIT: Unsupervised Image-to-Image Translation Networks
https://arxiv.org/abs/1703.00848
📄 MUNIT: Multimodal Unsupervised Image-to-Image Translation [ECCV 2018]
Авторы работы добились мультимодальной генерации картинок между двумя доменами. Теперь не нужно обучать модель для каждой пары пород собак, т.к. порода — это просто стиль собаки 🐶
Для этого общее латентное пространство разделяется на 2: content и style, причём общим остаётся только content-пространство, а style-пространство своё у каждого домена. Сэмплируя стиль при генерации, авторы получают разные результаты.
Также в работе есть несколько теоретических результатов, наиболее важный из которых — доказательство, что cycle-consistency приводит к дельта-функциям распределения латентных кодов и как следствие к унимодальным результатам генерации.
10 эмбеддингов стиля из 10: https://teletype.in/@ploshkin/munit
Авторы работы добились мультимодальной генерации картинок между двумя доменами. Теперь не нужно обучать модель для каждой пары пород собак, т.к. порода — это просто стиль собаки 🐶
Для этого общее латентное пространство разделяется на 2: content и style, причём общим остаётся только content-пространство, а style-пространство своё у каждого домена. Сэмплируя стиль при генерации, авторы получают разные результаты.
Также в работе есть несколько теоретических результатов, наиболее важный из которых — доказательство, что cycle-consistency приводит к дельта-функциям распределения латентных кодов и как следствие к унимодальным результатам генерации.
10 эмбеддингов стиля из 10: https://teletype.in/@ploshkin/munit
Teletype
MUNIT: Multimodal Unsupervised Image-to-Image Translation
https://arxiv.org/abs/1804.04732
У меня тут произошли разные случайные и не очень события, поэтому пришлось пару недель почилить без статей
Хайлайтом было то, что меня попросили выступить referee для кандидата в американский стартап. Интересный опыт, теперь я чуть лучше понимаю, что спрашивают на таких интервью, как надо к ним готовиться и кого самому выбирать в качестве referee. Стресс от общения тоже был, но я постарался и надеюсь, там всё сложится 🌚
А теперь к статьям 🌝
Хайлайтом было то, что меня попросили выступить referee для кандидата в американский стартап. Интересный опыт, теперь я чуть лучше понимаю, что спрашивают на таких интервью, как надо к ним готовиться и кого самому выбирать в качестве referee. Стресс от общения тоже был, но я постарался и надеюсь, там всё сложится 🌚
А теперь к статьям 🌝
📄 StyleGAN: A Style-Based Generator Architecture for Generative Adversarial Networks [CVPR 2019]
Из разбора вы узнаете:
🥑 Почему StyleGAN не переносит стиль
🥑 Как развязать пространство признаков
🥑 Что кроется за скрещиванием стилей
🥑 Как измерить длину пути между картинками
🍆 Как правильно обрезать генератор и не пострадать
Читайте, уже можно: https://teletype.in/@ploshkin/stylegan
Из разбора вы узнаете:
🥑 Почему StyleGAN не переносит стиль
🥑 Как развязать пространство признаков
🥑 Что кроется за скрещиванием стилей
🥑 Как измерить длину пути между картинками
🍆 Как правильно обрезать генератор и не пострадать
Читайте, уже можно: https://teletype.in/@ploshkin/stylegan
Teletype
StyleGAN: A Style-Based Generator Architecture for Generative Adversarial Networks
https://arxiv.org/abs/1812.04948
как говорил классик, хороший камбек должен быть тщательно подготовлен
Всем привет! Меня зовут Саша @ploshkin, а это мой канал ML-ной направленности: здесь ситуативные разборы статей, случайные мемы и нерегулярные репосты более популярных каналов
Я руковожу группой в R&D рекомендательных технологий Яндекса. Днём мы разрабатываем новые методы ранжирования рекламы, а в свободное время контрибьютим в опенсорс — в 2025, например, выложили Yambda
Но так было не всегда — до перехода в рексистемы я 5 лет занимался разным компьютерным зрением, а в универе копал в 3D- и 360-видео в видеогруппе МГУ
В этом сезоне у меня есть ощущение, что ad tech — очень интересная область. В ней сочетаются подходы из современных рексистем, теория аукционов, дизайн механизмов, высокие нагрузки и разные костыли, чтобы всё это работало. Я неплохо шарю в части рекомендательного стека и хочу разобраться в остальном
Помимо этого мне нравится recsys в целом, т.к. это одна из последних областей DL, в которой до сих пор нет единого подхода и накручивания бенчмарков через агентов и тулколлинг. В общем, по сравнению с NLP и CV здесь дикий запад — и это весело!
Поэтому в ближайшее время планирую тут писать про
• устройство рекламных сетей в целом
• математику аукционов
• новые подходы в ранжировании
• генеративные и end-to-end рексистемы
Я руковожу группой в R&D рекомендательных технологий Яндекса. Днём мы разрабатываем новые методы ранжирования рекламы, а в свободное время контрибьютим в опенсорс — в 2025, например, выложили Yambda
Но так было не всегда — до перехода в рексистемы я 5 лет занимался разным компьютерным зрением, а в универе копал в 3D- и 360-видео в видеогруппе МГУ
В этом сезоне у меня есть ощущение, что ad tech — очень интересная область. В ней сочетаются подходы из современных рексистем, теория аукционов, дизайн механизмов, высокие нагрузки и разные костыли, чтобы всё это работало. Я неплохо шарю в части рекомендательного стека и хочу разобраться в остальном
Помимо этого мне нравится recsys в целом, т.к. это одна из последних областей DL, в которой до сих пор нет единого подхода и накручивания бенчмарков через агентов и тулколлинг. В общем, по сравнению с NLP и CV здесь дикий запад — и это весело!
Поэтому в ближайшее время планирую тут писать про
• устройство рекламных сетей в целом
• математику аукционов
• новые подходы в ранжировании
• генеративные и end-to-end рексистемы
🔥7 2 2
attention deficit pinned «Всем привет! Меня зовут Саша @ploshkin, а это мой канал ML-ной направленности: здесь ситуативные разборы статей, случайные мемы и нерегулярные репосты более популярных каналов Я руковожу группой в R&D рекомендательных технологий Яндекса. Днём мы разрабатываем…»
Зачем нужны аукционы в рекламных сетях
Рекламы в интернете много, и это очень прибыльная область. Судя по фин. отчётам, у яндекса она составляет 30% годовой выручки, у гугла 70% и у меты почти 100%. Я даже слышал мысль, что общий объём трат на рекламу всегда занимает некоторую фиксированную долю от ВВП
Может показаться, что если вы умеете накидать двухбашенную модель и выучить распределение
В реальности у интернет-рекламы есть 3 стороны, каждая из которых оптимизирует свою выгоду:
1. пользователь — в идеале сидит с адблоком, но если нет, то хочет релевантную рекламу, ведущую к покупке;
2. рекламодатель — хочет вложить фиксированный бюджет и получить за него максимум продаж;
3. площадка — максимизирует долгосрочный доход с учётом удержания пользователей и рекламодателей.
Итого мы имеем двусторонний рынок: площадки предоставляют услуги по размещению рекламы, рекламодатели выкупают эти размещения. Аудитория выступает регуляризатором — нельзя подсунуть всем кликбейт или дорогие нерелевантные баннеры и рассчитывать, что трафик через месяц не обнулится
На этом рынке стороны имеют разную приватную информацию: рекламодатель знает, сколько для него стоит привлечение клиента, а рекламная сеть обладает данными о пользователях и умеет предсказывать
Для этого и появляется аукцион: каждый рекламодатель делает ставку, сколько он готов заплатить за то, чтобы его баннер увидел конкретный пользователь в конкретном контексте. При этом ставка должна отражать ценность привлечения клиента для его бизнеса, а как этого добиться — отдельная большая тема. В итоге ранжирование происходит по формуле:
Она объединяет интересы обеих сторон рынка и отражает ценность для рекламодателя — в идеальном мире это буквально доход, который получает рекламодатель от 1000 показов (осторожно! тут неочевидный переход от расходов к доходам — об этом поговорим в посте про дизайн аукционов). А в множитель
Самая ML-ная часть находится в компоненте
Важно понимать, что прод устроен значительно сложнее — система умеет обрабатывать разные варианты оплаты (за показы, клики или конверсии), делать ставки за рекламодателя в зависимости от скорости трат, проклеивать конверсии с сайтов рекламодателей и много чего ещё
———
CTR = click-through rate
CVR = conversion rate
CPM = cost per mille
eCPM = effective CPM
Рекламы в интернете много, и это очень прибыльная область. Судя по фин. отчётам, у яндекса она составляет 30% годовой выручки, у гугла 70% и у меты почти 100%. Я даже слышал мысль, что общий объём трат на рекламу всегда занимает некоторую фиксированную долю от ВВП
Может показаться, что если вы умеете накидать двухбашенную модель и выучить распределение
p(click|show), то дело останется за малым — привлечь рекламодателей, подключить площадки и начать откручивать баннеры, собирая при этом котлеты денег. Но всё немного сложнееВ реальности у интернет-рекламы есть 3 стороны, каждая из которых оптимизирует свою выгоду:
1. пользователь — в идеале сидит с адблоком, но если нет, то хочет релевантную рекламу, ведущую к покупке;
2. рекламодатель — хочет вложить фиксированный бюджет и получить за него максимум продаж;
3. площадка — максимизирует долгосрочный доход с учётом удержания пользователей и рекламодателей.
Итого мы имеем двусторонний рынок: площадки предоставляют услуги по размещению рекламы, рекламодатели выкупают эти размещения. Аудитория выступает регуляризатором — нельзя подсунуть всем кликбейт или дорогие нерелевантные баннеры и рассчитывать, что трафик через месяц не обнулится
На этом рынке стороны имеют разную приватную информацию: рекламодатель знает, сколько для него стоит привлечение клиента, а рекламная сеть обладает данными о пользователях и умеет предсказывать
p(click|show) = pCTR. Возникает задача: распределить дефицитный слот между рекламодателями при условии разной ценности для нихДля этого и появляется аукцион: каждый рекламодатель делает ставку, сколько он готов заплатить за то, чтобы его баннер увидел конкретный пользователь в конкретном контексте. При этом ставка должна отражать ценность привлечения клиента для его бизнеса, а как этого добиться — отдельная большая тема. В итоге ранжирование происходит по формуле:
eCPM = bid × pCTR × pCVR (× quality)Она объединяет интересы обеих сторон рынка и отражает ценность для рекламодателя — в идеальном мире это буквально доход, который получает рекламодатель от 1000 показов (осторожно! тут неочевидный переход от расходов к доходам — об этом поговорим в посте про дизайн аукционов). А в множитель
quality (в некоторых системах это аддитивная добавка) зашиты все возможные костыли, которые в маркетинговых материалах можно обозвать "качеством баннера"Самая ML-ная часть находится в компоненте
pCTR × pCVR — здесь работает полноценный рекомендательный стек с кандидатогенерацией, сложными нейросетевыми фичами и несколькими стадиями ранжирования. В некоторых компаниях научились заменять его на генеративную end-to-end систему и сверху наворачивать стадию алайнмента — про это обязательно будет серия постовВажно понимать, что прод устроен значительно сложнее — система умеет обрабатывать разные варианты оплаты (за показы, клики или конверсии), делать ставки за рекламодателя в зависимости от скорости трат, проклеивать конверсии с сайтов рекламодателей и много чего ещё
———
CTR = click-through rate
CVR = conversion rate
CPM = cost per mille
eCPM = effective CPM
🔥6 1