Как стать автором
Обновить
38
0
Михаил Константинов @Dirac

Research Teem Lead at Squad, канал «Мишин Лернинг»

Отправить сообщение

Имхо, одна из важнейших и лучших сетей современности

Отличная статья! И огромное спасибо за код файнтюна, Alex!

Отличная статья! Aleksandr, спасибо

Softmax же

text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1)
Понял! Спасибо еще раз за статью!
Добрый вечер! Спасибо за статью. Можете чуть подробнее объяснить, что в этой формуле?

image
Кстати да. Прям возникло желание попробовать!
Добрый день! Спасибо за интересе к теме.
Попробую ответить на все Ваши вопросы.

— Почему модели скормили только по одной картинки из категории, а, например, не по 3 или 5?

— Мы не кормим ни одного изображения и не дообучаем на них. Сosine similarity мы считаем только для визуализации.
Давайте скормим модели 10 изображений по одному примеру на класс и их текстовые описания. А потом построим матрицу косинусных расстояний между векторами изображений и векторами текстов (cosine similarity в общем пространстве визуальных и текстовых репрезентаций).

Как мы видим, по матрице cosine similarity, максимальная схожесть векторных репрезентаций изображений и текстовых описаний находится на главной диагонали. Из этого мы можем сделать вывод, что CLIP подходит под нашу задачу.

— Как изменится точность классификации, если число предварительно скормленных картинок увеличить? (и если улучшится, то как это сделать в этом модели)

— Это очень хороший вопрос. Как я писал выше мы не обучаем классификатор ни на одном изображении. Это обучение без обучения (zero-shot learning), но мы можем использовать и few-shot learning. image CLIP в режиме few-shot linear probes будет лучше обучения без обучения, если для каждого класса у нас будет хоть по 8-16 изображений.

— На сколько ожидаемо модель будет классифицировать картинки, объекты на которой никогда не встречались в изначальном датасете самой модели, например, классификация портретов людей?

— Все зависит от того, как описать изображения на естественном языке. Если достаточно полно по признакам, то есть все шансы, что будет работать хорошо.
Спасибо за статью.
Почему StyleFlow — 2021? Ему уже полгода.
На самом деле очень хороший вопрос. А давайте попробуем!
Очевидно, что модель не будет понимать имена вещей и животных, которых никогда не было в датасете.

image

А вот если описать, например: «Большое инопланетное животное, похожее на тигра и крысу с двумя хвостами».
Я постараюсь набрать примеров и посмотреть, как CLIP справится с задачей.

Если же
животное, но не похоже ни на одно земное
, то мы все равно можем описать его словами. Например:

image
«Инопланетное животное, похожее параллелепипед с ножками»
Рад, что туториал пригодился!
Выглядит, действительно интересно.

Спасибо Вам за примеры.

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

Не уверен, что это хорошая идея. Так как Text Transformer принимает токены именно как последовательность.
Добрый вечер!

Context length: 77 — максимальная длина предложения (например для описания класса), которую может принимать Text Transformer гибридной сети CLIP.

Первый и последний токены в предложении заняты под SOS and EOS (represent the start and end of a sequence):
sot_token = tokenizer.encoder['<|startoftext|>']
eot_token = tokenizer.encoder['<|endoftext|>']

Остается 75 токенов на описание предложения. Что для большинства задач будет достаточно, учитывая то, что CLIP не всемогущая модель.

Длина массива из токенов зависит, конечно, как и от частотности (популярности) используемых в тексовом описании слов, так и от размера словаря токенизатора.

Рассмотрим пример

Изображение:

image

Описание на английском:
The focal point of the scene is the Tree Man, whose cavernous torso is supported by what could be contorted arms or rotting tree trunks. His head supports a disk populated by demons and victims parading around a huge set of bagpipes — often used as a dual sexual symbol reminiscent of human scrotum and penis.

После токенизации, превращается в массив длиной 77. Размер словаря токенизатора Vocab size: 49408. Токены SOS = 49406, EOS = 49407, PAD = 0 . Остальные токены представляют слова.

Описание в виде индекса словаря token — embedding:
[49406, 518, 30934, 2301, 539, 518, 3562, 533, 518, 2677,
786, 267, 6933, 772, 2214, 879, 937, 706, 533, 8038,
638, 768, 1510, 655, 616, 937, 775, 5706, 541, 532,
1188, 2677, 38531, 269, 787, 1375, 8336, 320, 17970, 38420,
638, 18388, 537, 7131, 699, 15000, 1630, 320, 2699, 1167,
539, 3408, 16991, 2005, 4864, 2026, 601, 320, 5347, 6749,
13085, 41704, 539, 2751, 30768, 8843, 537, 1501, 533, 49407,
0, 0, 0, 0, 0, 0, 0]


Даже семь токенов остались неиспользованными.
Добрый день! Спасибо за интерес к теме!
Этот подход ресерчеры из OpenAI и ml-комьюнити называют термином zero-shot learning.
Просто взяли два предобученных энкодера, да и все.

Все верно. Действительно, «да и все». В этом и есть движение от few-shot к zero-shot learning. Параметры модели не изменяются. Мы лишь получаем векторы для классификационной головы, используя текстовый энкодер. Этот процесс OpenAI и называет zero-shot learning.
Я понял вашу мысль, а давайте попробуем. Загрузим эти фотки, где «спуск на воду патрульного катера», и фотки с открытия какой-то стройки или открытия парка. Подберем правильные формулировки. И посмотрим. Код доступен. Будет интересно!
Добрый день! Не за что! Да, все верно!
1. CLIP, предобученный на 400М пар изображение-текст, доступен. Можно использовать в режиме обучения без обучения (например ViT-B/32 CLIP).
2. Можно взять предобученный CLIP и режиме few-shot linear probes обучить голову на своей базе размеченных фото.

Могу сделать туториал с кодом, где покажу как можно получить свой классификатор на CLIP в режиме обучения без обучения.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность