В ​2021 году особенно активно развивались языковые и визуальные трансформеры, что привело к появлению новых разработок в сфере мультимодального анализа данных. Ярким примером стала модель синтеза изображений по текстовым описаниям DALL-E от OpenAI. Команды Сбера - Sber AI и SberDevices - успешно ворвались в эту гонку трансформеров и обучили модели: ruDALL-E XL, которая доступна на GitHub, эксклюзивную ruDALL-E XXL (доступна в DataHub SberCloud ML Space), ruDALL-E Emojich для синтеза эмоджи, первую версию мультимодальной мультитаск архитектуры Fusion Brain, а с введением понятия гипермодальности создали универсальную модель ruDOLPH (про которую обязательно расскажем подробнее в одной из следующих статей).

Мы также не могли обойти стороной другое полезное приложение языковых и визуальных трансформеров, – модель CLIP от OpenAI, задача которой – определять “смысловую” близость текстов на естественном (английском) языке и изображений. Успешное обучение модели командой OpenAI уже позволило с уверенностью говорить о возможности решения таких задач компьютерного зрения, как, например, zero-shot классификация или zero-shot детекция объектов. В итоге мы поставили перед собой цель качественно “русифицировать” CLIP, чтобы модель можно было использовать напрямую на русском языке и обходить применение переводчиков в связке с англоязычной моделью CLIP. Первые шаги в этом направлении были сделаны нами ещё в начале 2021 года - тогда мы представляли модель ruCLIP Small (Russian Contrastive Language – Image Pre-training). Сейчас  же мы хотим рассказать об ещё 6 версиях модели ruCLIP, которые мы обучили за это время (для более детального погружения в терминологию и суть проблемы советуем перечитать нашу прошлую статью по ruCLIP Small).

В релиз вошли следующие версии модели ruCLIP, которые отличаются количеством слоев энкодера ViT, размером использованного патча (14×14, 16×16, 32×32) и размерами входных изображений — 224×224, 336×336 и 384×384 пикселя, соответственно. Семантика названия моделей выглядит следующим образом:

Первые 4 модели доступны для открытого пользования на GitHub, две из них - в хабе предобученных моделей, датасетов и контейнеров – DataHub SberCloud ML Space, а последние две, – самые большие можно скачать только через DataHub.

Все новые версии ruCLIP были обучены на открытых данных, собранных из Рунета, а также на данных экосистемы Сбера. Всего удалось собрать около 240 млн уникальных пар “изображение-описание на естественном языке”. Модель мы обучали в течение 12 дней на платформе SberCloud ML Space и суперкомпьютере Christofari Neo, используя распределенное обучение на 256 GPU Tesla A100, что существенно превосходит ресурсы, затраченные в ходе первого обучения ruCLIP Small. Важно подчеркнуть, что в новых версиях при обучении использовался батч размера 32768, что соответствует тому, как обучалась оригинальная модель CLIP (в версии ruCLIP Small размер батча был равен 16).

В основе новых версий ruCLIP по-прежнему лежат две составляющие:

  1. Image Encoder — энкодер, формирующий векторное представление изображений. В основе нашей модели остался хорошо известный ViT.

  2. Text Encoder — энкодер, формирующий векторное представление текстовых описаний. В отличие от модели ruCLIP Small, мы не стали использовать RuGPT3Small, а взяли текстовый энкодер - трансформер со следующими параметрами:

  • для Base версий

    • Context Length: 77

    • Transformer Layers: 12

    • Transformer Width: 512

    • Transformer Heads: 8

  • для Large версий

    • Context Length: 77

    • Transformer Layers: 12

    • Transformer Width: 768

    • Transformer Heads: 12

Данные

Как мы уже упоминали ранее, для обучения ruCLIP использовался датасет, состоящий из 240М пар “текстовое описание-изображение” и представляющий из себя расширенную версию обучающего датасета ruDALL-E. Следует отметить, что наш датасет является одним из самых больших русскоязычных датасетов, содержащих пары “текстовое описание-изображение”, но на фоне существующих англоязычных конкурентов наш сет далек по объёму от лидеров списка, что можно видеть в таблице 1.

