Visual Question Answering (VQA)
Визуальные вопросы и ответы (VQA) — это задача отвечать на вопросы на естественном языке об изображении. Как работают модели VQA, основные бенчмарки и метрики.
Визуальные вопросы и ответы (VQA) — это задача ответов на вопросы на естественном языке об изображении, например «Какого цвета автобус?», «Сколько человек ждут?» или «Включена ли плита?». Система получает изображение вместе с вопросом и выдаёт короткий ответ. Для этого ей нужно понять вопрос, найти нужные части изображения и объединить информацию, поэтому VQA служит стандартной проверкой мультимодального ИИ. Стэнслав Антол и его коллеги из Virginia Tech и Microsoft Research представили эту задачу и первый крупный набор данных для её оценки — набор данных VQA — на ICCV 2015: около 250 000 изображений, преимущественно из COCO, 760 000 вопросов с ответами в свободной форме и 10 ответов людей на каждый вопрос — всего около 10 миллионов ответов.
Как работают модели VQA#
Модель VQA кодирует изображение с помощью свёрточной нейронной сети (CNN) или vision-трансформера (ViT), кодирует вопрос языковой моделью, а затем объединяет представления. Ранние модели объединяли глобальные признаки изображения с вектором вопроса от LSTM и рассматривали ответ как классификацию по нескольким тысячам самых распространённых ответов. Затем появился механизм внимания, который позволил вопросу определять, куда смотреть: модель снизу вверх и сверху вниз Питера Андерсона и его коллег, победившая в конкурсе VQA Challenge 2017 года, обращала внимание на области, предложенные моделью обнаружения объектов. Благодаря этому на вопрос «Какого цвета автобус?» она могла сосредоточиться на рамке автобуса. Современные визуально-языковые модели (VLM) генерируют произвольные ответы с помощью языковой модели после визуальной настройки на выполнение инструкций на данных «изображение — вопрос — ответ».
Бенчмарки и проблема языкового априорного знания#
Ранние модели VQA показывали хорошие результаты отчасти потому, что игнорировали изображение. На многие вопросы можно ответить, ориентируясь только на формулировку: на вопрос, начинающийся с «Есть ли…», обычно отвечают «да», а на «Какой вид спорта…» часто отвечают «теннис». Набор данных VQA v2, представленный Яшем Гоялом и его коллегами на CVPR 2017, учитывал это языковое смещение: каждому вопросу сопоставили два похожих изображения с разными ответами, поэтому для высокого результата модели нужно анализировать изображение. Более поздние наборы данных проверяют отдельные навыки:
- VizWiz: более 31 000 вопросов, заданных незрячими людьми о фотографиях, сделанных на телефоны; многие снимки размыты или плохо кадрированы.
- TextVQA: вопросы, для ответа на которые нужно прочитать текст в сцене, например номер на форме или название на вывеске магазина.
- GQA: составные вопросы, сгенерированные на основе графов сцен, например «Стакан слева от тарелки сделан из стекла?».
- OK-VQA: вопросы, для ответа на которые нужны внешние знания, например о том, из какой страны происходит блюдо.
- VQA-RAD: 3 515 вопросов о 315 радиологических снимках, составленных врачами в Национальной медицинской библиотеке США.
Люди по-разному формулируют правильные ответы, поэтому в бенчмарке VQA ответ оценивается по числу совпадений с ответами 10 разметчиков: три или более совпадений считаются полностью правильным ответом, а итог усредняется по всем подмножествам из девяти разметчиков:
# Ten crowd answers to "What color is the bus?", as collected for every VQA question
human_answers = ["red"] * 7 + ["red and white"] * 2 + ["orange"]
def vqa_accuracy(prediction, answers):
"""Average min(matches / 3, 1) over the ten leave-one-out subsets of nine answers."""
scores = []
for i in range(len(answers)):
others = answers[:i] + answers[i + 1 :]
scores.append(min(others.count(prediction) / 3, 1))
return sum(scores) / len(scores)
for prediction in ["red", "red and white", "orange", "blue"]:
print(f"{prediction}: {vqa_accuracy(prediction, human_answers):.2f}")Для «red» выводится 1,00, для «red and white» — 0,60, для «orange» — 0,30, а для «blue» — 0,00: ответ, который дал только один разметчик, все равно получает частичный балл, а ответ, который не дал никто, не получает баллов. Результаты сообщаются отдельно для ответов «да/нет», числовых и прочих типов. Числовые вопросы неизменно получают самые низкие оценки, поскольку для подсчета нужно найти каждый экземпляр ровно один раз. Детекторы прямо отвечают на вопросы о количестве: YOLO26 возвращает бокс для каждого объекта, поэтому количество боксов «person» в результате предсказания отвечает на вопрос «Сколько людей на картинке?» для любого из 80 классов COCO. Для классов за пределами этого списка боксы могут возвращать и визуально-языковые модели, а таблица лидеров VLM измеряет точность обнаружения объектов такими моделями в реальных наборах данных.
VQA и смежные задачи#
Описание изображений характеризует всё изображение без запроса, а VQA отвечает на один конкретный вопрос. Визуальная локализация возвращает местоположение объекта, названного во фразе, часто в виде ограничивающей рамки, а VQA отвечает на вопрос об этом объекте. Оптическое распознавание символов (OCR) извлекает текст, о котором задают вопросы в задачах типа TextVQA, а визуальное рассуждение — это многоэтапный вывод, необходимый для составных вопросов, например из GQA. Текстовые системы ответов на вопросы работают с фрагментом текста, а не с пикселями.
Применение#
Самое очевидное применение — вспомогательные технологии. В 2023 году Be My Eyes добавила Be My AI на основе GPT-4 от OpenAI, чтобы незрячие пользователи и люди с нарушениями зрения могли фотографировать этикетку, экран или улицу и задавать вопросы об изображении. Специалисты в розничной торговле и производстве задают VLM вопросы по фотографиям полок или контрольным снимкам вместо обучения отдельного классификатора для каждого вопроса. В здравоохранении исследования медицинского VQA посвящены вопросам вроде «Есть ли перелом?» по рентгеновским снимкам и КТ — это форма анализа медицинских изображений, которую оценивает VQA-RAD с помощью вопросов, составленных врачами при изучении изображений.










