Автор: Ксения Рябинова, Марк Страхов
State-of-the-Art модели для CV предобучают на датасетах с фиксированным количеством лейблов. Вспомним Imagenet: в нем больше 21-й тысячи классов с лейблами “water snake”, “triceratops” и многими другими. Создание таких датасетов — очень трудоемкий процесс. А в NLP сейчас для предобучения языковой модели данные не размечают. Берут огромные наборы текстов из интернета и обучают прямо на них. Вот бы претрейн CV моделей можно было бы делать как в NLP…
Так и появилась модель CLIP — Contrastive Language-Image Pre-training. Это модель, которая претренировалась на огромном датасете из пар (Картинка, Текст).
Итак, мы не хотим размечать кучу данных для претрейна. Как тогда нам поступить? Можно спарсить картинки из интернета и учиться на них с помощью self-supervised методов (например, поворачивать картинку на n градусов и пытаться предсказать этот n). Очень часто вместе с картинкой идет какой-то текст (описание этой картинки). Такой текст может сообщить полезную информацию об объектах на картинке.
Картинки с подписями, найденные в гугле по запросу “кот прыгнул на дерево”
Авторы CLIP создали датасет из 400 миллионов пар <картинка>:<текст>. Они сконструировали около 500 тысяч запросов, с помощью которых постарались максимально покрыть все многообразие визуальных концепций. Каждый запрос аугментировали с использованием синонимов. На каждый из запросов приходилось около 20 тысяч пар <картинка>:<текст>. Полученный набор данных имеет такое же общее количество слов, как и набор данных WebText, использованный для обучения GPT-2.
Итак, у нас есть датасет с 400 миллионами пар <картинка>:<текст>. Давайте теперь разберемся, как можно обучить претрейн на таком наборе.
Модель содержить энкодер для текстов, энкодер для картинок и projection head.
Для текстов они использовали GPT2, а для картинок было два варианта:
Схематически итоговая модель выглядит так:
Давайте подробнее разберем блоки с моделями.
Эту модель изменили больше всего: