Понимание мультимодального генеративного визуального ИИ

VVercel
Internet TechnologyAdvertising/MarketingPhotography/Art

Transcript

00:00:00Рад видеть так много людей.
00:00:02Как я уже говорил во вступлении,
00:00:05я погружу вас в мир Flux – нашего семейства моделей для генерации и редактирования изображений.
00:00:13Я уже...
00:00:14работает.
00:00:14Я Энди, сооснователь Black Force Labs.
00:00:18Прежде чем перейти к модели,
00:00:20я хочу дать вам общий обзор нашей деятельности?
00:00:24В Black Force Labs мы верим,
00:00:27что в будущем визуальные медиа станут центральным интерфейсом для человеческого общения.
00:00:34Мы видим себя центральным поставщиком инфраструктуры,
00:00:39обеспечивающим все изображения и видео,
00:00:42которые люди будут использовать для взаимодействия друг с другом,
00:00:48и не только то,
00:00:49что могут запечатлеть камеры,
00:00:52но и гораздо больше.
00:00:53С этой целью мы основали компанию в августе 2024 года.
00:00:58С тех пор мы выросли до 45 сотрудников и имеем два головных офиса.
00:01:04Основной офис находится во Фрайбурге,
00:01:07в Шварцвальде,
00:01:08Германия,
00:01:09а также у нас есть офис здесь,
00:01:11в Сан-Франциско.
00:01:13С момента выпуска нашего семейства моделей для генерации изображений Flux в августе 2024 года,
00:01:21когда мы основали компанию,
00:01:23мы всегда структурировали релизы по трем различным уровням и постоянно развивали семейство моделей.
00:01:32Уровни следующие.
00:01:33У нас есть модели Pro.
00:01:35Они сверхмощные и самые быстрые из тех, что мы предлагаем.
00:01:40Они доступны только через API VFL,
00:01:43а также через нескольких партнеров по инференсу,
00:01:47таких как,
00:01:48например,
00:01:49File и Replicate.
00:01:50Думаю, вы их тоже знаете.
00:01:53Их очень легко интегрировать и масштабировать до огромных объемов практически мгновенно..
00:02:03Это первый уровень,
00:02:04но,
00:02:05как некоторые из вас,
00:02:06возможно,
00:02:07знают,
00:02:07у меня и моих сооснователей очень сильные корни в открытом исходном коде,
00:02:12как,
00:02:12я думаю,
00:02:13и у основателя,
00:02:14который пригласил нас сегодня.
00:02:15Мы также являемся оригинальными разработчиками Stable Diffusion.
00:02:19Мы по-прежнему придерживаемся этого.
00:02:22Мы любим сообщество открытого исходного кода,
00:02:24и поэтому мы также предлагаем модели с открытыми весами и открытым исходным кодом..
00:02:29У нас есть модели Flux Dev.
00:02:31Они общедоступны для скачивания и экспериментов.
00:02:35Они полностью настраиваемы и предлагают большую гибкость для всех,
00:02:40кто хочет их использовать.
00:02:42Наконец, у нас есть модели Flux Schnell.
00:02:45Они полностью с открытым исходным кодом и,
00:02:48в некотором смысле,
00:02:50являются идеальной точкой входа в экосистему Flux.
00:02:53Говоря об экосистеме,
00:02:55если вы посмотрите на Model Atlas на Hugging Face,
00:02:59который визуализирует,
00:03:00я думаю,
00:03:01наиболее используемые базовые модели с открытым исходным кодом в различных областях,
00:03:07мы можем увидеть,
00:03:09что самой крупной моделью на Hugging Face,
00:03:12к которой привязана самая большая экосистема,
00:03:15является наша модель Flux Dev.
00:03:18Это довольно убедительно показывает,
00:03:20что Flux уже стал стандартом для открытой генерации изображений.
00:03:25Очевидно,
00:03:26мы стремимся к дальнейшему развитию и расширению нашего распространения в будущем.
00:03:32Это все о компании.
00:03:33Позвольте проверить, все еще не работает.
00:03:36В любом случае.
00:03:38Теперь к основной части доклада..
00:03:41Я хотел погрузиться с вами в Flux,
00:03:44особенно в нашу новейшую модель Flux Context,
00:03:47которая объединяет генерацию изображений из текста и их редактирование.
00:03:52Сегодня я хочу рассказать о том, как это объединить..
00:03:56Пара слов перед этим.
00:03:58Я думаю,
00:03:58очень важно иметь эту объединенную модель,
00:04:01потому что,
00:04:02очевидно,
00:04:03генерация изображений имеет множество прекрасных применений,
00:04:07и мы видели это в прошлом году,
00:04:09но редактирование изображений до этого года не развивалось с такой же скоростью.
00:04:14Редактирование изображений — это на самом деле очень важный вариант использования.
00:04:20Оно позволяет нам итерировать существующие изображения и дает людям,
00:04:25я думаю,
00:04:25дополнительный уровень контроля для точного изменения изображений и тому подобного.
00:04:31Это очень важно.
00:04:32С Flux Context мы создали определяющий момент для редактирования изображений.
00:04:37Он был выпущен в июне 2025 года.
00:04:40Это модель,
00:04:40которая сочетает генерацию изображений с возможностями редактирования,
00:04:45такими как согласованность персонажей,
00:04:48ссылка на стиль,
00:04:49локальное редактирование и все это со скоростью,
00:04:52близкой к реальному времени.
00:04:54Мы увидим это позже..
00:04:57В качестве хорошего примера я привел вам этот ряд изображений.
00:05:01Слева направо: мы начинаем с исходного изображения.
00:05:04Затем мы можем дать модели команду удалить этот объект с ее лица,
00:05:09а затем поместить ее в совершенно новый контекст,
00:05:12сохраняя при этом согласованность персонажа.
00:05:15Это очень важно.
00:05:16В прошлом было проделано много работы по тонкой настройке,
00:05:19чтобы добиться такой согласованности персонажей в модели на основе общедоступных моделей преобразования текста в изображение,
00:05:27но это мгновенное редактирование изображений позволило нам избавиться от всей этой тонкой настройки,
00:05:34которая,
00:05:34я бы сказал,
00:05:35всегда требует некоторых усилий.
00:05:37На самом деле,
00:05:38это просто потрясающе,
00:05:39что теперь это занимает всего около четырех секунд.
00:05:43Наконец, мы можем просто изменить пейзаж.
00:05:45В данном случае,
00:05:46на самом правом изображении,
00:05:48мы меняем его на зимний пейзаж.
00:05:50Круто.
00:05:50Вот еще несколько примеров того, что он также может делать.
00:05:54Он хорош не только для редактирования с сохранением согласованности персонажей,
00:05:59но и отлично подходит для переноса стиля.
00:06:02Мы видим это слева.
00:06:03Мы берем стиль из входного изображения и применяем его к новому содержимому,
00:06:08или мы можем делать такие вещи,
00:06:10как редактирование текста,
00:06:12просто меняя Монреаль на Фрайбург,
00:06:14сохраняя при этом согласованность шрифта.
00:06:17Все это объединено в одной модели,
00:06:19и вы можете взаимодействовать с ней через очень простой текстовый интерфейс.
00:06:24Круто.
00:06:24Очень важно,
00:06:25что эта модель не только универсальна,
00:06:27но и очень хорошо решает конкретные важные и интересные бизнес-задачи.
00:06:32Например,
00:06:32здесь,
00:06:33в левом примере,
00:06:34мы можем извлечь эту юбку из обычного изображения и получить продуктовый снимок этой вещи и увеличение почти мгновенно,
00:06:42опять же,
00:06:42за считанные секунды.
00:06:43Раньше,
00:06:44до появления этих моделей редактирования,
00:06:47это занимало часы,
00:06:48дни или было вообще невозможно.
00:06:50Аналогично,
00:06:50справа,
00:06:51мы можем получить из эскиза полностью отрисованное изображение за пару секунд.
00:06:56Круто.
00:06:56Как я уже упоминал,
00:06:58Flux Context объединяет преобразование текста в изображение и редактирование изображений.
00:07:03Мы только что видели несколько примеров.
00:07:06Давайте кратко рассмотрим,
00:07:08что это на самом деле означает с точки зрения конвейера модели,
00:07:12который вам нужно использовать.
00:07:14Здесь мы видим классический конвейер преобразования текста в изображение.
00:07:18Довольно просто.
00:07:19Мы все это знаем.
00:07:20Мы используем текстовый запрос.
00:07:22Пропускаем его через модель.
00:07:24Модель затем творит некую магию.
00:07:26Я объясню вам, как создать такую модель, через секунду.
00:07:30Затем мы получаем изображение,
00:07:32которое,
00:07:32надеюсь,
00:07:33если модель хороша,
00:07:34соответствует нашему входному текстовому запросу.
00:07:37Если вы посмотрите на редактирование изображений,
00:07:40оно выглядит совсем иначе.
00:07:42Мы начинаем с изображения,
00:07:43которое мы как бы показываем модели,
00:07:46а затем мы добавляем не текстовую инструкцию,
00:07:49описывающую всю сцену,
00:07:50а только изменение к этому изображению.
00:07:53Здесь у нас два условия.
00:07:54В первой части у нас просто больше входных данных.
00:07:57В первом примере у нас был только один вход.
00:08:00Теперь мы описываем изменение,
00:08:02и модель должна затем изменить изображение в соответствии с этим изменением.
00:08:07Некоторые части,
00:08:08как,
00:08:08например,
00:08:09церковь здесь,
00:08:10должны остаться прежними после редактирования.
00:08:13Другие — нет.
00:08:14Вот что делают эти модели редактирования.
00:08:16Это совершенно другая задача.
00:08:18Объединение этого в одну модель на самом деле очень здорово,
00:08:22потому что вы можете делать все.
00:08:24Вы можете сгенерировать изображение,
00:08:26затем отредактировать его,
00:08:28и получить гораздо больше гибкости.
00:08:30Я уже упоминал,
00:08:31что до того,
00:08:32как мы выпустили эти модели редактирования,
00:08:35или до того,
00:08:35как мы увидели эти общие модели редактирования,
00:08:38было проделано много работы по тонкой настройке моделей преобразования текста в изображение,
00:08:44чтобы добиться такого уровня контроля в модели.
00:08:47Но теперь это больше не нужно.
00:08:49Мы можем делать это мгновенно.
00:08:51Это значительно сокращает время,
00:08:53необходимое для получения хороших результатов.
00:08:56Итак, это все, что касается конвейера.
00:08:58Теперь давайте посмотрим, как мы можем обучать эти модели.
00:09:02И есть очень важный алгоритм, о котором я хочу рассказать.
00:09:06Алгоритм,
00:09:06который позволяет нам обучать эти модели,
00:09:09называется Latent Flow Matching,
00:09:11который состоит из двух аспектов: Latent и Flow Matching,
00:09:15и я хочу немного пролить свет на оба из них..
00:09:24Начнем с латентного.
00:09:25Это происходит из латентного генеративного моделирования.
00:09:29Это алгоритм,
00:09:30который мы с моими сооснователями разработали почти пять лет назад.
00:09:34Чтобы объяснить,
00:09:35что это значит,
00:09:36давайте сначала рассмотрим следующий пример.
00:09:38То,
00:09:39что я здесь визуализирую,
00:09:41это,
00:09:41по сути,
00:09:42два изображения,
00:09:43и для нас они выглядят одинаково.
00:09:45Левое — это JPEG,
00:09:46а правое — то же изображение в формате PNG.
00:09:48То есть левое — это аппроксимация правого,
00:09:51но мы не видим никакой разницы..
00:09:53Или кто-нибудь видит разницу в этих двух изображениях?
00:09:57Я так не думаю.
00:09:58Хорошо,
00:09:59теперь давайте посмотрим на размер файлов этих изображений.
00:10:03Размер файла JPEG на самом деле почти на порядок меньше,
00:10:07чем размер файла PNG.
00:10:09Это довольно примечательно,
00:10:11и мы все знаем,
00:10:12как работает сжатие изображений,
00:10:14но просто осознание того,
00:10:16что мы можем удалить,
00:10:18по-видимому,
00:10:19много информации из изображения,
00:10:21не замечая этого,
00:10:23довольно примечательно,
00:10:24я бы сказал..
00:10:26Таким образом,
00:10:27очевидно,
00:10:28что в изображении много информации,
00:10:30которую мы не можем воспринимать человеческим глазом.
00:10:34Другой способ визуализировать это — построить график перцептивной схожести изображения (в последнем примере это PNG) и его аппроксимации (JPEG) относительно размера файла.
00:10:46При этом мы получаем такой график.
00:10:48Это концептуальный график,
00:10:50он не реальный,
00:10:51но концептуально выглядит так.
00:10:53Перцептивная схожесть быстро возрастает,
00:10:56а затем остается на постоянном уровне почти на протяжении всего размера файла.
00:11:02Именно это используют алгоритмы сжатия с потерями,
00:11:05такие как JPEG,
00:11:06и вы можете спросить,
00:11:08какое это имеет отношение к генеративному моделированию?
00:11:12Это показывает нам,
00:11:13что для перцептивного или естественного сигнала,
00:11:16такого как изображение (и для аудио это также верно),
00:11:20чтобы он выглядел или воспринимался как реальный,
00:11:24нам не нужно моделировать все высокочастотные детали,
00:11:27которые мы не можем воспринимать,
00:11:30и,
00:11:30следовательно,
00:11:31обучение генеративной модели в пиксельном пространстве на всех этих высокочастотных деталях было бы большой тратой вычислительных ресурсов и времени,
00:11:42потому что модель училась бы представлять аспекты,
00:11:45которые мы даже не воспринимаем,
00:11:47так что учить этому бессмысленно,
00:11:50верно?
00:11:50И это лежит в основе латентного генеративного моделирования.
00:11:54Таким образом,
00:11:55вместо обучения генеративной модели в пиксельном пространстве непосредственно на изображениях,
00:12:02мы обучаем модель сжатия,
00:12:04которая извлекает низкоразмерное так называемое латентное пространство.
00:12:09Это латентное пространство — то,
00:12:11что мы видим здесь в центре.
00:12:13Посмотрим, работает ли лазерная указка.
00:12:16О, да, вот этот.
00:12:17Как мы обучаем эту модель?
00:12:19На самом деле, это очень просто..
00:12:24Мы используем изображение здесь, слева.
00:12:26Мы пропускаем его через кодировщик,
00:12:28так что,
00:12:29по сути,
00:12:29это автокодировщик,
00:12:30мы пропускаем изображение через кодировщик,
00:12:33затем попадаем в это латентное пространство,
00:12:36а затем пропускаем это представление через операцию,
00:12:39которая называется регуляризацией..
00:12:42Это заставляет модель удалять информацию из этого латентного представления.
00:12:47Это может быть реализовано либо дискретно,
00:12:50либо непрерывно,
00:12:51а затем мы снова реконструируем изображение из этого латентного представления.
00:12:56Итак,
00:12:57классический автокодировщик,
00:12:59который мы обучаем для получения реконструкций,
00:13:02похожих на входные данные,
00:13:04и,
00:13:04что очень важно,
00:13:05мы добавляем эту функцию потерь дискриминатора.
00:13:08Это можно представить как априорное условие,
00:13:11чтобы убедиться,
00:13:13что только те детали,
00:13:14которые перцептивно важны для наших человеческих глаз,
00:13:18отражены в этом латентном представлении.
00:13:20Опять же,
00:13:21эта регуляризация заставляет модель уменьшать или удалять информацию,
00:13:26а дискриминатор гарантирует,
00:13:28что она удаляет правильную информацию,
00:13:30которую мы не можем воспринимать.
00:13:32Таким образом,
00:13:33после обучения этой модели мы получаем это латентное пространство,
00:13:38которое затем используется для обучения генеративной модели.
00:13:42Латентное пространство — это низкоразмерное представление входного изображения или изображения,
00:13:48которое перцептивно эквивалентно.
00:13:50Это,
00:13:51по сути,
00:13:51латентный аспект алгоритма латентного сопоставления потоков.
00:13:56Давайте поговорим о втором — сопоставлении потоков.
00:13:59Опять же,
00:14:00все,
00:14:00что я сейчас объясняю,
00:14:02происходит в этом латентном пространстве.
00:14:04Так что все, что мы делаем прямо сейчас, вы видите здесь.
00:14:08Слева каждое изображение,
00:14:10по сути,
00:14:11встраивается в это латентное пространство.
00:14:13Итак, да, давайте поговорим о сопоставлении потоков.
00:14:17Алгоритмы сопоставления потоков — это общее семейство алгоритмов,
00:14:21которые используются для преобразования из очень простого распределения,
00:14:26которое в нашем случае всегда является стандартным нормальным распределением,
00:14:31так что мы сейчас говорим о вероятностных распределениях.
00:14:35Я визуализировал это здесь.
00:14:37Это очень простое распределение.
00:14:39Алгоритмы сопоставления потоков преобразуют это или предоставляют нам средства для обучения векторного поля,
00:14:47представленного нейронной сетью (вот этот парень),
00:14:50для отображения между простым распределением и очень сложными распределениями,
00:14:55такими как распределение данных естественных изображений.
00:14:59Итак, это распределение данных.
00:15:01Что мы делаем, чтобы обучить это?
00:15:03Алгоритм сопоставления потоков предоставляет нам очень простой способ сделать это.
00:15:09Все,
00:15:10что нам нужно сделать во время обучения,
00:15:12это взять образец из этого стандартного нормального распределения здесь.
00:15:17Итак,
00:15:18у нас есть образец,
00:15:19и затем мы присваиваем его одному образцу из распределения данных,
00:15:23обучающему примеру,
00:15:25и мы связываем это,
00:15:26а затем мы можем построить такой вектор,
00:15:29который напрямую,
00:15:30линейно соединяет их..
00:15:34Если вы сделаете это для каждого примера в нашем обучающем наборе данных,
00:15:39то есть мы просто берем пример,
00:15:41случайным образом выбираем точку из стандартного нормального распределения и соединяем их,
00:15:47тогда мы получаем такое вот построенное векторное поле.
00:15:50Я мог бы сейчас много говорить о свойствах векторных полей.
00:15:54Одним важным свойством является то,
00:15:56что пути не могут пересекаться в векторных полях,
00:16:00и мы видим,
00:16:00что здесь происходит много пересечений,
00:16:03так что это,
00:16:04очевидно,
00:16:04не истинное векторное поле,
00:16:06которое преобразует каждую точку на этом распределении,
00:16:10или между этим распределением и тем..
00:16:13Удивительная особенность сопоставления потоков заключается в том,
00:16:17что если вы просто следуете этому правилу,
00:16:20то есть мы обучаем модель всегда предсказывать такие векторы между образцом данных и образцом из стандартного нормального распределения,
00:16:29мы приходим к истинному векторному полю,
00:16:32и оно выглядит вот так.
00:16:33Итак,
00:16:34здесь мы видим,
00:16:35что пути больше не пересекаются,
00:16:37и алгоритм сопоставления потоков просто гарантирует это.
00:16:40Это немного похоже на магию,
00:16:42но если записать это математически,
00:16:45мы на самом деле увидим,
00:16:46что это имеет смысл.
00:16:47И таким образом,
00:16:49мы можем фактически обучить модель представлять это истинное векторное поле,
00:16:54которое преобразует между стандартным нормальным и нашим распределением данных..
00:17:00И что важно,
00:17:01мы хотим иметь возможность создавать изображения на основе текстовых входных данных,
00:17:08поэтому мы всегда обусловливаем эту сеть текстовым вводом,
00:17:13по сути,
00:17:13для каждого примера изображения.
00:17:16Круто..
00:17:17Итак, что мы делаем, когда затем сэмплируем модель?
00:17:20У нас есть это векторное поле,
00:17:22которое представляет отображение между этими двумя распределениями.
00:17:26Затем мы начинаем с образца из стандартного нормального распределения.
00:17:31Мы можем сэмплировать из него с помощью компьютера, верно?
00:17:34Мы все это знаем.
00:17:35А затем мы интегрируем вдоль этих траекторий,
00:17:38представленных нейронной сетью.
00:17:40Мы можем сделать это с помощью простого алгоритма Эйлера вперед.
00:17:44Вероятно, многие из вас знают их.
00:17:46Итак,
00:17:47с помощью схемы численного интегрирования мы можем просто интегрировать вдоль этих траекторий и затем получить образец данных.
00:17:55Мы снова пропускаем его через декодер и получаем результат.
00:17:58Итак,
00:17:59опять же,
00:17:59это происходит в латентном пространстве,
00:18:02но здесь мы снова попадаем в пиксельное пространство.
00:18:05И вот как я затем могу создавать изображения на основе текстового запроса.
00:18:10Круто.
00:18:10Одно замечание: эти схемы численного интегрирования,
00:18:14я думаю,
00:18:14используют много шагов,
00:18:15поэтому они разбивают этот процесс здесь шаг за шагом на до 50 шагов.
00:18:20Таким образом,
00:18:21эти модели латентного сопоставления потоков изначально довольно медленные,
00:18:25и для генерации изображения требуется от 30 секунд до одной минуты,
00:18:29что немного долго..
00:18:32Я очень скоро расскажу, как сделать их быстрыми.
00:18:34Но это общий алгоритм латентного сопоставления потоков.
00:18:37Итак,
00:18:38латентный снова,
00:18:39соединяет или представляет это латентное пространство,
00:18:42или обозначает это латентное пространство,
00:18:44в котором мы обучаем модель.
00:18:45А алгоритм сопоставления потоков — это то,
00:18:48что мы только что обсуждали здесь.
00:18:49Хорошо,
00:18:50теперь я объяснил,
00:18:51как мы создаем изображения на основе текстовых запросов,
00:18:54но как это теперь применимо к контексту,
00:18:56который является моделью редактирования,
00:18:58верно?
00:18:59Это тоже очень просто.
00:19:00Итак, это базовая архитектура Flux Context.
00:19:02Это модель-трансформер.
00:19:03Мы все это знаем..
00:19:05Она немного особенная,
00:19:06но вся магия заключается во входных данных.
00:19:09Итак, здесь слева мы видим входные данные для модели.
00:19:13Сначала у нас есть текстовый ввод,
00:19:15который просто встраивается текстовым кодировщиком в набор текстовых токенов.
00:19:20А затем у нас есть кодировщик изображений,
00:19:23который мы уже видели на последнем слайде,
00:19:26верно?
00:19:26Вот этот парень.
00:19:27Это то, что мы сейчас видим здесь.
00:19:30Итак,
00:19:30у нас есть этот кодировщик изображений,
00:19:33и там у нас есть два набора визуальных токенов.
00:19:36Сначала у нас есть набор визуальных токенов,
00:19:39которые мы фактически используем для генерации.
00:19:42Это будет выходное изображение.
00:19:44А затем,
00:19:45если мы хотим редактировать изображение,
00:19:47у нас есть второй набор визуальных токенов,
00:19:50которые просто моделируют или просто представляют контекстное изображение.
00:19:55То есть,
00:19:56по сути,
00:19:56эталонное изображение,
00:19:58которое я показываю модели.
00:20:00И что мы затем делаем,
00:20:01это передаем это в модель-трансформер.
00:20:04Она особенная,
00:20:05потому что содержит так называемые блоки двойного потока.
00:20:08Это,
00:20:09я бы сказал,
00:20:10своего рода экспертные модели для каждой точности.
00:20:13Итак,
00:20:14здесь мы обрабатываем визуальные токены и текстовые токены отдельно..
00:20:20Для всего,
00:20:20кроме операции внимания,
00:20:22операция внимания затем происходит совместно для всех токенов.
00:20:27А затем у нас есть стандартные блоки,
00:20:30стандартные блоки трансформера,
00:20:32где мы,
00:20:32по сути,
00:20:33отображаем все входные и текстовые токены,
00:20:36а также визуальные токены с одинаковыми отображениями перед операцией внимания.
00:20:42И таким образом,
00:20:43мы можем просто перейти к редактированию изображений..
00:20:48Если вы предоставляете здесь входное изображение,
00:20:51а если вы генерируете изображение из текста,
00:20:54вы просто не предоставляете его,
00:20:57и тогда у нас есть только текстовый запрос в качестве входных данных,
00:21:01верно?
00:21:02Круто.
00:21:02Последний пункт.
00:21:03Почему модель такая быстрая?
00:21:05Итак, я не знаю, сколько из вас знакомы с моделями Flux.
00:21:09Может быть, поднимите руку, если вы знаете модели Flux?
00:21:13Или на самом деле несколько.
00:21:15Хорошо, круто.
00:21:16Итак, мы все знаем, что они довольно быстрые, верно?
00:21:19Что я имею в виду, когда говорю «быстрые»?
00:21:22Мы,
00:21:22по сути,
00:21:23чаще всего на порядки быстрее,
00:21:25чем сопоставимые модели.
00:21:26Итак,
00:21:27здесь,
00:21:27например,
00:21:28мы смотрим на,
00:21:29очевидно,
00:21:30очень медленную,
00:21:31но хорошую модель,
00:21:32GPD image one.
00:21:33Также здесь для редактирования модели Flux более чем в 10 раз быстрее,
00:21:37даже более чем в 20 раз.
00:21:39Так что это на самом деле безумно,
00:21:41насколько они быстры по сравнению с сопоставимо мощными моделями.
00:21:46И причина тому — алгоритм,
00:21:48который мы разработали два-три года назад.
00:21:50Он называется adversarial diffusion distillation (состязательная диффузионная дистилляция),
00:21:56и цель этого алгоритма — сократить количество шагов численного интегрирования.
00:22:02Я говорил вам ранее,
00:22:03что для стандартной модели сопоставления потоков их чаще всего 50,
00:22:07а цель здесь — сократить их до четырех.
00:22:10Каждый шаг численного интегрирования означает прямой проход через нейронную сеть,
00:22:16поэтому мы можем представить,
00:22:18что это занимает много времени,
00:22:20и мы хотим сократить его как можно больше.
00:22:22Как это работает?
00:22:24Мы инициализируем здесь две сети: учительскую и ученическую.
00:22:28Обе они инициализируются из обученной модели сопоставления потоков с помощью алгоритма,
00:22:33который я только что показал вам.
00:22:36И что мы затем делаем,
00:22:37это обучаем ученическую модель получать то же качество изображения на выходе за четыре шага,
00:22:43что и учительская модель за 50 шагов.
00:22:46Это цель, и вот как мы это делаем.
00:22:48Мы начинаем с изображения,
00:22:50снова кодируем его в латентное представление,
00:22:53а затем генерируем выходное изображение для ученической модели за четыре шага или за целевое количество шагов,
00:23:00которое мы хотим выполнить.
00:23:02А затем мы снова декодируем его в пиксели..
00:23:08В начале это изображение выглядит очень размытым и совсем нереалистичным.
00:23:13И цель, очевидно, состоит в том, чтобы улучшить это.
00:23:16Итак,
00:23:16что мы делаем,
00:23:17это снова используем это,
00:23:19снова кодируем в латентное представление,
00:23:21а затем делаем то же самое с учительской моделью,
00:23:24но за 50 шагов вместо четырех.
00:23:26Это затем приводит к высококачественному изображению,
00:23:29и мы затем используем эту потерю дистилляции,
00:23:32по сути,
00:23:33просто потерю,
00:23:34чтобы гарантировать,
00:23:35что распределения учителя или ученика соответствуют распределению учителя.
00:23:39Одно это,
00:23:40к сожалению,
00:23:41не позволило бы нам генерировать изображения,
00:23:43которые выглядят реальными.
00:23:45Поэтому мы добавляем еще одну потерю дискриминатора.
00:23:48Мы уже видели это для части автокодировщика в разделе латентного генеративного моделирования в начале доклада.
00:23:55Это, по сути, то же самое.
00:23:57Итак,
00:23:57мы обучаем дискриминатор отличать сгенерированные изображения от ученической модели от реальных изображений,
00:24:04которые мы вводим здесь.
00:24:05И это происходит в пространстве признаков dyno v2 или,
00:24:09в некотором смысле,
00:24:10в пространстве модели обученного представления изображения.
00:24:14И таким образом,
00:24:15мы можем фактически обучить модель в конечном итоге генерировать реалистичные изображения,
00:24:20используя всего четыре шага вместо 50.
00:24:23Это, очевидно, огромное ускорение.
00:24:25Однако, последний пункт здесь.
00:24:27Если мы посмотрим на эту вещь здесь,
00:24:29она выглядит довольно,
00:24:30я бы сказал,
00:24:31с большим количеством накладных расходов,
00:24:33верно?
00:24:34Потому что здесь нам приходится переходить в латентное пространство.
00:24:38Итак,
00:24:39мы начинаем в пространстве пикселей,
00:24:41переходим в латентное пространство,
00:24:43затем декодируем,
00:24:44потом снова кодируем и снова декодируем.
00:24:47А затем мы,
00:24:47этот также снова кодируется в другое пространство представления.
00:24:51Много накладных расходов,
00:24:53много затрат памяти,
00:24:54связанных с этим.
00:24:55И это просто очень...
00:24:56когда мы придумали это,
00:24:58мы были поражены,
00:24:59потому что это позволило нам обучать быстрые модели.
00:25:02Обучать это было так трудоемко.
00:25:04Поэтому мы подумали: хорошо, как мы можем это упростить.
00:25:08И ответ всегда один.
00:25:09Просто переместите это в латентное пространство,
00:25:12когда у вас есть пиксель?
00:25:13Итак,
00:25:14что мы сделали,
00:25:15это разработали подход латентной состязательной диффузионной дистилляции.
00:25:19Это,
00:25:20по сути,
00:25:20очень похоже на то,
00:25:21что мы делали для общего алгоритма латентного генеративного моделирования.
00:25:26Мы просто перемещаем все сюда в латентное пространство.
00:25:29То же самое,
00:25:30но вместо того,
00:25:31чтобы использовать эти кодировщики и декодировщики,
00:25:34мы можем просто избавиться от них.
00:25:36И что важно,
00:25:37в качестве дискриминатора мы больше не используем dyno..
00:25:44В этой модели представления изображения мы используем учительскую модель,
00:25:47потому что она и так уже находится в латентном пространстве,
00:25:51предоставляя нам очень хорошее представление изображения.
00:25:54Таким образом,
00:25:54мы также можем использовать учительскую модель в качестве дискриминатора.
00:25:58А остальное, по сути, почти то же самое.
00:26:00Мы также удаляем потерю дистилляции.
00:26:02Мы обнаружили, что она нам не нужна, что тоже круто..
00:26:06Таким образом, у нас меньше потерь, и все упрощается.
00:26:10И таким образом,
00:26:12мы можем фактически очень эффективно с точки зрения памяти сократить количество шагов интегрирования с пяти до четырех.
00:26:22Таким образом,
00:26:23мы получаем ускорение в 12,
00:26:265 раз,
00:26:26и это на самом деле то,
00:26:28что мы видим как этот порядок величины на графиках,
00:26:33которые я только что показывал вам в начале этого раздела.
00:26:38Итак,
00:26:38это,
00:26:39по сути,
00:26:39то,
00:26:40как мы получаем очень быструю модель из сопоставления потоков,
00:26:45из базовой модели сопоставления потоков.
00:26:49И теперь,
00:26:50прежде чем этот доклад закончится,
00:26:53я принес вам демонстрацию,
00:26:55чтобы показать Flux немного в действии.
00:26:58Давайте посмотрим.
00:27:00Итак,
00:27:00давайте используем его для редактирования изображений здесь.
00:27:06Позвольте мне что-нибудь загрузить потом.
00:27:09Что мы здесь делаем?
00:27:11Этот выглядит хорошо.
00:27:13Да.
00:27:13Окей.
00:27:14Да.
00:27:14Это хорошо.
00:27:15Итак,
00:27:16здесь я начинаю с логотипа моего любимого футбольного клуба,
00:27:21футбольного клуба СК Фрайбург.
00:27:23Я должен говорить «соккер», когда нахожусь в США.
00:27:28Хорошо.
00:27:28Это мой любимый клуб,
00:27:30и я хочу создать футболку с этим логотипом.
00:27:34Итак, давайте скажем: поместите этот логотип на футболку.
00:27:39Чувствую себя немного странно,
00:27:42потому что у меня нет экрана передо мной.
00:27:45Хорошо.
00:27:46Поехали.
00:27:46Генерируем.
00:27:47Позвольте мне сделать это немного меньше..
00:27:53Может быть, так.
00:27:55Хорошо.
00:27:56Отлично.
00:27:56Мы ждем пару секунд,
00:27:58и получаем этот красивый логотип на футболке.
00:28:03И теперь самое приятное, что мы можем продолжить, верно?
00:28:08Мы можем итерировать это.
00:28:10Итак, допустим, этот логотип немного великоват, я бы сказал.
00:28:16Сделайте логотип меньше и поместите его на оставшуюся часть.
00:28:22Снова.
00:28:22Подождите пару секунд.
00:28:24Хорошо.
00:28:25Круто.
00:28:26И мы получаем результат, который на самом деле очень хорош.
00:28:31Это именно то, что я хотел.
00:28:34Я хочу начать с этого снова.
00:28:37И теперь я хочу изменить цвет,
00:28:39потому что цвет СК Фрайбург не черный,
00:28:43а красный.
00:28:44Итак, сделайте футболку красной.
00:28:47Тоже очень просто.
00:28:49Теперь мы занимаемся локальным редактированием.
00:28:53Мы просто редактируем локальные части изображения, верно?
00:28:58В данном случае цвет.
00:29:00И что важно,
00:29:02мы сделали несколько правок и по-прежнему видим,
00:29:06что логотип представлен очень последовательно.
00:29:10Так что это согласованность персонажа или,
00:29:14в данном случае,
00:29:16объекта,
00:29:17которую мы видели.
00:29:18Это очень важно.
00:29:20Подумайте о маркетологе,
00:29:22у которого есть объект,
00:29:24и он хочет поместить его в определенный контекст,
00:29:29верно?
00:29:30С точки зрения бизнес-ценности,
00:29:33это здорово,
00:29:34это очень важно.
00:29:35И теперь, наконец, мы добавляем более сложную трансформацию.
00:29:41Мы можем сказать: наденьте футболку на мужчину,
00:29:45идущего в парке.
00:29:47Упс.
00:29:47Итак,
00:29:48это сложная трансформация,
00:29:50и вы могли бы сказать: хорошо,
00:29:53такие вещи,
00:29:54как изменение цвета,
00:29:56можно сделать в Photoshop,
00:29:59верно?
00:29:59Исторически,
00:30:00подобные вещи не могли делать стандартные или более ранние инструменты генерации изображений без ИИ.
00:30:10Это на самом деле очень здорово.
00:30:13Итак,
00:30:13здесь у нас теперь есть такой минимум,
00:30:17и,
00:30:17наконец,
00:30:18я думаю,
00:30:19мое время истекло,
00:30:21но давайте сделаем последнее,
00:30:23что покажет,
00:30:24насколько универсальна эта модель.
00:30:28Мы также можем делать перенос стиля, верно?
00:30:32Итак, давайте скажем: сделайте это акварельной картиной..
00:30:42Хорошо, последний.
00:30:44И до появления таких моделей вам, вероятно, пришлось бы...
00:30:48вы бы обучали отдельную тонкую настройку для каждой из этих задач,
00:30:54а теперь мы можем просто объединить это в одном,
00:30:57что довольно круто.
00:30:59Отлично.
00:30:59Так что теперь я мог бы распечатать это и повесить на стену или что-то в этом роде.
00:31:06В любом случае,
00:31:07да,
00:31:08я думаю,
00:31:08это показывает мощь этих моделей.
00:31:11О, что-то сломалось.
00:31:13Я хотел показать вам последний слайд,
00:31:15потому что я закончил,
00:31:17но мы нанимаем,
00:31:18и если вы хотите присоединиться к нам,
00:31:21пожалуйста,
00:31:22отсканируйте это здесь или посетите площадку,
00:31:26демонстрацию,
00:31:27которую я только что показал вам,
00:31:29она свободно доступна.
00:31:31Большое спасибо.
00:31:32Надеюсь, вы что-то узнали..

