Модель основы CLIP

CLIP base model

Сводка статьи — Обучение переносимым визуальным моделям с помощью натурального языка

В этой статье мы рассмотрим статью по CLIP (Контрастное предварительное обучение язык-изображение). Мы извлечем ключевые концепции и разберем их для лучшего понимания. Кроме того, изображения и графики данных будут аннотированы для устранения сомнений.

Источник изображения

Статья: Обучение переносимым визуальным моделям с помощью натурального языка

Код: https://github.com/OpenAI/CLIP

Первая публикация: 26 февраля 2021 г.

Авторы: Алек Рэдфорд, Джон Ук Ким, Крис Хэллэси, Адитя Рамеш, Габриэль Гох, Сандхини Агарвал, Гириш Састр, Аманда Аскелл, Памела Мишкин, Джек Кларк, Гретчен Крюгер, Илья Сутскевер

Категория: мультимодальное глубинное обучение, компьютерное зрение, обработка естественного языка, основные модели, обучение представлений

Содержание

  1. Контекст и предыстория
  2. Метод
  3. Эксперименты
  4. Дополнительные материалы и ресурсы

Контекст и предыстория

CLIP (Контрастное предварительное обучение язык-изображение) — это мультимодель, которая учится находить соответствие между естественным языком и изображениями. Она обучается на 400 миллионах пар текст-изображение, собранных из интернета. Как мы узнаем позже в этой статье, CLIP обладает сильной производительностью в режиме нулевого обучения, что означает, что она хорошо справляется с задачами, отличными от тех, на которых она обучалась, без проведения какой-либо донастройки.

CLIP стремится:

  1. Применить успех крупномасштабных техник предварительного обучения, известных из обработки естественного языка (например, семейство GPT, T5 и BERT), к компьютерному зрению.
  2. Обеспечить гибкие возможности нулевого обучения, используя естественный язык вместо фиксированного набора классов.

Почему это так важно, вы можете спросить? Во-первых, многие модели компьютерного зрения обучаются на наборах данных с метками, собранных из массового участия. Эти наборы данных часто содержат сотни тысяч образцов. Некоторые исключения находятся в диапазоне нескольких миллионов образцов. Как вы можете себе представить, это очень трудоемкий и дорогостоящий процесс. Наборы данных для моделей естественного языка, с другой стороны, обычно имеют гораздо больший объем и собираются с Интернета. Во-вторых, если модель обнаружения объектов обучена на определенных классах и вы хотите добавить дополнительный класс, вам нужно будет пометить этот новый класс в ваших данных и переобучить модель.

Способность CLIP объединять естественный язык и изображения в сочетании с ее производительностью в режиме нулевого обучения привела к широкому применению во многих других популярных основных моделях, таких как UnCLIP, EVA, SAM, Stable Diffusion, GLIDE или VQGAN-CLIP, чтобы назвать некоторые.

Метод

Теперь давайте погрузимся в метод CLIP. Изображение, изображенное на рис. 1, показывает архитектуру CLIP и процесс его обучения

Рис. 1 — Архитектура CLIP и процесс обучения. Источник изображения + аннотации автора

Архитектура модели состоит из двух моделей-кодировщиков, одной для каждой модальности. Для кодировщика текста используется трансформатор, в то время как кодировщик изображений использует версию ResNet или ViT (Vision Transformer). Обученное линейное преобразование, по одному для каждой модальности, преобразует признаки в эмбеддинги одного размера. Наконец, вычисляется косинусная схожесть между каждым из эмбеддингов противоположной модальности и масштабируется с помощью обученного скаляра температуры. Во время обучения максимизируется косинусная схожесть между соответствующими парами, а для неправильных пар она минимизируется, отсюда и термин “контрастный” в названии фреймворка.

Есть несколько тонкостей, которые являются ключевыми для успеха, помимо большого набора данных, конечно. Во-первых, подход контрастного обучения сильно зависит от размера пакета N. Чем больше отрицательных примеров предоставляется вместе с правильными, тем сильнее сигнал обучения. CLIP был обучен на пакете размером 32 768, что довольно большой размер. Во-вторых, CLIP не обучается на точное совпадение слов, а на более простую задачу, чтобы выучить текст в целом, также называемую мешок слов (BoW).

Интересный факт: Версия CLIP, использующая модель ResNet50x64 в качестве кодировщика изображений, была обучена в течение 18 дней на 592 V100 GPUS, а версия с моделью ViT была обучена в течение 12 дней на 256 V100 GPUS. Другими словами, более 29 лет и более 8 лет соответственно на одном GPU (игнорируя тот факт, что использовался бы другой размер пакета).

После обучения модель можно использовать для классификации объектов на изображениях. Вопрос в том, как осуществлять классификацию с использованием модели, которая не была обучена классифицировать изображения, и не имеет входных меток классов, а только текстовые подсказки? На рис. 2 показано, как это делается:

Рис. 2 - Архитектура CLIP для классификации изображений. Источник изображения + аннотации от автора

Метка класса может быть представлена в виде текстовой подсказки, состоящей из одного слова. Чтобы сообщить модели, какие классы доступны для задачи классификации, в модель вводится набор из N классов. Это огромное преимущество по сравнению с моделями классификации, обученными на фиксированном наборе меток. Теперь мы можем вводить 3 или 100 классов; это наш выбор. Как мы увидим позже, для повышения производительности CLIP метка класса преобразуется в подсказку, чтобы предоставить модели дополнительный контекст. Затем каждая подсказка передается в кодировщик текста и преобразуется в вектор вложения.

Исходное изображение передается в кодировщик изображений для получения вектора вложения.