Таблица 1 - Сравнение объемов обучающих выборок для различных моделей

Модель

ruCLIP Small

ruCLIP

CLIP 

ALIGN

BASIC 

Количество пар

3M

240M

400M

1.8B

6.6B

Лидерство по объемам данных принадлежит Google с их моделями ALIGN и BASIC. В первой из них данные собраны на основе Conceptual Captions с упрощённой фильтрацией данных. Во второй модели набор данных для ALIGN дополняется приватным датасетом JFT-3B.

Особенности обучения

Процесс обучения был довольно интересный, и о его этапах хочется рассказать подробнее. Начнем с модели, основанной на ViT-Large. На первом этапе проводилось обучение ruCLIP Large [vit-large-patch14-224] с нуля на основе собранного датасета. Обучение этой модели выполнялось в течение 380К итераций. Далее, изменив размер входных данных и проведя обучение в течение еще 15К итераций была получена модель ruCLIP Large [vit-large-patch14-336] exclusive. Что касается ViT-Base версий модели, то они обучались путем тюнинга английской модели в течение 140К итераций. В результате были получены модели ruCLIP Base [vit-base-patch16-224] и ruCLIP Base [vit-base-patch32-224]. Изменив размер входных изображений до 384 и выполнив тюнинг в течение еще 20К итераций были получены модели ruCLIP Base [vit-base-patch32-384] и ruCLIP Base [vit-base-patch16-384] exclusive.

Наглядно процесс обучения представлен ниже на графиках изменения значений loss (рисунок 1). Также для каждого процесса обучения показана методика изменения значений learning rate.

Рисунок 1 - Графики изменения loss в процессе обучения (левый столбец) и процесс варьирования learning rate (правый столбец) для 6 реализаций модели ruCLIP
Рисунок 1 - Графики изменения loss в процессе обучения (левый столбец) и процесс варьирования learning rate (правый столбец) для 6 реализаций модели ruCLIP

На рисунке 2 показан график изменения среднего значения accuracy для всех датасетов в процессе обучения модели ruCLIP Large [vit-large-patch14-224].

Рисунок 2 - График изменения среднего значения accuracy для всех датасетов в процессе обучения ruCLIP Large [vit-large-patch14-224]
Рисунок 2 - График изменения среднего значения accuracy для всех датасетов в процессе обучения ruCLIP Large [vit-large-patch14-224]

Пример работы

Для запуска возьмем изображение жизнерадостного щеночка (рисунок 3) и закинем его в код инференса нашей модели, заранее определив набор классов для zero-shot классификации.

Рисунок 3 - Веселый щеночек
Рисунок 3 - Веселый щеночек
import ruclip
import torch
import requests
from PIL import Image
from io import BytesIO
 
url_dog = "https://ichef.bbci.co.uk/news/640/cpsprodpb/475B/production/_98776281_gettyimages-521697453.jpg"
response = requests.get(url_dog)
image = Image.open(BytesIO(response.content))
 
device = 'cuda'
clip, processor = ruclip.load('ruclip-vit-base-patch32-384', device=device)
classes = ['кошка', 'собачка', 'мышка', 'машина', 'стол', 'дом', 'жидкость']
predictor = ruclip.Predictor(clip, processor, device, bs=8)
 
with torch.no_grad():
    text_latents = predictor.get_text_latents(classes)
    pred_labels = predictor.run([image], text_latents)
 
print(f'На изображении {classes[pred_labels[0]]}')

--------------------------------------------------
На изображении собачка

В результате получили, что с близкой к наибольшей вероятностью изображение было отнесено к классу “собачка”, что не может не радовать. Дальше мы покажем результаты работы нашей самой большой доступной модели ruCLIP Large [vit-large-patch14-224] на данных из разных доменов и продемонстрируем ее жизнеспособность в задачах zero-shot и few-shot классификации.