Key Takeaway

Black Force Labs представила Flux Context, мультимодальную генеративную визуальную ИИ-модель, которая революционизирует создание и редактирование изображений, объединяя возможности генерации из текста и редактирования в реальном времени благодаря инновационным алгоритмам Latent Flow Matching и Latent Adversarial Diffusion Distillation.

Highlights

Black Force Labs разработала семейство моделей Flux для генерации и редактирования изображений, став стандартом в открытой генерации изображений.

Модель Flux Context объединяет генерацию изображений из текста и их редактирование, предлагая функции согласованности персонажей, переноса стиля и локального редактирования в реальном времени.

Алгоритм Latent Flow Matching позволяет обучать генеративные модели в низкоразмерном латентном пространстве, игнорируя невоспринимаемые человеческим глазом детали для повышения эффективности.

Технология Flow Matching преобразует простое распределение в сложное распределение данных изображений, обучаясь векторному полю, которое обеспечивает плавные и непересекающиеся пути.

Для ускорения процесса используется алгоритм Adversarial Diffusion Distillation (ADD) и его латентная версия (LADD), сокращающие количество шагов интегрирования с 50 до 4, что обеспечивает 12.5-кратное ускорение.

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

Timeline

Введение и обзор Black Force Labs

Спикер Энди, сооснователь Black Force Labs, начинает презентацию с обзора своей компании, основанной в августе 2024 года. Он представляет видение Black Force Labs как центрального поставщика инфраструктуры для визуальных медиа, которые станут ключевым интерфейсом человеческого общения. Компания, насчитывающая 45 сотрудников, имеет офисы во Фрайбурге (Германия) и Сан-Франциско. С момента основания Black Force Labs выпускает семейство моделей Flux в трех уровнях: Pro (сверхмощные, через API), Dev (с открытым исходным кодом, настраиваемые) и Schnell (полностью открытый исходный код, точка входа). Модель Flux Dev уже стала стандартом для открытой генерации изображений, являясь самой крупной экосистемой на Hugging Face.

Представление Flux Context и важность редактирования изображений

Основное внимание переключается на Flux Context, новейшую модель, которая объединяет генерацию изображений из текста и их редактирование. Спикер подчеркивает критическую важность редактирования изображений для итераций и точного контроля, отмечая, что до этого года оно не развивалось так быстро, как генерация. Flux Context, выпущенная в июне 2025 года, представляет собой переломный момент, предлагая такие возможности, как согласованность персонажей, перенос стиля и локальное редактирование со скоростью, близкой к реальному времени (около четырех секунд). Примеры включают удаление объектов, изменение контекста с сохранением персонажа и перенос стиля, что устраняет необходимость в трудоемкой тонкой настройке. Модель также демонстрирует значительную бизнес-ценность, позволяя мгновенно создавать продуктовые снимки или полностью отрисованные изображения из эскизов.

Технический обзор: Латентное сопоставление потоков – аспект "Латентное"

Спикер переходит к техническим деталям, сравнивая конвейеры генерации текста в изображение и редактирования, чтобы показать, как Flux Context объединяет эти задачи. Затем он представляет алгоритм Latent Flow Matching, начиная с аспекта "Латентное", который основан на латентном генеративном моделировании. Используя аналогию с JPEG и PNG, объясняется, что большая часть информации в изображении не воспринимается человеческим глазом, и моделирование этих высокочастотных деталей является неэффективным. Поэтому модель сжатия (автокодировщик) извлекает низкоразмерное латентное пространство, а функция потерь дискриминатора гарантирует, что в этом представлении остаются только перцептивно важные детали. Это латентное пространство становится основой для обучения генеративной модели, обеспечивая перцептивно эквивалентное, но более компактное представление.

