CV Time
2.74K subscribers
178 photos
6 videos
91 links
Канал о компьютерном зрении от ml-специалистов Яндекса: разбор актуальных статей, горячие обсуждения и личный опыт из первых рук. Присоединяйтесь!

Вопросы и предложения > @yandex_ml_brand
Download Telegram
Личный опыт инженеров Яндекса — Антон Клочков

Продолжаем рассказывать об ML`щиках в Яндексе, их успехах и трендах, на которые они делают ставку. Сегодня наш герой — руководитель подгруппы распознавания текста в VLM Антон Клочков.

Больше карточек — по хештэгу #YaMLpeople.

CV Time
🔥115👍2🤡2
VideoLLaMA 3: Frontier Multimodal Foundation Models for Image and Video Understanding

Сегодня разбираем статью о VideoLLaMA 3. По сути — это «yet another VLM» со стандартной архитектурой, описанной на многим знакомой схеме, но есть интересные детали.

Авторы называют свою модель вижнцентричной (vision-centric) — она умеет работать и с видео, и с картинками. В решении используется визуальный энкодер, который обрабатывает изображения покадрово. Картинки передаются в динамическом разрешении и проходят через визуальный трансформер в исходном размере.

С видео можно поступить так же, но это приводит к взрывному росту числа токенов, который выходит за пределы контекста опенсорсных моделей. Чтобы решить эту проблему, авторы вводят компонент под названием Video Compressor.

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

Такой подход авторы называют Differential Frame Pruner. Он позволяет обрабатывать видео, сохраняя единый визуальный энкодер для картинок и видео.

Обучение проходит в четыре стадии:

1. Vision Encoder Adaptation
— обучают только визуальный энкодер и проекционный слой. Используют SigLIP, который работает с фиксированными разрешениями, и адаптируют его под произвольные. Процесс идёт в VLM-сетапе: визуально-языковая модель заморожена, а SigLIP и проекция — разморожены. Обучение проводят на кэпшенах, документах и Scene Text (BLIP3-OCR-Recap), охватывая разные домены.

2. Vision-Language Alignment — аналог претрейна: вся сеть разморожена, обучают на максимальном объёме данных.

3. Multi-task Fine-tuning — используют более качественные данные. Хотя их объём почти совпадает с претрейном, здесь больше детализированных срезов.

4. Video-centric Fine-tuning — основной упор на видео и текст, изображений в обучающей выборке меньше.

Интересен первый этап, где визуальный энкодер адаптируют к произвольному разрешению в VLM-сетапе. Дальше обучение идёт по стандартному сценарию.

Детали реализации

Авторы используют опенсорсные датасеты для кэпшенов (COYO 700M, VL3-Syn7M) и предлагают свой способ перекэпшенивания картинок.

Сначала делают базовую фильтрацию по Aspect Ratio и Aesthetic Score. Затем применяют подход Text-Image Similarity Calculation: генерируют кэпшен через BLIP2, вычисляют CLIP-скор между ним и картинкой. Если скор низкий, картинку считают сложной, плохой или нерелевантной — и отбрасывают. Выбор BLIP2 неочевиден, поскольку он генерирует слабые кэпшены, но для фильтрации сложных изображений метод выглядит рабочим.

Дальше кластеризуют фичи через CLIP и выбирают изображения из каждого кластера в равных пропорциях. Затем перекэпшенивают их с помощью InternVL2-26B и получают набор синтетических кэпшенов, которые считают качественными.

Отдельно интересен способ подачи видео — Timestep Token. Видео позиционно кодируют текстом, добавляя текстовые токены в соответствии с длительностью фрейма. Влияет ли это на качество, неясно, ablation-экспериментов нет. Другие работы, например Qwen, используют отдельные позиционные эмбеддинги с темпоральным измерением, а здесь просто прописывают время текстом.

Тесты проводились на мультимодальных бенчмарках и показали, что модель стабильно опережает Qwen2.5-VL, но подробного сравнения нет. В целом главная проблема статьи — отсутствие полноценных ablation-экспериментов.

Также интересно, что несмотря на название VideoLLaMA3, Llama здесь нет: в качестве языковой модели используют Qwen2.5-2B, в качестве визуальной — SigLIP.

Обзор подготовил Андрей Чернов

CV Time
Please open Telegram to view this post
VIEW IN TELEGRAM
👍86🔥4👏2👌1
Яндекс выпустил диффузионную модель YandexART 2.5

Сегодня мы зарелизили нашу лучшую модель text-to-image генерации YandexART 2.5. Дополнительно приятно, что некоторые её создатели были авторами разборов в этом канале.

Как удалось добиться нужного качества:

— Увеличили размер латентного пространства. Теперь автокодировщик VAE работает с 16 каналами (вместо четырёх, как раньше).

— Применили технологию «супирования». Когда независимо файнтюним несколько моделей и усредняем их веса.

— Улучшили датасет для обучения, который включает пары «текст-картинка». Теперь для каждой картинки разными моделями генерируется несколько описаний, а также берётся текст, описывающий это изображение в интернете. Метамодель выбирает лучший из предложенных текстов — именно он идёт в обучение.

— Увеличили и сам датасет. Теперь его размер приблизился к 1 млрд пар картинок и описаний к ним.

— Ускорили модель с помощью multistep consistency distillation. Благодаря этому подходу генерация стала в 9 раз быстрее.

Всё это и многое другое позволило переиграть Midjourney 6.1 и некоторые SOTA-модели. В таблице показана доля побед YandexART 2.5 Pro, а зелёным отмечены победы нашей модели в сравнении с другими.

Модель уже в Шедевруме — пробуйте первыми, делитесь впечатлениями и результатами.

CV Time
19👍9🍾7🔥2
FoundationStereo: Zero-Shot Stereo Matching

Сегодня разбираем статью от NVIDIA. Исследователи решают задачу определения глубины по двум изображениям, снятым с близко расположенных камер, то есть со стереопары. Камеры смотрят в одном направлении, поэтому каждая 3D-точка попадает приблизительно на одну строку в обеих картинках, но в разных местах. Это позволяет искать соответствия между пикселями одной и той же строки двух изображений, и, используя эти соответствия, восстанавливать глубину сцены.

Определив соответствия между точками на двух изображениях, можно вычислить диспаритет — сдвиг координат пикселя на одной картинке относительно другой. Зная диспаритет, фокусное расстояние и расстояние между оптическими центрами камер, можно пересчитать его в глубину.

Исследователи из NVIDIA говорят, что сейчас нет модели стерео-матчинга, которая бы показывала хорошую zero-shot-генерализацию. Текущие лучшие решения предлагается дообучать на целевой домен.

В других задачах проблему генерализации уже удалось решить за счёт больших данных. Например, Segment Anything обучили на огромном датасете, и модель успешно работает без дообучения. NVIDIA попробовала применить этот же подход к стерео-матчингу. Они собрали фотореалистичный синтетический датасет FSD (картинка 2) из миллиона стереопар, превосходя по объёму и многообразию другие открытые датасеты. Датасет выложен в открытый доступ.

Детали архитектуры

Из левого и правого изображений (картинка 1) извлекаются фичи из Depth Anything, конкатенируются с фичами из отдельной обучаемой свёрточной сети. Из этой пары создаётся feature cost volume — объём фичей, где каждая описывает похожесть пикселя на левой картинке на пиксели в той же строке на правой картинке и корреляционный cost volume, где похожесть пикселей описывается единственным числом.

Такие cost volume’ы уже можно использовать для поиска диспаритета, но в них недостаёт глобального контекста картинок. Чтобы его добавить, применяется операция AHCF (Attentive Hybrid Cost Filtering), особенность которой — использование информации из всего cost volume для получения значений в финальном пикселе выходного тензора; это делается с помощью глобального внимания в transformer-ветви AHCF и с помощью аналога separable-свёрток в свёрточной ветви AHCF. Изменение по ablation даёт 10% улучшения по метрике BP-2: доля пикселей, где ошибка диспаритета больше 2 пикселей (0.221 → 0.197).

Дальше процесс похож на описанный в RAFT-Stereo, но с некоторыми отличиями. В RAFT-Stereo сеть получает на вход hidden state и срез из correlation cost volume. В Foundation Stereo получает срезы из correlation cost volume и feature cost volume.

Таким образом, вход в GRU включает:

— срез cost volume в соответствии с текущей оценкой диспаритета;
— фичи левой картинки из отдельно обучаемой контекстной сети (так делалось и в RAFT-Stereo);
— саму текущую оценку диспаритета.
GRU обновляет внутреннее состояние и предсказывает поправку, итеративно уточняя диспаритет.

Детали обучения

Модель обучается на смеси FSD-датасета и других датасетов с smoothed L1-лоссом и экспоненциально затухающими L1-добавками для оценок на диспаритет с разных итераций GRU-юнита.

Данные из FSD дополнительно фильтруют по BP-2, используя эту же модель, обученную на полном FSD-датасете, а затем обучают ёще раз.

Интересное из ablation study:

— использование Depth Anything фичей как входов в feature cost volume не работает совсем (по метрике BP-2);
— в separable-свертках для фильтрации feature cost volume используется ядро размера 17(!) по размерности диспаритета (но 1 по spatial-размерности);
— добавление FSD-датасета в обучение даёт BP-2 на датасете Middlebury в два раза лучше, чем без него.

Разбор подготовил Леонид Штанько

CV Time
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥127👍6👀1
Тематическая подборка статей: генерация

Подобрали свежие статьи о генеративных моделях. В этот раз — обсуждают, как улучшить токенизацию для диффузионных моделей, дистиллировать CFG и оптимизировать обучение генератора. А ещё есть работа о том, как интерпретировать внимание в Diffusion Transformers и использовать его для сегментации.

Автоэнкодеры

Reconstruction vs. Generation: Taming Optimization Dilemma in Latent Diffusion Models
Авторы говорят, что увеличение числа каналов в автоэнкодере улучшает реконструкцию (что логично), но делает задачу для генератора более сложной, приводя к ухудшению генераций. Предлагают дополнительным лоссом предсказывать признаки от бэкбона (dino/mae/etc) — это делает фичи автоэнкодера более «простыми» для генератора и улучшает его сходимость.

Masked Autoencoders Are Effective Tokenizers for Diffusion Models
Развитие предыдущей работы: связали улучшение качества представления автоэнкодера с уменьшением числа мод в mixture of gaussian модели, и переделали архитектуру автоэнкодера в MAE-трансформер.

Эдитинг

REALEDIT: Reddit Edits As a Large-scale Empirical Dataset for Image Transformations
В статье предлагают парсить Reddit для сбора датасета по эдитингу картинок: брать треды, где пользователи просят отфотошопить их картинки. Отбирают посты до 2021 года, чтобы в них не было применения AI.

Ускорение

DICE: Distilling Classifier-Free Guidance into Text Embeddings
Авторы говорят, что можно дистиллировать Classifier-Free Guidance (CFG), включая negative prompt, в небольшую нейронку поверх текстовых эмбеддов.

Visual Generation Without Guidance
В статье предлагают алгоритм обучения генератора, для которого потом не нужно делать CFG. Заявляют, что это работает лучше, чем дистилляция.

RL

Calibrated Multi-Preference Optimization for Aligning Diffusion Models
Исследователи из Google предлагают метод, который, по их утверждению, лучше, чем Direct Preference Optimization (DPO), благодаря аккуратному выбору пар для обучения и более хитрой функции потерь.

Diffusion Model as a Noise-Aware Latent Reward Model for Step-Level Preference Optimization
Предлагают делать RL непосредственно в латентном пространстве — для этого нужна reward-модель, способная в нём работать. Говорят, что идеально подходит предобученная диффузионная модель, которую можно дообучить на предсказание reward’а. Утверждают, что это упрощает пайплайн обучения и улучшает финальное качество.

Другое

ConceptAttention: Diffusion Transformers Learn Highly Interpretable Features
Авторы говорят, что можно использовать предобученную диффузионную модель для получения SOTA сегментационных масок в zero-shot-режиме. Для этого делают надстройку над аттеншн-слоями в DiT'е.

Подборку подготовил Артём Конев
CV Time
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥5👍3
PartEdit: Fine-Grained Image Editing using Pre-Trained Diffusion Models

Сегодня разбираем статью о редактировании изображений. Авторы показывают, как с помощью предобученной диффузионной модели SDXL можно детально изменять заданные сегменты на изображении.

Предложенный метод требует обучения токенов частей картинки на датасете, где для каждой картинки и целевого токена есть маска, соответствующая области, которую нужно изменить. В промпт подаются два токена, например: <head> (токен головы) и <BG> (бэкграунд для головы). Причём токен бэкграунда (<BG>) уникален для каждого целевого токена.

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

Авторы отдельно изучают, в каком диапазоне (от 0 до 50, где 0 — почти чистое изображение, а 50 — максимально зашумлённое) лучше брать усреднение. При обучении на таймстемпах [50, 40] маски получаются некачественные. В диапазоне [30, 20] результат лучше. При [10, 0] — чуть хуже, чем на среднем.

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

1. Генерация исходного синтетического изображения. Например, по промпту "A closeup of a man" в качестве промпта подаётся, например, "A closeup of a man", где мы хотим заменить голову человека на голову робота. SDXL генерирует изображение и при этом сохраняется траектория — промежуточные латенты для каждого таймстемпа.

2. Средняя часть архитектуры работает как сегментатор: в SDXL подаются только два выученных эмбеддинга: части, которую нужно отредактировать и бэкграунда. В нашем примере это будет <head> и <BG>.

Для каждого таймстемпа собираются все маски аттеншна со всех слоёв (предварительно приводятся к одному размеру и агрегируются). Затем применяется алгоритм OTSU, который вычисляет локальный порог: если значение больше порога — это единица, если меньше — ноль, а в промежутке от 1/2K до 3/2K маска просто сохраняется.

3. Генерация отредактированного изображения: через SDXL прогоняются выученные эмбеддинги того, что нужно заменить (например, чтобы получить "A closeup of a man with robotic <head>").

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

Решение применимо не только к синтетическим, но и к реальным изображениям: с помощью методов инверсии LEDIT++ и EF-DDPM получают латенты, а с помощью BLIP2 — промпт-описание исходной картинки.

В сравнениях с другими подходами в качестве метрики используется Alpha-CLIP: по маске определяется область редактирования, а с помощью CLIP считается, насколько результат соответствует заданному промпту. Как водится — по всем метрикам результаты превосходят конкурентов.


Разбор подготовил Александр Шишеня
CV Time
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🔥3
Личный опыт инженеров Яндекса — Дмитрий Баранчук

Продолжаем рассказывать об ML-инженерах и исследователях в Яндексе. Сегодня о своих задачах, успехах и профессиональных ожиданиях рассказал руководитель команды исследователей по генеративному CV в Yandex Research.

Работы, о которых Дима говорит в карточках:

Switti: Designing Scale-Wise Transformers for Text-to-Image Synthesis;
Invertible consistency distillation for text-guided image editing in around 7 steps.

Больше карточек — по хештэгу #YaMLpeople.

CV Time
21🔥6👍2
Lost and Found: Overcoming Detector Failures in Online Multi-Object Tracking

Сегодня разбираем статью с ECCV’24, в которой предложили метод улучшения онлайн-трекинга BUSCA. Это надстройка над любыми современными трекерами в парадигме Tracking-by-Detection (TbD), помогающая не терять треки при пропуске объектов детектором.

В подходах TbD объекты сначала детектируют, затем соотносят с существующими треками. Проблема в том, что даже лучшие детекторы периодически теряют объекты, особенно при их низкой видимости. Из-за этого треки прерываются. BUSCA решает эту проблему, продолжая треки даже без детекций.

Архитектура BUSCA

В основе метода — Decision Transformer, работающий полностью в онлайн-режиме (без изменения прошлых результатов или доступа к будущим кадрам).

После стандартного сопоставления детекций с треками, несматченные треки обрабатываются BUSCA, которая анализирует:

Candidate proposal B: прогнозируемую позицию объекта с помощью фильтра Калмана;

Contextual proposals C: Q=4 ближайших объекта из успешно отслеживаемых треков на текущем кадре (для учёта окружения);

Learned tokens L: специальные токены [Halluc.] для обнаружения искажённых треков и [Miss.], когда объект покинул сцену или все предложения неподходящие.

Обработка токенов различается:

- Трековые наблюдения (несколько последних наблюдений из несматченного трека), Candidate и Contextual proposals проходят через ResNet-50 для извлечения 512-мерных визуальных признаков;
- Learned tokens и разделительный токен [SEP] инициализируются случайно и обучаются совместно с остальной архитектурой.

Все токены получают специальное пространственно-временное кодирование (STE), отражающее относительные время, размеры и расстояние до последнего наблюдения трека.

Затем Decision Transformer обрабатывает все токены вместе. Полученные представления предложений проходят через MLP-слой для генерации их вероятностей. Если выбирается candidate B — трек продолжается с обновлёнными координатами, в остальных случаях — ставится на паузу.

Эксперименты

BUSCA особенно эффективна для объектов с низкой видимостью и увеличивает среднюю длину треков. Метод обучался только на синтетических данных (MOTSynth) и работает со скоростью около 45 мс на кадр на NVIDIA RTX GPU.

BUSCA протестирована на пяти трекерах (ByteTrack, StrongSORT, GHOST, TransCenter, CenterTrack) и улучшила все ключевые метрики на MOT16, MOT17 и MOT20.

Разбор подготовила Мария Поклонская
CV Time
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116🔥2
Чемодан — аэропорт — иии… Нас встречает бананово-лимонный Сингапур! А уже завтра стартует ICLR`25.
29🔥18👍2