От текста к изображению: основы CLIP
Срочная новость: подростки обращаются к TikTok как к своей любимой поисковой системе, и, судя по всему, это работает лучше, чем можно было бы подумать. Это неудивительно, потому что традиционные поисковые системы не всегда находят то, что вам нужно. Особенно если вы визуал, как я, вы, вероятно, сочтете изображения и видео гораздо более интуитивными и приятными, чем необходимость продираться через строки текста. Но задумывались ли вы когда-нибудь, как машины понимают заданный текст и сопоставляют его с изображениями, которые они возвращают?
В этой серии блогов мы познакомим вас с поиском изображений на основе текстов, или сервисами text-to-image. Text-to-image всегда был важным кросс-модальным приложением, и отрасль раньше полагалась на обходные решения, требующие огромного количества пользовательских данных, чтобы группировать изображения и выяснять их семантические связи. Так было до прошлого года, когда OpenAI произвела фурор в отрасли, выпустив CLIP. OpenAI использовала поразительное число — 400 миллионов пар текст-изображение — для создания CLIP, чтобы он мог изучать визуальные концепции на основе ввода на естественном языке. Теперь нам нужно узнать некоторые базовые сведения, чтобы понять основные компоненты поисковых алгоритмов, CLIP и text-to-image.
Поисковые алгоритмы и семантическая близость
Поисковые алгоритмы, будь то традиционные или новые, одномодальные или кросс-модальные, не могут обойтись без меры семантической близости, а точнее, семантического расстояния между двумя вещами. Это может звучать немного абстрактно, так что давайте рассмотрим несколько примеров. Начнем с одномерного пространства целых чисел, которое, вероятно, было выгравировано в вашей ДНК еще с начальной школы (хотя тогда это, скорее всего, так не формулировалось). Итак, у нас есть 5 положительных целых чисел {1, 5, 6, 8, 10}; скажите, какое число ближе всего к 5? Да, это 6. Поздравляем с окончанием вашего детства. Причина в том, что 6 находится на кратчайшем расстоянии от 5, которое равно 1. Расстояние здесь — это семантическое расстояние между 5 и 6.
Рисунок 1 Одномерное пространство целых чисел
Теперь, когда вы занимаетесь машинным обучением, давайте сделаем крошечный шаг вперед и посмотрим, как выполняется традиционный текстовый поиск. Если вы поговорите с кем-то, кто раньше занимался текстовым поиском, то, скорее всего, часто услышите TF-IDF. TF означает term frequency, то есть частоту слова. Представьте себе высокоразмерное пространство с таким количеством измерений, сколько слов в словаре. Если мы посчитаем количество вхождений каждого слова в статье и зададим это число как значение в соответствующем измерении этого пространства, мы сможем описать любую статью как распределение разреженных векторов в этом пространстве словесных векторов (разреженных, потому что статья обычно охватывает лишь очень небольшую долю слов в словаре).
Рисунок 2 Демонстрация пространства словесных векторов
Это очень простой, но практичный способ мышления. Как показано выше, если две статьи похожи по своей области или содержанию, то векторы, соответствующие этим двум статьям, не должны находиться слишком далеко друг от друга в пространстве словесных векторов. Если две статьи идентичны, то расстояние между их словесными векторами будет равно 0. В текстовом поиске мы расширяем одномерное пространство положительных целых чисел из нашего первого примера до высокоразмерного пространства словесных векторов, но в основном они используют один и тот же подход: определить пространство, которое можно использовать для описания семантики данных и определения расстояния между ними.
Давайте сделаем еще один крошечный шаг (да, вы это предвидели). Теперь, когда с текстами мы разобрались, почему бы также не отобразить семантику изображений в пространство словесных векторов, чтобы добиться кросс-модальности текст-изображение?
Но, конечно, всё не так просто. Тексты, по сути, дают нам свою семантику бесплатно: у них есть "слова" как естественная семантическая единица. У изображений этого нет. Мы не можем использовать их отдельные пиксели, чтобы определить их значения.
Загадка векторизации без естественных семантических единиц раньше мучила область поиска изображений и неструктурированных данных в целом. Большинство типов данных (изображения, видео, аудио, облака точек и т. д.) не имеют естественных семантических единиц. Эту проблему нельзя было эффективно решить, пока данные и вычислительная мощность не стали достаточно дешёвыми, а нейронные сети — популярными. Давайте посмотрим, как эта проблема решается нейронными сетями.
Рисунок 3 Слои и архитектуры свёрточных нейронных сетей
Одна из замечательных особенностей глубокой нейронной сети заключается в том, что она "достаточно глубокая" (Не благодарите). На рисунке выше вход слева — это изображение размером 224 x 224, а выход справа — 4096-мерный вектор. Слева направо изображение проходит через множество слоёв нейронной сети, и нейронная сеть постепенно сжимает пространственную информацию в пикселях исходного изображения в семантическую информацию. В этом процессе мы видим, что пространственная размерность сужается, а семантическая размерность увеличивается (не самое точное утверждение, но я не нашёл лучшего способа это сформулировать). По сути, этот процесс представляет собой отображение семантики изображения в вещественное векторное пространство размерности 4096. По сравнению с ранее описанными методами, векторизация с помощью глубоких нейронных сетей имеет несколько очевидных преимуществ:
- Она не требует, чтобы исходные данные имели естественные, непосредственно сегментируемые семантические единицы, такие как “слова”.
- Определение “сходства данных” является гибким и определяется обучающими данными и целевой функцией, а также может быть настроено под специфические для приложения признаки.
- Процесс векторизации данных является процессом инференса модели, который в основном включает матричные операции и может использовать возможности ускорения современных GPU.
То, что сделала CLIP, — это кросс-модально связала тексты и изображения. Со стороны данных OpenAI разработала крупномасштабный набор пар текст-изображение, WIT (WebImageText). Модель обучается с использованием подхода контрастивного обучения, чтобы предсказывать, должны ли изображения и тексты быть сопоставлены в пары. Её устройство довольно простое:
- Выполнить кодирование признаков для текстов и изображений соответственно;
- Спроецировать текстовые и визуальные признаки из их соответствующих унимодальных пространств признаков в мультимодальное пространство признаков;
- В мультимодальном пространстве расстояние между векторами признаков текстов и изображений, которые должны быть парами (положительные примеры), должно быть как можно меньше, и наоборот для отрицательных примеров.
Рисунок 4 Обучение переносимым визуальным моделям с использованием надзора естественного языка. Источник изображения: https://arxiv.org/pdf/2103.00020.pdf
Ключевым здесь является второй шаг: проецирование унимодальных признаков текстов и изображений в мультимодальное пространство признаков через проекционный слой. Это означает, что мы можем отображать семантику изображений и текстов в одно и то же высокоразмерное пространство. Это семантическое пространство — мост, который CLIP предлагает для кросс-модального поиска текст-изображение. Теперь мы можем закодировать фрагмент описательного текста как вектор, найти векторы изображений со схожей семантикой, а затем через эти векторы изображений найти исходное изображение, которое нам нужно!
В целом это та же классическая формула: векторное пространство плюс семантическое сходство. Важность CLIP заключается в том, что она помогает нам создать высокоразмерное пространство, объединяющее семантику текстов и изображений, где чем ближе семантика текстов и изображений, тем меньше расстояние между соответствующими векторами.
Базовые компоненты сервиса text-to-image
Типичный сервис преобразования текста в изображение состоит из трех частей: стороны запроса (тексты), алгоритма поиска (то самое «to») и базовых баз данных (изображения).
Базы данных содержат исходные изображения, их векторы и модель инференса, которая кодирует исходные изображения в семантические векторы. Соответственно, сторона запроса в основном включает модель инференса, которая кодирует тексты в семантические векторы.
Часть «to» — это процесс, который соединяет запросы, векторную базу данных и базу данных изображений. Текст со стороны запроса пропускается через модель для получения его вектора, который затем сравнивается в векторной базе данных с topK наиболее похожих векторов изображений. Результаты возвращаются после того, как программа находит исходные изображения, соответствующие векторам.
Рисунок 5 Основные компоненты сервиса преобразования текста в изображение
Заключение
Теперь вы знаете основы поиска текста в изображениях и CLIP! В следующей статье мы применим на практике то, что узнали здесь, создав прототип сервиса преобразования текста в изображение всего за пять минут!
Если вам понравилась эта статья, почему бы не взглянуть на наш проект? Мы будем рады звездам, форкам или даже просто небольшому клику от вас. Также не стесняйтесь задавать нам свои вопросы в Slack!
О серии
«From Text to Image» — это серия блогов, в которой рассказывается, как использовать CLIP для создания крупномасштабного сервиса преобразования текста в изображение, включая:
- Понимание алгоритмов поиска, CLIP и преобразования текста в изображение;
- Создание демо преобразования текста в изображение за 5 минут;
- Продвинутая тема 1: Развертывание векторной базы данных для крупномасштабного векторного поиска
- Продвинутая тема 2: Развертывание сервиса инференса, который позволяет обрабатывать более 1000 QPS инференс-запросов
- Продвинутая тема 3: Сжатие векторных данных
Читать далее

Introducing Loon: A New Storage Engine for Vector Data That Never Stops Changing
Loon is a new storage engine for Milvus 3.0 and Zilliz Vector Lakebase, built to manage evolving vector datasets with ColumnGroups, row ID alignment, and Manifests.

Zilliz Cloud On-Demand Compute: Pay Only for What You Use
The customer case behind Zilliz Cloud On-Demand: how a $10K vector search bill came down to under $500, and the engineering changes that made it possible.

Zilliz Cloud BYOC Upgrades: Bring Enterprise-Grade Security, Networking Isolation, and More
Discover how Zilliz Cloud BYOC brings enterprise-grade security, networking isolation, and infrastructure automation to vector database deployments in AWS