Технический обзор: Латентное сопоставление потоков – аспект "Сопоставление потоков"

Далее объясняется аспект "Сопоставление потоков" алгоритма Latent Flow Matching, который работает в ранее описанном латентном пространстве. Этот алгоритм позволяет преобразовывать очень простое распределение (стандартное нормальное) в сложное распределение данных естественных изображений, обучаясь векторному полю, которое отображает точки между этими двумя распределениями. Во время обучения модель учится предсказывать векторы, соединяющие образцы из нормального распределения с обучающими примерами, при этом алгоритм гарантирует, что пути в истинном векторном поле не пересекаются. Для генерации изображений модель сэмплируется путем интегрирования вдоль этих траекторий с использованием численных схем, таких как алгоритм Эйлера, что позволяет получить образец данных, который затем декодируется в пиксельное пространство. Изначально этот процесс требует до 50 шагов интегрирования, что делает его довольно медленным.

Архитектура Flux Context и оптимизация скорости

Спикер подробно описывает архитектуру Flux Context, которая представляет собой модель-трансформер с уникальными блоками двойного потока, обрабатывающими текстовые и визуальные токены. Для редактирования модель принимает как текстовый запрос, так и контекстное изображение, а для генерации — только текст. Ключевым элементом, обеспечивающим высокую скорость Flux Context, является алгоритм Adversarial Diffusion Distillation (ADD), разработанный для сокращения количества шагов численного интегрирования с 50 до всего лишь четырех. Это достигается путем обучения "ученической" модели воспроизводить качество "учительской" модели за значительно меньшее количество шагов, используя потери дистилляции и дискриминатора. Усовершенствованный подход Latent Adversarial Diffusion Distillation (LADD) еще больше оптимизирует процесс, перемещая все в латентное пространство и используя учительскую модель в качестве дискриминатора, что приводит к впечатляющему 12.5-кратному ускорению и позволяет генерировать реалистичные изображения за секунды.

Живая демонстрация возможностей Flux Context

Завершающая часть презентации посвящена живой демонстрации модели Flux Context, подчеркивающей ее универсальность и скорость. Спикер демонстрирует редактирование логотипа футбольного клуба на футболке: сначала размещает логотип, затем уменьшает его размер и меняет цвет футболки на красный, сохраняя при этом согласованность объекта. Далее он показывает более сложную трансформацию, помещая футболку на мужчину, идущего в парке, что ранее было невозможно для стандартных инструментов. Демонстрация завершается переносом стиля, превращая изображение в акварельную картину. Эти примеры наглядно показывают, как Flux Context объединяет множество задач редактирования и генерации в одной модели, устраняя необходимость в отдельных тонких настройках и значительно упрощая рабочий процесс.

Community Posts

View all posts