В случае, если захочется воспользоваться эксклюзивными версиями модели ruCLIP из DataHub SberCloud ML Space, то с инструкциями можно ознакомиться по ссылкам ruCLIP Base [vit-base-patch16-384] exclusive и ruCLIP Large [vit-large-patch14-336] exclusive.

Оценка качества. Сравнение моделей 

В ходе экспериментов мы преследовали несколько целей. Первая – посмотреть насколько хороши разные модели ruCLIP на данных различной природы, а вторая – сравнить качество нашего решения с использованием комбинации переводчика OPUS-MT ru-en и оригинальной модели CLIP. Цифры ниже все скажут за себя.

Про качество

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

Для демонстрации снова возьмем те же самые изображения, которые использовались в ноутбуке оригинальной модели CLIP и в статье про ruCLIP Small. Среди наших моделей возьмем самую большую открытую модель ruCLIP Large [vit-large-patch14-224] и проверим ее качество. Косинусная близость между текстами и изображениями для модели ruCLIP Large [vit-large-patch14-224] также показана ниже на рисунке 4.

Рисунок 4 - Матрица близости изображений и текстовых описаний
Рисунок 4 - Матрица близости изображений и текстовых описаний

Предсказания топ 5 классов для изображений с помощью ruCLIP Large  [vit-large-patch14-224] показаны на рисунке 5.

Рисунок 5 - Близость текстовых описаний для различных изображений
Рисунок 5 - Близость текстовых описаний для различных изображений

В таблице 2 приведено сравнение реализаций модели ruCLIP в рамках задачи zero-shot классификации для датасетов разных доменов. Символом ???? выделено лучшее значение метрики для каждого из датасетов. В таблице представлены результаты сравнения первой обученной модели ruCLIP Small, всех 6 реализаций модели ruCLIP, модели CLIP original с переводчиком OPUS-MT ru-en и модели CLIP original. В 8 из 18 датасетов модель ruCLIP Large [vit-large-patch14-336] exclusive показывает лучший результат среди всех сравниваемых, а в тех, где проигрывает, разница не очень значительная (пожалуй, кроме MNIST и FGVC Aircraft - здесь еще есть над чем потрудиться). Стоит отметить, что на датасете MNIST даже самым большим моделям ALIGN и BASIC не удается обойти CLIP по качеству. Для большинства датасетов (11 из 18) обученные нами модели обходят по качеству модель CLIP [vit-base-patch16-224] original + OPUS-MT. Преимущество модели CLIP original (правый столбец) можно объяснить существенно большим объемом обучающей выборки (400М vs 240М).

Таблица 2 - Значения точности zero-shot классификации для различных моделей

ruCLIP Small [rugpt3-small]

ruCLIP Base [vit-base-patch32-224]

ruCLIP Base [vit-base-patch16-224]

ruCLIP Large [vit-large-patch14-224]

ruCLIP Base [vit-base-patch32-384]

ruCLIP Large [vit-large-patch14-336] exclusive

ruCLIP Base [vit-large-patch16-384] exclusive

CLIP [vit-base-patch16-224] original + OPUS-MT

CLIP [vit-base-patch16-224] original

Food101, acc

0.137

0.505

0.552

0.597

0.642

0.712 ????

0.689

0.664

0.883

CIFAR10, acc

0.808

0.818

0.810

0.878

0.862

0.906 ????

0.845

0.859

0.893

CIFAR100, acc

0.440

0.504

0.496

0.511

0.529

0.591 

0.569

0.603 ????

0.647

Birdsnap, acc

0.036

0.115

0.117

0.172

0.161

0.213 ????

0.195

0.126

0.396

SUN397, acc

0.036

0.452

0.462

0.484

0.510

0.523 ????

0.521

0.447

0.631

Stanford Cars, acc

0.023

0.433

0.487

