Содержание статьи
Наверняка многие видели картинки-тесты, которые предлагают по тому, что первым бросилось в глаза определить характер, какое полушарие доминирует или что-то еще. Обычно на этих изображениях находится несколько объектов или один объект меняется в зависимости от «угла» обзора. А что будет, если попросить трансформер описать эти картинки? Что «увидит» он и на что он «обратит внимание»?
Для мини-исследования была выбрана модель BLIP (Bootstrapping Language-Image Pre-training) от Salesforce (см. гитхаб с полным кодом). Как трансформер, эта нейросеть разрезает картинку на фрагменты (патчи) и преобразует их в токены:
Для анализа картинки (контекст, связь объекта с фоном) применяется идея «Self-Attention», которая на выходе дает некоторую матрицу скрытых признаков. Далее за работу берется трансформер-энкодер, поочередно предсказывающий слова. С помощью другой концепции «Cross-Attention» модель «смотрит» на картинку посредством матрицы признаков, получает первое слово и повторно заглядывает в матрицу. Эта последовательность заканчивается на моменте выдачи токена конца предложения. Более подробно можно посмотреть здесь https://arxiv.org/pdf/2201.12086.
Выбор данной предобученной модели был обусловлен оптимальным соотношением между эффективностью и компактностью (запускается на любом ноутбуке без жестких ограничений на процессор или видеокарту). Перейдем к тестированию (картинки взяты из статьи и открытых источников).
Губы, деревья или корни?
Начнем с простой картинки, где явно изображены деревья и корни, а вариант губы появляется, очевидно, ввиду формы.

И тут модель вполне оправдано выдала: «a tree with roots on it» (дерево с корнями). Перейдем к следующему примеру.
Крокодил или лодка?
Тоже весьма несложный пример, но тут у модели возникли расхождения с тем, что видит человек. Смотря на картинку ниже, она неожиданно выдает: «a blue and black silhouette of a man ’ s head» (сине-черный силуэт мужской головы).

Это один из примеров ИИ-иллюзии. Модель запуталась в патчах из-за особенностей обучения. Одна из возможных причин: в трейне было много неоновых, графических рисунков и модель, зацепившись, за линию ушла не туда; также была упущена форма челюсти крокодила, а пятна сверху и снизу рептилии указывают на попытку найти другие объекты на изображении.
Примечательно также и то, что при попытке целенаправленно обратить внимание модели, например, на кораблик, она его проигнорировала. И на выходе получилось что-то совсем забавное: «the cover of the book, the book of the dead» (обложка книги, «Книга мёртвых»). Вероятно, объясняется это тем, что в обучающем датасете было много обложек старых книг, а пятна на картинке трактовались как потрескавшийся рельеф на синем фоне.

Два профиля или ладья?
Очередной классический пример ниже.

Модель угадала здесь: «a silhouette of a man with a hat and a beard» (силуэт мужчины в шляпе и с бородой). В отличие от человека, который видит картинку целиком, трансформер выбрал и сфокусировался на левой стороне. Темно-фиолетовый цвет ладьи говорит о том, что модель распознала это как фон, а не самостоятельный объект.
Интересно, что при попытке приблизить картинку и, тем самым, «указать» модели на ладью, получился не менее занимательный результат: «a silhouette of a man with his arms up» (силуэт мужчины с поднятыми руками). И, если присмотреться, можно, действительно, увидеть что-то похожее на человека с руками вверх.

Поднимается или спускается?
Здесь речь пойдет об изображение кота в свое время вызвавшее обсуждение в интернете. Давайте спросим нейросеть, может она рассудит? Ее ответ: «a cat walking down some stairs» (кот, спускающийся по лестнице).

Вот, все логично: кот есть, стены с двух сторон распознаны да и лестница тоже. Но что будет, если обрезать часть картинки?

Снова: кот, стена справа и лестница. Но ответ теперь другой: «a cat walking up some stairs» (кот, поднимающийся по лестнице). Возникает резонный вопрос, может дело в стенах и освещении?

Ответ: может быть, теперь описание: «a cat walking down a flight of stairs» (кот, спускающийся по лестнице). Так в чем же дело? Строя свои догадки, модель опирается именно на стены. В обучающей выборке темные стены слева могли относится к подвалам, а светлые — к квартирам и домам. Поэтому наличие темной стены и светлого фона сзади трактуется как спуск (например, в тот же подвал, откуда свет поступает сверху), а светлой стены и светлого фона — как подъем, так как там, куда идет кот, могут быть окна.
Розовые или зелёные?
Другой когда-то популярный вопрос был о цвете кроссовок. Как на него ответила наша модель?

Нейросеть увидела: «a person holding a pair of pink and green shoes» (человек, держащий пару розово-зелёных ботинок) и не смогла присоединиться ни к какому из лагерей.
Выводы
В качестве заключения можно сказать, что нейросеть практически прошла наш тест картинками, а также, увидев что-то новое. Данный анализ показывает как, просто обрезав картинку, заставить нейросеть сомневаться и противоречить самой себе, выдавая разные ответы в описании картинок. Теоретически, путем увеличения объема обучающей выборки можно добиться улучшения результата (обрезать/ поворачивать одну и ту же картинку и спрашивать что на ней, штрафуя модель за неверные ответы), это сделает модель более предсказуемой. Но, по моему мнению, за этим кроется также и то, что в погоне за деталями модель не сможет приобрести абстрактное мышление (как в примере 1) и тут вопрос в том, к чему мы стремимся. Должны ли мы требовать от ИИ человеческого восприятия, или достаточно того, что он просто даёт ответ?