Затем вычисляется косинусное сходство для каждой пары текстовых и изображений вложений. На полученных значениях сходства применяется функция Softmax, чтобы получить распределение вероятностей. Наконец, выбирается значение с наибольшей вероятностью в качестве окончательного прогноза.

Эксперименты и абляции

В статье о CLIP представлено большое количество экспериментов и абляций. Здесь мы рассмотрим пять из них, которые, по моему мнению, важны для понимания успеха CLIP. Вначале приведены основные выводы (как сформулировано авторами CLIP), а затем мы подробно рассмотрим детали:

  1. Эффективность обучения: CLIP намного эффективнее в передаче без обучения, чем наш базовый алгоритм описания изображения
  2. Формат текстового ввода: Проектирование и ансамблирование подсказок улучшают производительность без обучения
  3. Производительность без обучения: CLIP без обучения конкурентоспособен с полностью надзираемой базовой моделью
  4. Производительность при небольшом количестве образцов: CLIP без обучения превосходит линейные зонды при небольшом количестве образцов
  5. Сдвиг распределения: CLIP без обучения намного устойчивее к сдвигу распределения, чем стандартные модели ImageNet

Эффективность обучения

Во время обучения кодировщик изображений и кодировщик текста обучаются совместно, то есть с одной целью обучения и одновременно. CLIP не только выполняет контрастное обучение, но и сравнивает текстовые подсказки в целом с данным изображением, поэтому порядок слов не имеет значения. Это просто «мешок слов». Фраза «мое имя Саша» приводит к тому же вложению, что и «Саша имя мое».

Предсказание мешка слов вместо правильных слов и их позиции в фразе является гораздо более простой прокси-задачей. На рис. 3 показана точность без обучения на ImageNet в зависимости от количества образцов обучения начальной модели трансформера, обученной предсказывать точные слова, начальной модели трансформера, обученной предсказывать мешок слов, и модели CLIP, выполняющей контрастное обучение с использованием мешка слов.

«CLIP намного эффективнее в передаче без обучения, чем наш базовый алгоритм описания изображения» – Авторы CLIP

Рис. 3 — Эффективность без обучения. Источник изображения + аннотации от автора

Формат ввода текста

Как мы видели на рис. 2, для выполнения классификации объектов метка класса была преобразована в текстовую подсказку. Конечно, это не было случайностью, потому что CLIP вполне удовлетворялся бы одним словом. Это было сделано для использования описательности языка и предоставления контекста для разрешения возможных неоднозначностей. Давайте возьмем слово “боксер” в качестве примера. Это может быть тип собаки или тип спортсмена. Авторы CLIP показали, что формат текстовой подсказки имеет большое значение и может повысить производительность и эффективность.

“Инженерия подсказок и ансамблирование улучшают нулевую производительность” — Авторы CLIP

Рис. 4 — Инженерия подсказок и ансамблирование против классов без контекста. Источник изображения + аннотации от автора

Производительность без обучения

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

“CLIP без обучения конкурентоспособен с полностью супервизируемой базовой моделью” — Авторы CLIP

Рис. 5 — CLIP без обучения против полностью супервизируемой базовой модели. Источник изображения + аннотации от автора

Производительность с небольшим количеством обучающих образцов

В то время как предсказатели без обучения не донастраиваются для последующей задачи, детекторы с небольшим количеством обучающих образцов делают это. Авторы провели эксперименты с несколькими общедоступными предварительно обученными моделями и сравнили их производительность с небольшим количеством образцов на 20 разных наборах данных с нулевым и небольшим количеством образцов CLIP. Модели с небольшим количеством образцов были донастроены на 1, 2, 4, 8 и 16 примеров на класс.

Интересно, что CLIP без обучения показывает примерно такую же хорошую производительность, как CLIP с 4 образцами.

При сравнении CLIP с другими моделями следует учитывать, что общедоступные модели, с которыми проводится сравнение (такие как BiT, SimCLR и ResNet), были предварительно обучены на разных и меньших наборах данных по сравнению с моделью CLIP.

“CLIP без обучения превосходит линейные зонды с небольшим количеством образцов” — Авторы CLIP

Рис. 6 — Производительность с небольшим количеством образцов. Источник изображения + аннотации от автора

Сдвиг распределения

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

Сравнивали устойчивость CLIP без обучения с моделью ResNet101 ImageNet. Обе модели оцениваются на естественных сдвигах распределения ImageNet, как показано на рис. 7.

“CLIP без обучения намного устойчивее к сдвигу распределения, чем стандартные модели ImageNet” — Авторы CLIP

Рис. 7 — Сдвиг распределения. Источник изображения + аннотации от автора

Дополнительные материалы и ресурсы

Как уже упоминалось в начале этой статьи, CLIP широко принят большим количеством проектов.

Следующий список статей, использующих CLIP:

  1. [UnCLIP] Иерархическая генерация текста-условий с использованием CLIP-латентных векторов
  2. [EVA] Исследование пределов обучения маскированных визуальных представлений в масштабе
  3. [SAM] Сегментация всего
  4. [Stable Diffusion] Синтез изображений высокого разрешения с использованием моделей латентной диффузии
  5. [GLIDE] Приближение к фотореалистичной генерации и редактированию изображений с помощью моделей диффузии, управляемых текстом
  6. [VQGAN-CLIP] Генерация и редактирование изображений в открытой области с помощью естественного языкового руководства

И список репозиториев, если вы хотите погрузиться в реализацию и протестировать ее самостоятельно:

  • Официальный репозиторий OpenAI
  • Python Notebook для экспериментов с CLIP
  • OpenCLIP: Открытая реализация CLIP