Интересное что-то
548 subscribers
2.77K photos
253 videos
140 files
4.57K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from Concise Research (Sergey Kastryulin)
A Comprehensive Study of Decoder-Only LLMs for Text-to-Image Generation

В области text-to-image генерации давно стоит вопрос: какой текстовый энкодер использовать лучше? Сейчас каждый делает на свой лад: кто-то по инерции использует CLIP и T5 (как в DALL-E и Imagen), кто-то переходит на LLM decoder-only трансформеры (Lumina, SANA) без особой экспериментальной аргументации

В этой работе авторы:
▶️Берут 12 текстовых энкодеров, включая CLIP, T5, Mistral разных размеров + instruct версию, Gemma и Qwen, а также эмбедеры на их основе
▶️Учат 27 SDv2-like диффузионок к U-Net архитектурой на семпле 46М из LAION-Aesthetics
▶️Замеряют результаты на GenAI-Bench — это такой набор 1,600 очень подробных промтов, после генераций по которым VLM оценивает навыки генератора

Для контекста важно вспомнить, что для использования CLIP и T5 обычно берут эмбединг их последнего слоя. Ранние работы по использованию LMок для диффузии делали также

Итак, что удалось выяснить:
▶️У LLMок эмбед последнего слоя плохой из-за оверфита под задачу предсказания последнего токена. Эмбеды средних слоёв существенно информативнее и дают лучшее качество обученной с их использованием диффузии
▶️Если комбинировать несколько средних слоёв, то это ещё сильнее бустит качество и позволяет обгонять T5 и CLIP
▶️Выходы моделей-эмбедеров бывают разного качества: bge-Gemma2 — крутая, остальные рассмотренные — не очень. По умолчанию лучше использовать обычные LMки
▶️Для моделей-эмбедеров тоже можно комбинировать несколько средних слоёв, это тоже улучшает качество
▶️Модели большего размера (7B или 9B против 1.5B или 2B) работают лучше, но буст не драматический

А еще авторы говорят, что было бы классно комбинировать представления эмбедеров и обычных LM’ок для дальнейшего улучшения качества, но оставляют верификацию этого на future work

В статье очень мало картинок, но те что есть показывают, что модели на основе правильно использованных представлений LMок лучше справляются с учётом мелких деталей промтов и отрицаниями
Please open Telegram to view this post
VIEW IN TELEGRAM
😧 Virtual Try-Off: как нейросети научились не только «одевать», но и «раздевать»? 😧
Как человек, увлечённый развитием Fashion Tech и применением компьютерного зрения в индустрии моды, я внимательно слежу за новыми направлениями и подходами. Всем уже привычна задача Virtual Try-On (VTON), когда нейросети (диффузионные модели в данный момент) виртуально примеряют одежду на изображениях людей. Однако сейчас набирает популярность противоположное направление — Virtual Try-Off (VTOFF), задача извлечения одежды с моделей и получения её канонического изображения. Это не просто новая фишка, а перспективная задача с серьёзными техническими вызовами: в отличие от традиционного VTON, где модель цифровым образом «одевается», VTOFF стремится выделить и «снять» одежду, сохранив при этом её точную форму, текстуру и даже сложные паттерны ткани.

Кстати, на идущей прямо сейчас конференции CVPR-2025 были приняты пейперы, посвящённые именно Virtual Try-Off.

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

Вот пара интересных подхода к задаче Virtual Try-Off, которые стоит изучить уже сейчас:

TryOffDiff: Virtual Try-Off via High-Fidelity Garment Reconstruction using Diffusion Models
Основная цель: получить оригинальное изображение одежды (без тела, позы и искажений) из одной фотографии одетого человека.
Ключевые идеи:
Визуальные признаки вместо текста: вместо текстовых промтов, как в классическом Stable Diffusion, TryOffDiff использует визуальные эмбеддинги, извлечённые с помощью SigLIP image encoder.
Адаптер: обучаемый модуль (Transformer + Linear + LayerNorm), который преобразует SigLIP-эмбеддинги в формат, совместимый с cross-attention слоями U-Net (77×768, как текст в SD).
Минимум обучения: обучаются только адаптер и attention-слои. Все остальные компоненты заморожены: VAE, U-Net, SigLIP.

