Если у вас совсем нет времени, но вы знакомы с терминологией, то вот вам основные идеи, которые лежат в основе моделей. Супер-краткий пересказ статьи Eugen Yan.
+ Diffusion – добавляем гауссовский шум к данным и учимся его предсказывать. На инференсе сэмплим изображение из рандомного шума. (По сути вычитаем шум которые предсказали.) Такие модели могут просто генерить изображения в стиле данных, на котором обучались.
Статья: Denoising Diffusion Probabilistic Models (DDPM; 2020)
+ Text conditioning – добавляем conditioning (опору на текст), чтобы управлять генерацией и получать изображения из текста.
Сначала в Contrastive Language-Image Pre-training (CLIP; 2021) научились сопоставлять изображения и тексты в одно семантическое пространство: вектор текста “щенок лабрадора” и вектор фото щенка лабрадора будут расположены близко. Потом в DALL·E (2021) токенизровали изображение, токенизировали текст и конкатенировали их, получая text_token_1, …, text_token_n, image_token_1, …, image_token_n. Все закинули в трансформер. На инференсе начинали с текстовых токенов и авторегрессионно предсказывали визуальные токены. В DALL·E 2 (aka unCLIP, 2022) использовали conditioning эмбеддинг из CLIP и авторегрессионный процесс из Dalle. Теперь из вектора текста еще предсказывается clip embedding, а потом происходит финальное декодирование в изображение. В Imagen (2022) энкодеры из CLIP заменили на T5 для текста и UNet для изображений. Там сначала генерируют изображение 64x64, а потом делают super-resolution в 1024x1024.
+ Classifier guidance – сильнее двигаем результат в сторону текста, считай управляем степенью влияния промта. В classifier-guidance paper (2021) добавили с определённым весом градиенты с классификатора обученного на шумном ImageNet, чтобы двигать изображение сильнее в сторону класса. Потом в classifier-free guidance (2021) реализовали conditional dropout, иногда заменяя текстовый Промт на Null токен. Изображение с промтом: guidance=1, без промта guidance=0. И теперь модель могла генерировать изображения с разной степенью conditioning (опоры на текст), управляя параметром guidance.
+ Latent space – шум добавляем не к пикселям изображений а к их эмбеддингам. На инференсе из шума сэмплим вектор, а потом декодируем его в изображение. Stable Diffusion (2021) Сначала векторизуем изображение, используя VAE. Потом удаляем шум из полученного вектора с помощью UNet и декодируем полученный вектор. В итоге Stable diffusion учиться и сэмплит быстрее, так как работает не с пикселями, а с сжатыми векторами.
+ Diffusion – добавляем гауссовский шум к данным и учимся его предсказывать. На инференсе сэмплим изображение из рандомного шума. (По сути вычитаем шум которые предсказали.) Такие модели могут просто генерить изображения в стиле данных, на котором обучались.
Статья: Denoising Diffusion Probabilistic Models (DDPM; 2020)
+ Text conditioning – добавляем conditioning (опору на текст), чтобы управлять генерацией и получать изображения из текста.
Сначала в Contrastive Language-Image Pre-training (CLIP; 2021) научились сопоставлять изображения и тексты в одно семантическое пространство: вектор текста “щенок лабрадора” и вектор фото щенка лабрадора будут расположены близко. Потом в DALL·E (2021) токенизровали изображение, токенизировали текст и конкатенировали их, получая text_token_1, …, text_token_n, image_token_1, …, image_token_n. Все закинули в трансформер. На инференсе начинали с текстовых токенов и авторегрессионно предсказывали визуальные токены. В DALL·E 2 (aka unCLIP, 2022) использовали conditioning эмбеддинг из CLIP и авторегрессионный процесс из Dalle. Теперь из вектора текста еще предсказывается clip embedding, а потом происходит финальное декодирование в изображение. В Imagen (2022) энкодеры из CLIP заменили на T5 для текста и UNet для изображений. Там сначала генерируют изображение 64x64, а потом делают super-resolution в 1024x1024.
+ Classifier guidance – сильнее двигаем результат в сторону текста, считай управляем степенью влияния промта. В classifier-guidance paper (2021) добавили с определённым весом градиенты с классификатора обученного на шумном ImageNet, чтобы двигать изображение сильнее в сторону класса. Потом в classifier-free guidance (2021) реализовали conditional dropout, иногда заменяя текстовый Промт на Null токен. Изображение с промтом: guidance=1, без промта guidance=0. И теперь модель могла генерировать изображения с разной степенью conditioning (опоры на текст), управляя параметром guidance.
+ Latent space – шум добавляем не к пикселям изображений а к их эмбеддингам. На инференсе из шума сэмплим вектор, а потом декодируем его в изображение. Stable Diffusion (2021) Сначала векторизуем изображение, используя VAE. Потом удаляем шум из полученного вектора с помощью UNet и декодируем полученный вектор. В итоге Stable diffusion учиться и сэмплит быстрее, так как работает не с пикселями, а с сжатыми векторами.