0.559

0.572

0.659 ????

0.626

0.567

0.638

DTD, acc

0.169

0.380

0.401

0.370

0.390

0.408

0.421 ????

0.243

0.432

MNIST, acc

0.137

0.447

0.464

0.337

0.404

0.242

0.478 

0.559 ????

0.559

STL10, acc

0.910

0.932

0.932

0.934

0.946

0.956

0.964 

0.967 ????

0.970

PCam, acc

0.484

0.501

0.505

0.520

0.506

0.554 

0.501

0.603 ????

0.573

CLEVR, acc

0.104

0.148

0.128

0.152

0.188 

0.142

0.132

0.240 ????

0.240

Rendered SST2, acc

0.483

0.489

0.527

0.529

0.508

0.539 ????

0.525

0.484

0.484

ImageNet, acc

*

0.375

0.401

0.426

0.451

0.488????

0.482

0.392

0.638

FGVC Aircraft, mean-per-class

0.020

0.033

0.043

0.046

0.053

0.075

0.046

0.220 ????

0.244

Oxford Pets, mean-per-class

0.462

0.560

0.595

0.604

0.587

0.546

0.635 ????

0.507

0.874

Caltech101, mean-per-class

0.590

0.786

0.775

0.777

0.834

0.835 ????

0.835 ????

0.792

0.883

Flowers102, mean-per-class

0.063

0.401

0.388

0.455

0.449

0.517 ????

0.452

0.357

0.697

Hateful Memes, roc-auc

0.527

0.564 

0.516

0.530

0.537

0.519

0.543

0.579 ????

0.589

Ниже на рисунках 6 и 7 показаны результаты экспериментальных исследований zero-shot и few-shot классификации 10 моделями на 16 датасетах. Так же, как и в оригинальной статье, на признаках, которые извлекает CLIP для изображений, были обучены линейные классификаторы с использованием 1, 2, 4, 8 и 16 изображений для каждого класса. Это достаточно простой и понятный подход transfer learning, называемый linear probe, при котором обученная модель используется для извлечения признаков, и далее доучивается “голова” для необходимого количества классов при ограниченном наборе изображений для каждого класса. Поскольку признаки, которые извлекаются у моделей CLIP original и CLIP original + OPUS-MT одинаковые — для CLIP original + OPUS-MT нет отдельного графика few-shot классификации. Также мы посчитали усредненный few-shot график для лучшей модели ruCLIP Large exclusive без учета трех датасетов - PCam, Oxford Pets и FGVC Aircraft, на которых модель проигрывает достаточно сильно, и можно видеть (пунктирная линия), что среднее качество даже немного превосходит ruCLIP Small. Звездочками показаны значения средней zero-shot оценки моделей.

Рисунок 6 - Усредненный график результатов экспериментов zero-shot (звездочки) и few-shot (линии) классификаций для различных моделей по всем датасетам, участвовавшим в оценке качества
Рисунок 6 - Усредненный график результатов экспериментов zero-shot (звездочки) и few-shot (линии) классификаций для различных моделей по всем датасетам, участвовавшим в оценке качества

Отдельно для каждого датасета картина выглядит следующим образом (рисунок 7). 

Рисунок 7 - График результатов экспериментов zero-shot (звездочки) и few-shot (линии) классификаций для различных моделей для каждого из датасетов, участвовавших в оценке качества
Рисунок 7 - График результатов экспериментов zero-shot (звездочки) и few-shot (линии) классификаций для различных моделей для каждого из датасетов, участвовавших в оценке качества

Почему же ruCLIP Small имеет такие хорошие показатели качества в результате few-shot классификации? Такой результат обусловлен тем, что при реализации ruCLIP Small использовался Image Encoder, состоящий из замороженных весов модели CLIP original и двух дополнительных линейных слоев, которые и подвергались обучению. Ввиду того, что для linear probe эксперимента используется только визуальная составляющая модели, качество ruCLIP Small должно быть очень близко к CLIP original. Посмотреть детальное сравнение всех 6 обученных моделей можно в нашем репозитории на GitHub.