TryOffAnyone: Tiled Cloth Generation from a Dressed Person
Основная цель: восстановить канонический вид одежды с фото одетого человека, представив её в виде тайлов (фрагментов), пригодных для переиспользования и редактирования.
Ключевые идеи:
Latent diffusion: архитектура построена вокруг латентной диффузионной модели с VAE-энкодером/декодером и денойзингом в латентном пространстве (по базе).
Множественные входы: модель получает изображение одетого человека, маску одежды и опционально изображение референса в той же одежде, но другой позе. Это помогает точнее реконструировать форму и текстуру.
Transformer-блок в U-Net: в середине диффузионной модели встроен обучаемый Transformer, содержащий self-attention и cross-attention для захвата контекста из разных источников (ну тут тоже весьма обычно).
Tile-based генерация: одежда восстанавливается в виде набора независимых латентных тайлов, что позволяет локально контролировать генерацию и уменьшить зависимость от глобальной позы. Такая декомпозиция упрощает переиспользование и адаптацию одежды к новым условиям (другая поза, фон, модель) и хорошо масштабируется в пайплайнах, ориентированных на кастомизацию и цифровой гардероб.
Frozen backbone: как и в TryOffDiff, VAE и часть U-Net заморожены, обучение фокусируется на attention и Transformer-блоках.

Оба подхода — TryOffDiff и TryOffAnyone — подчёркивают, что Virtual Try-Off нельзя рассматривать как простое дополнение к VTON. Это отдельный класс задач, требующий других архитектурных решений, способных восстанавливать геометрию, структуру и текстильные особенности одежды в отрыве от тела, позы и сцены.

@sonya_aesthetics
Please open Telegram to view this post
VIEW IN TELEGRAM
Технический фаундер — это человек, который может построить почти все.
И именно поэтому он часто строит не то
😆


Часто по привычке такие фаундеры начинают строить не для людей, а что-то технологически красивое и интересное себе,
такое, про что условно можно написать пейпер на EMNLP 👩‍🦰

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

Первая версия Aesty была жесть какая непонятная: куча параметров, кнопок, сценариев. Движок рекомендаций был классно проработан, примерки еще не было, но пользователи тем временем просто отваливались 👋

Я называю это галлюцинациями технического фаундера —
влюбиться в свое технологическое решение раньше, чем по-настоящему понять проблему 😍


Вот вам 4 примера:


1. Технология = value 😐
Кажется, что если ты сделал что-то сложное, умное, кастомное в этом уже заложена ценность.
Но нет. Пользователя не так уж интересует, насколько изящна твоя архитектура и какие бенчмарки бьет твоя фэнси модель, куда интереснее, помогает ли это его проблемам? 😐

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


2. Умная фича говорит сама за себя
Она не скажет, а затеряется и интерфейсе 😳
Спаун внимания короткий, мануал читать никто не будет.
Если это не интуитивно — это не работает.

Я стараюсь не строить фичи до тех пор, пока четко не понимаю кто ее просил, как встроится в текущий флоу и какую боль она решает 😎


3. Если юзер не понимает — это он глупый 😐
Нет, это я нафантазировала ⌨️
Если не кликают, значит, не нужно или мы нарисовали какую-то фигню

Я считаю, что любой интерфейс по умолчанию сломан, пока не доказано обратное 🤡


4. Сейчас допилим вот это — и будет ценно
Качество, а не количество, польза должна быть очень бинарной и желательно в одну кнопку

Валидация перед реализацией 🧠

Я стараюсь держать в голове одну простую мысль:
fall in love with the problem, not the solution 😎


Го делиться в комментариях что забыла 🤗

@neural_prosecco
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from КПД
На канале GPU Mode неделю назад появилось видео от Songlin Yang (гуру линейных вниманиев), где она в течение часа дает содержательный и интересный обзор области.

Кроме того, в феврале она выступала у Sasha Rush (известный персонаж на 🤗) с похожим материалом.

Рекомендую к просмотру!

[Либа с реализациями разных субквадратичных альтернатив вниманию]
Forwarded from Concise Research (Sergey Kastryulin)
Короткие разборы

Когда я только задумывал канал, в голове представлялся формат — ёмкие разборы длиной в абзац, описывающие только суть. Меня самого привлекает максимальная плотность информации, потому что читаю много и расписывать всё нет времени. Во время ICLR’25 (серия постов) вам такое заходило. Давайте пробовать еще раз (но уже без фотографий постеров 😫)

1. Ambient Diffusion Omni:
Training Good Models with Bad Data

Замечают, что при высоких уровнях шума, картинки разного технического качества выглядят одинаково. Это наблюдение помогает улучшить качество диффузионного претрена. Для этого IQA классификатором оценивают качество картинок прямо во время обучения. Если картинка хорошая - семплим как обычно шум равномерно на отрезке [0, 1]. Если картинка плохая - только на некотором отрезке [t_min, 1], где t_min - параметр, подбираемый экспериментально (на глазок или учим классификатор)

2. Angle Domain Guidance: Latent Diffusion Requires Rotation Rather Than
Extrapolation

Очень похожа на Adaptive Projected Guidance (APG), где гайденс раскладывали на линейную комбинацию скор функций и выкидывали компоненту параллельную conditional генерации, оставляя только ортогональную. Авторы говорят, что предположение линейности может плохо работать при высоких значениях guidance scale и может в целом ограничивать качество. Вместо стандартной CFG добавки, увеличивающей нормы, предлагается вращать и далее комбинировать матрицы cond и uncond генераций

