Наверняка многие видели картинки-тесты, которые предлагают по тому, что первым бросилось в глаза определить характер, какое полушарие доминирует или что-то еще. Обычно на этих изображениях находится несколько объектов или один объект меняется в зависимости от “угла” обзора. А что будет, если попросить трансформер описать эти картинки? Что “увидит” он и на что он “обратит внимание”?
Для мини-исследования была выбрана модель 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) и тут вопрос в том, к чему мы стремимся. Должны ли мы требовать от ИИ человеческого восприятия, или достаточно того, что он просто даёт ответ?
Автор: Ir1na