В таблице 3 приведено сравнение значений метрики few-shot классификации для восьми моделей на разных датасетах. В составе сравнительной базы также выступают модели ruCLIP Small и CLIP original. И снова преимущество модели CLIP original (правый столбец) можно объяснить существенно большим объемом обучающей выборки (400М vs 240М).

Таблица 3 - Усредненные значения качества few-shot классификации для различных моделей

ruCLIP Base [vit-base-patch32-224]

ruCLIP Base [vit-base-patch16-224]

ruCLIP Large [vit-large-patch14-224]

ruCLIP Base [vit-base-patch32-384]

ruCLIP Large [vit-large-patch14-336] exclusive

ruCLIP Base [vit-large-patch16-384] exclusive

ruCLIP Small [rugpt3-small]

CLIP [vit-base-patch16-224] original

Food101

0.765

0.827

0.840

0.851

0.896 ????

0.890

0.874

0.901

CIFAR10

0.917

0.922

0.927

0.934

0.943 

0.942

0.948 ????

0.953

CIFAR100

0.716

0.739

0.734

0.745

0.770

0.773 

0.794 ????

0.808

Birdsnap

0.347

0.503

0.567

0.434

0.609

0.612 ????

0.584

0.664

SUN397

0.683

0.721

0.731

0.721

0.759 ????

0.758

0.753

0.777

Stanford Cars

0.697

0.776

0.797

0.766

0.831

0.840 ????

0.806

0.866

DTD

0.690

0.734

0.711

0.703

0.731

0.749 ????

0.738

0.770

MNIST

0.963

0.974 

0.949

0.965

0.949

0.971

0.985 ????

0.989

STL10

0.957

0.962

0.973

0.968

0.981 ????

0.974

0.977

0.982

PCam

0.827

0.823

0.791

0.835

0.807

0.846 ????

0.833

0.830

CLEVR

0.356

0.360

0.358

0.308

0.318

0.378 

0.524 ????

0.604

Rendered SST2

0.603

0.655

0.651

0.651

0.637

0.661 ????

0.568

0.606

FGVC Aircraft

0.254

0.312

0.290

0.283

0.341

0.362 

0.500 ????

0.604

Oxford Pets

0.774

0.820

0.819

0.730

0.753

0.856 

0.895 ????

0.931

Caltech101

0.904

0.917

0.914

0.922

0.937 ????

0.932

0.937

0.956

HatefulMemes

0.545

0.568

0.563

0.581

0.585 

0.578

0.638 ????

0.645

В дополнение мы еще посчитали корреляцию значений качества zero-shot и few-shot классификаций для разных моделей. Значение коэффициента корреляции нашей лучшей модели ruCLIP Large [vit-large-patch14-336] exclusive ближе других к значению оригинальной модели CLIP (рисунок 8), что говорит о хорошей обобщающей способности при переходе от zero-shot к few-shot задаче.

Рисунок 8 - Корреляция метрик качества zero-shot и few-shot классификаций
Рисунок 8 - Корреляция метрик качества zero-shot и few-shot классификаций

Про скорость

Мы не ограничились лишь оценкой качественных характеристик реализаций модели ruCLIP, но и оценили их производительность на датасете CIFAR100 с использованием Nvidia-V100. Результаты оценки инференса реализаций показаны в таблице 4.

Таблица 4 - Оценка скорости работы (в iter/sec) реализаций модели ruCLIP на датасете CIFAR100

ruCLIP Base [vit-base-patch32-224]

ruCLIP Base [vit-base-patch16-224]

ruCLIP Large [vit-large-patch14-224]

ruCLIP Base [vit-base-patch32-384]

ruCLIP Large [vit-large-patch14-336] exclusive

ruCLIP Base [vit-large-patch16-384] exclusive

iter/sec

308.84 ????

155.35

