CLIP: как модель научилась связывать картинки и текст
OpenAI показала CLIP в январе 2021 года — модель, которая сопоставляет изображения и подписи к ним и классифицирует картинки по описанию, а не по заранее заданным ярлыкам. Разбираем, как она устроена и где реально пригодилась.

В январе 2021 года OpenAI выложила CLIP — Contrastive Language-Image Pre-training. Идея простая на словах и неочевидная на практике: вместо того чтобы учить нейросеть распознавать фиксированный набор классов («кошка», «собака», «самолёт»), её научили сопоставлять произвольную картинку с произвольным текстом. Модель обучили на большом наборе пар «изображение — подпись», собранных из открытого интернета. Точный размер выборки OpenAI в статье указывает как порядка 400 миллионов пар — если приводите эту цифру, сверяйтесь с оригинальной публикацией.
Что именно делает CLIP
CLIP не генерирует картинки и не пишет подписи. Он отвечает на один вопрос: насколько эта картинка соответствует этому тексту. Внутри две отдельные части — энкодер изображений и энкодер текста. Каждая превращает свой вход в вектор в общем пространстве. Чем ближе вектор картинки к вектору подписи, тем выше их сходство.
За счёт этого CLIP умеет то, чего не умеет классический классификатор: zero-shot классификацию.1 Вы даёте модели картинку и список текстовых вариантов — «фото кошки», «фото собаки», «фото машины» — а она возвращает, к какому описанию картинка ближе. Ни один из этих классов не нужно было предусматривать при обучении. Новый набор категорий задаётся текстом на входе, а не переобучением сети.
Почему это было заметным сдвигом
Обычная модель классификации изображений привязана к своему списку классов. Обучили на 1000 категорий ImageNet — распознаёт 1000 категорий. Захотели добавить новую — нужно собирать размеченные примеры и дообучать. CLIP снял этот шаг: чтобы завести новую категорию, достаточно описать её словами.
Главный трюк CLIP не в архитектуре, а в постановке задачи: обучать не «угадай класс из списка», а «угадай, какая подпись подходит картинке». Список классов после этого становится текстом на входе.
Как устроено обучение
CLIP обучали контрастно. В каждом батче берётся набор пар «картинка — текст». Модель строит матрицу сходства всех картинок со всеми подписями и учится делать так, чтобы сходство настоящих пар было высоким, а всех остальных сочетаний — низким. Отсюда слово contrastive в названии: правильные пары противопоставляются неправильным.
В качестве энкодера изображений в разных версиях CLIP использовались варианты ResNet и Vision Transformer (ViT), текст кодировался трансформером. Конкретные конфигурации и их точность на бенчмарках приведены в оригинальной статье и репозитории — там же лежат веса опубликованных вариантов.
Промпт-инжиниринг ещё до эпохи чат-ботов
Формулировка текста влияет на результат. Подпись «dog» и подпись «a photo of a dog» дают разное качество классификации, потому что обучающие подписи из интернета чаще были полными фразами, а не одним словом. В работе описан приём с шаблонами вроде «a photo of a {label}» и усреднением по нескольким формулировкам. Это ранний пример того, что позже назовут промпт-инжинирингом.
Где CLIP реально применяют
CLIP интересен не сам по себе, а как компонент. Общее векторное пространство для текста и картинок оказалось удобным строительным блоком:
- Поиск по картинкам текстом. Индексируете изображения их векторами, запрос переводите в вектор текста, ищете ближайшие. Так работает семантический поиск в фотобиблиотеках и стоках.
- Модерация и фильтрация. Можно оценивать, насколько картинка соответствует нежелательным описаниям, без отдельного классификатора под каждую категорию.
- Направление генеративных моделей. Ранние text-to-image пайплайны использовали CLIP, чтобы подталкивать генерацию ближе к текстовому запросу. Его текстовый энкодер применялся и в диффузионных моделях как способ понять запрос.
- Оценка качества генерации. Метрика CLIPScore измеряет, насколько сгенерированная картинка соответствует подписи.
Ограничения, о которых стоит помнить
CLIP не всесилен. Он обучен на данных из интернета и наследует их перекосы: то, что редко встречалось в подписях, распознаётся хуже. Точный подсчёт (сколько объектов на картинке), тонкая детализация и специализированные домены — медицинские снимки, чертежи, редкие виды — даются ему тяжело. OpenAI в самой публикации и сопроводительной карточке модели отдельно предупреждала о рисках предвзятости и о том, что модель не стоит использовать для чувствительной классификации людей без проверки.
CLIP на фоне соседних подходов
| Подход | Что делает | Нужна ли разметка под новый класс |
|---|---|---|
| Классический классификатор (ResNet на ImageNet) | Относит картинку к фиксированному списку классов | Да, собрать и переобучить |
| CLIP (zero-shot) | Сопоставляет картинку с произвольным текстом | Нет, класс задаётся текстом |
| Генеративная text-to-image | Создаёт картинку по описанию | Другая задача — не классификация |
Строки таблицы отвечают на один практический вопрос: сколько усилий стоит добавить новую категорию. Именно здесь преимущество CLIP заметнее всего.
Как попробовать
OpenAI открыла код и веса CLIP под открытой лицензией. Есть официальный репозиторий на GitHub и множество реализаций в популярных фреймворках, включая интеграцию в библиотеки для работы с трансформерами. Для базового эксперимента достаточно взять предобученный вариант, прогнать картинку и несколько текстовых вариантов и посмотреть на сходства — переобучать ничего не нужно.
Если вам нужен не исследовательский прототип, а продакшн, обратите внимание на более поздние открытые модели того же семейства (например, OpenCLIP с обучением на других открытых наборах данных) — там доступны более крупные и точные варианты. Актуальный список и метрики смотрите в их репозиториях.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: OpenAI — CLIP: Connecting text and images, OpenAI CLIP — исходный код и веса на GitHub
Частые вопросы
CLIP умеет генерировать картинки?
Что значит zero-shot классификация?
Насколько точен CLIP по сравнению с обычным классификатором?
Можно ли использовать CLIP бесплатно и в коммерческом проекте?
Почему подпись «a photo of a dog» работает лучше, чем просто «dog»?
Подходит ли CLIP для медицинских снимков или редких доменов?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.