3. Decouple-Then-Merge: Finetune Diffusion Models as Multi-Task Learning
Во время обучения диффузии, градиенты модели на разных t отличаются. Предполагается, что это может мешать оптимизации. Предлагается делать следующую процедуру SFT:
- Берем претрен
- Берем наш диапазон t in [0, 1] и разбираем на N не пересекающихся отрезков
- Учим N файнтюнов, каждый на своем отрезке t
- Используем несколько техник (Consistency, Probabilistic sampling, Channel-wise projection) чтобы каждый файнтюн совсем уж не забыл про другие t
- После обучения мерджим веса файнтюнов

4. Advancing Compositional Awareness in CLIP with Efficient Fine-Tuning
Год назад был предложен SUGARCREPE++ Dataset, на котором в том числе показали, что CLIP-like модели плохо понимают отношения между объектами в промте. В этой работе предлагается:
- Собирать синтетический датасета негативных примеров из уже существующего путём комбинации кусочков промтов
- Учить CLIP с доп компонентами в лоссе про то чтобы форсить акцент на эти негативные примеры
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from EasyData
Привет, друзья!
Во многих задачах - от классификации и кластеризации до поиска похожих объектов и генерации рекомендаций - важно уметь эффективно находить ближайшие векторы в высокоразмерном пространстве. Но как только число векторов превышает несколько тысяч, простые методы из sklearn и numpy начинают работать непозволительно медленно🐌 При масштабах же в миллионы объектов стоит задуматься уже не только про быстроту, но и про оптимизацию, балансируя между точностью, скоростью и потреблением памяти.

В таких случаях приходят на помощь библиотеки для быстрого KNN в высокоразмерных пространствах. Самая известная, пожалуй, Faiss от Facebook AI Research. Вот её главные преимущества:

🔠 Подкапотная реализация на C++ с SIMD-оптимизациями и продуманным управлением памятью в Python-обёртке. А ещё это значит, что Faiss не блокируется GIL'ом и отлично масштабируется по потокам: можно параллелить поиск через joblib.Parallel или ThreadPoolExecutor.
🔠 Поддержка GPU, что также даёт прирост скорости в десятки раз.
🔠 Гибкость индексов: от точного поиска (Flat) до приближённых структур с квантованием и кластеризацией.

Рассмотрим основные типы индексов:

🔠 IndexFlat - базовая реализация, которая хранит все векторы в RAM и выполняет точный линейный поиск. Работает быстро на малых объемах (<100K векторов), также идеален для отладки или в случаях, если поиск каждый раз нужно осуществлять в разных ограниченных подпространствах векторов (тогда просто запускаете с тем же Parallel:)).
🔠 IndexIVF (Inverted File Index) - предварительно перед поиском он кластеризует всё пространство векторов (например, с помощью k-means).
При поиске сначала выбираются N ближайших кластеров, а затем производится поиск заданной глубины K внутри них.
На моей практике, даже с учётом времени на обучение индекса, IVF ускорил процесс поиска в ~8 раз по сравнению с Flat+Parallel, при этом точность результата по метрикам проявилась только в 5-м знаке после запятой (ещё и в бОльшую сторону! 😎)
Но есть уже озвученное "НО" - такой индекс требует предварительного обучения, и на это нужно время. Поэтому имеет смысл его использовать, если запросы каждый раз делаются из одинакового и фиксированного пространства.
Если захотите воспользоваться IVF, то упомянутые N и K лучше брать как √d и 2–4*(размер топа, который вы ищете) соответственно, где d - количество векторов в базе для поиска.
🔠 IndexIVFPQ (Product Quantization) добавляет к IVF еще одно ускорение - сжимает векторы до компактного кода (например, 8 байт вместо 128 float32). Работает ещё быстрее и экономит память при минимуме потерь в точности. Имеет смысл посмотреть в сторону этого подхода, если у вас порядка миллиарда векторов.
🔠HNSW-семейство индексов (Hierarchical Navigable Small World) - индексы на основе графов малого мира, где каждый вектор представляется как вершина, связанная с соседями в многослойной структуре. Поиск происходит за счёт навигации по графу: сначала на грубом уровне, затем всё точнее.
Такие индексы не требуют предварительного обучения и хорошо подходят для динамических баз, где данные часто добавляются на лету. Отличаются высокой точностью даже при небольшой глубине поиска, но потребляют больше памяти и не поддерживаются на GPU.

Полезные ссылки:
🔠 Официальный репозиторий Faiss.
Там же ссылка на quick start и базу jupyter-ноутбуков с примерами кода на Python
🔠 Ещё пара хороших туториалов с примерами кода тут и тут
⚠️Если решите установить версию с поддержкой GPU, лучше использовать эту

Лёгкой и солнечной недели! ☀️

#mlops@data_easy
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Blog
Интерпретация CLIP, papers with code (свежие).

Привет, друзья! В последнее время ударилась в анализ методов интерпретации для мультимодальных моделей.Из интересного — собрала методы и идеи для анализа CLIP.

▪️ Пре-теория:

CLIP — модель, обученная сопоставлять изображение и текст в общем пространстве.
Spurious features — признаки, которые коррелируют с меткой в данных, но не связаны причинно (например, фон).
Zero-shot классификация — предсказание без обучающих примеров для класса, только по текстовому описанию.
Second-order effect — влияние элемента модели не напрямую, а через цепочку последующих преобразований.
Mutual knowledge — общий понятийный слой между текстом и изображением, на котором модель принимает решение.

▪️Как обычно интерпретируют CLIP?

Чаще всего исследуют, на какие текстовые концепты "смотрит" изображение, используя:

— Similarity scores между image и text embeddings,
— Grad-CAM/attention heatmaps,
— Prompt engineering

В отличие от обычных подходов, статьи ниже предлагают иную парадигму — либо через анализ внутренних представлений модели (нейроны, attention-heads), либо через поведенческий анализ взаимодействия между модальностями (текстом и изображением).

▪️ Статьи:

1. CLIP Under the Microscope: A Fine-Grained Analysis of Multi-Object Representation [repo]

Как размер объекта и порядок слов в промпте влияют на поведение CLIP? Пример анализа поведения модели в зависимости от промпта.

Авторы анализируют задачу поиска изображения и классификации и показывают, что:
— порядок слов влияет на приоритет внимания;
— мелкие объекты игнорируются, если не упомянуты явно;
— модель чаще "видит" первый объект в тексте, особенно если он крупный на изображении.


2. “Interpreting the Second-Order Effects of Neurons in CLIP” [repo]

Здесь исследуются отдельные нейроны, чтобы понять, какие семантические концепты они кодируют. Основной инструмент — second-order effects: вклад нейрона в выход модели через последующие attention-слои.

Авторы:
— выделяют нейроны, кодирующие семантические концепты (напр. “рыжая собака”);
— автоматически подбирают текстовые описания нейронов;
— применяют это для генерации adversarial-примеров и улучшения zero-shot сегментации

3. INTERPRETING CLIP’S IMAGE REPRESENTATION VIA TEXT-BASED DECOMPOSITION [repo]

В этой работе CLIP-ViT разбирается по слоям и attention-head’ам. Авторы:
— выявляют специализированные головы: по цвету, числу, форме, геолокации и пр.;
— применяют результат применяется для удаления spurious признаков (признаков, которые коррелируют с метками классов в обучающей выборке, но не являются причинно значимыми для правильного вывода. Пример окружение «вода» для уток).
— пименяют результат для повышения устойчивости модели (и решения задачи сегментации)

Кстати пример поиска стиральных признаков вот, но мне не удалось найти описания к нему.

4. "Interpreting and Analysing CLIP’s Zero-Shot Image Classification via Mutual Knowledge" [repo]

Авторы объясняют zero-shot классификацию CLIP через взаимное знание (mutual knowledge) между визуальным и текстовым энкодерами:
— извлекают визуальные концепты (через PCA/K-means) и сопоставляют им тексты;
— оценивают вклад каждого концепта в предсказание;
— показывают, как сила взаимной информации коррелирует с уверенностью и качеством вывода.

▪️ Что есть ещё:

Интерпретация CLIP через градиетный подъём.

Как использовать всё ниже:
Для вдохновения, общего знания и того самого списка на "пригодится" :)
🌐 Reader от Jina AI — переводчик веб-страниц для языковых моделей. Этот необычный проект решает проблему всех RAG-систем, превращая контент веб-страниц в удобоваримый для LLM формат. Просто добавьте https://r.jina.ai/ перед любой ссылкой и получите очищенный от рекламы, JS-кода и лишних элементов текст с автоматически подписанными изображениями.

Также запрос через s.jina.ai не просто выдает список ссылок, а сразу загружает и обрабатывает топ-5 результатов. Технология уже используется в продакшене и полностью бесплатна.

🤖 GitHub

@data_analysis_ml
#startup
Вопросы для проверки идей
Forwarded from BOGDAN
Расшифровка от о3
Forwarded from 🇻 🇱 🇦 🇩
Всем привет, сегодня встречаемся в 18:00

Тема: GNNs in Computational Biology

Слайды
https://snap.stanford.edu/class/cs224w-2020/slides/marinka-zitnik-cs224w.pdf

Видео
https://www.youtube.com/watch?v=_hy9AgZXhbQ&list=PLoROMvodv4rPLKxIpqhjhPgdQy7imNkDn&index=57