49.95

147.26

22.11

61.79

Что получили в итоге?

Нам удалось обучить несколько разных версий ruCLIP, которые на ряде датасетов успешно обошли оригинальную англоязычную модель CLIP с русско-английским переводчиком. Все обучение строилось на самостоятельно собранном датасете из 240 млн пар и заняло 12 дней на 256 Tesla GPU A100 суперкомпьютера Christofari Neo. Обширные исследования на датасетах из различных доменов показали применимость ruCLIP в задачах zero-shot и few-shot классификации. Это безусловно можно назвать успешным переносом на русский язык модели CLIP (еще один пример работы модели ruCLIP на рисунке 9). 

В задачах zero-shot и few-shot классификации версии модели ruCLIP проигрывают оригинальной модели CLIP в связи с тем, что для обучения использовался датасет меньшего объема. Следует также отметить тенденцию к росту качества моделей с ростом объема обучающих выборок, что подтверждается преимуществом ALIGN и BASIC над CLIP ввиду существенно большего объема использованных данных.

Успешное обучение ruCLIP и доступность моделей в open source позволит эффективно решать многие задачи компьютерного зрения в различных продуктах и сервисах в режиме «zero-shot», то есть без необходимости дорогостоящего дообучения. Нам бы очень хотелось, чтобы все заинтересованные читатели загрузили себе доступные модели, потестировали их в режиме zero-shot и предложили свои идеи по дальнейшему развитию/применению проекта. В дополнение на платформе SberCloud ML Space для первых 100 клиентов-юридических лиц доступен грант в 180 000 руб. на тестовый доступ и дообучение моделей, а в модуле DataHub размещены open source и эксклюзивные реализации модели ruCLIP.

Рисунок 9 - Пример работы модели ruCLIP: 
'скрипка': 0.68,
 'гитара': 0.40,
 'пианино': 0.32,
 'аккордеон': 0.26,
 'труба': 0.28
Рисунок 9 - Пример работы модели ruCLIP: 'скрипка': 0.68, 'гитара': 0.40, 'пианино': 0.32, 'аккордеон': 0.26, 'труба': 0.28

Коллектив авторов: Алексей Шоненков, Андрей Кузнецов, Денис Димитров, Татьяна Шаврина, Даниил Чесаков, Анастасия Мальцева, Алёна Феногенова, Игорь Павлов, Антон Емельянов, Сергей Марков, Дарья Бакшандаева, Вера Шибаева, Андрей Черток

Комментарии (4)


  1. Nehc
    19.01.2022 13:12

    В целом это очень правильно и нужно.

    Вот в этой реплике: Нам удалось обучить несколько разных версий ruCLIP, которые на ряде датасетов успешно обошли оригинальную англоязычную модели CLIP с русско-английским переводчиком. Не хватает сопоставления, что бы понять на каких именно датасетах и насколько обогнали. Что бы понимать ради чего все это.


    1. kuznetsoff87 Автор
      19.01.2022 13:19
      +3

      В статье есть таблица сравнительная по различным датасетам - там сравниваются 6 версий наших и оригинальный CLIP с переводчиком OPUS-MT. Там как раз все видно


      1. Nehc
        19.01.2022 13:43

        Да, не увидел — мелким шрифтом в описании к таблице же: В 8 из 18 датасетов модель ruCLIP Large [vit-large-patch14-336] exclusive показывает лучший результат среди всех сравниваемых… Принято.

        Ну т.е. для энтузиастов, для которых exclusive модели не доступны, как я понимаю, вариант «оригинальный CLIP с переводчиком OPUS-MT» — предпочтительнее, чем выложенные модели? ;)


        1. kuznetsoff87 Автор
          19.01.2022 13:59
          +3

          Нет, это не так) Если вы возьмете модель large-14-224, то получите результат, на уровне CLIP+OPUS-MT, а для ряда датасетов даже лучше, например, CIFAR10, Birdsnap, SUN397 и др.