KOSMOS-2 Многомодальная большая языковая модель от Microsoft

KOSMOS-2 Microsoft's Multimodal Large Language Model

Введение

2023 год был годом искусственного интеллекта, от языковых моделей до стабильных моделей диффузии. Один из новых игроков, занявших центр сцены, – KOSMOS-2 от Microsoft. Это мультимодельная модель обработки больших объемов языка (MLLM), которая вызывает восхищение с прорывными возможностями в понимании текста и изображений. Разработка языковой модели – это одно, а создание модели для зрения – другое, а иметь модель с обеими технологиями – это уже совсем другой уровень Искусственного интеллекта. В этой статье мы рассмотрим особенности и потенциальные применения KOSMOS-2 и его влияние на искусственный интеллект и машинное обучение.

Цели обучения

  • Понимание мультимодельной модели обработки больших объемов языка KOSMOS-2.
  • Узнать, как KOSMOS-2 выполняет мультимодальное укоренение и генерацию ссылочных выражений.
  • Получить представление о практическом применении KOSMOS-2.
  • Выполнение вывода с KOSMOS в Colab

Эта статья была опубликована в рамках Блогонаучного по науке о данных

Понимание модели KOSMOS-2

KOSMOS-2 – это результат работы команды исследователей в Microsoft, опубликованной в их статье “Kosmos-2: Grounding Multimodal Large Language Models to the World”. Разработанный для обработки текста и изображений одновременно и переопределения способа взаимодействия с мультимодальными данными, KOSMOS-2 основана на архитектуре трансформационной языковой модели, подобной другим известным моделям, таким как LLaMa-2 и 7b модель Mistral AI.

Однако то, что отличает KOSMOS-2, – его уникальный процесс обучения. Он обучается на обширном наборе данных grounded image-text, известном как GRIT, где текст содержит ссылки на объекты на изображениях в форме ограничивающих рамок в виде специальных токенов. Этот инновационный подход позволяет KOSMOS-2 предоставлять новое понимание текста и изображений.

Что такое мультимодальное укоренение?

Одной из важных особенностей KOSMOS-2 является его способность выполнять “мультимодальное укоренение”. Это означает, что он может генерировать подписи к изображениям, описывающие объекты и их местоположение внутри изображения. Это существенно улучшает точность и надежность модели, снижая “галлюцинации”, частую проблему языковых моделей.

Эта концепция связывает текст с объектами на изображениях с помощью уникальных токенов, эффективно “укореняя” объекты в визуальном контексте. Это позволяет снизить галлюцинации и повысить способность модели генерировать точные подписи к изображениям.

Генерация ссылочных выражений

KOSMOS-2 также отличается в области “генерации ссылочных выражений”. Эта функция позволяет пользователям просить модель описать конкретную ограничивающую рамку на изображении и задать вопрос. Модель может затем отвечать на вопросы о конкретных местоположениях на изображении, предоставляя мощный инструмент для понимания и интерпретации визуального контента.

Этот впечатляющий случай использования “генерации ссылочных выражений” позволяет пользователям использовать запросы и открывает новые возможности для естественного языкового взаимодействия с визуальным контентом.

Демонстрация кода с KOSMOS-2

Мы рассмотрим, как выполнить вывод в Colab с использованием режима KOSMOS-2. Полный код можно найти здесь: https://github.com/inuwamobarak/KOSMOS-2

Шаг 1: Настройка окружения

На этом шаге мы устанавливаем необходимые зависимости, такие как 🤗 Transformers, Accelerate и Bitsandbytes. Эти библиотеки необходимы для эффективного выполнения вывода с использованием KOSMOS-2.

!pip install -q git+https://github.com/huggingface/transformers.git accelerate bitsandbytes

Шаг 2: Загрузка модели KOSMOS-2

Далее мы загружаем модель KOSMOS-2 и ее процессор.

from transformers import AutoProcessor, AutoModelForVision2Seqprocessor = AutoProcessor.from_pretrained("microsoft/kosmos-2-patch14-224")model = AutoModelForVision2Seq.from_pretrained("microsoft/kosmos-2-patch14-224", load_in_4bit=True, device_map={"": 0})

Шаг 3: Загрузка изображения и подсказки

На этом шаге мы выполняем связывание изображения. Мы загружаем изображение и предоставляем подсказку для завершения модели. Мы используем уникальный токен , который важен для ссылки на объекты на изображении.

import requestsfrom PIL import Imageprompt = "<grounding>Изображение"url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.png"image = Image.open(requests.get(url, stream=True).raw)image

Шаг 4: Генерация завершения

Далее мы подготавливаем изображение и подсказку для модели с помощью процессора. Затем мы позволяем модели авторегрессивно сгенерировать завершение. Сгенерированное завершение содержит информацию об изображении и его содержимом.

inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda:0")# Авторегрессивно генерируем завершениеgenerated_ids = model.generate(**inputs, max_new_tokens=128)# Преобразуем сгенерированные идентификаторы токенов обратно в строкиgenerated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

Шаг 5: Пост-обработка

Мы рассматриваем сырой сгенерированный текст, который может содержать некоторые токены, относящиеся к областям изображения. Этот этап пост-обработки позволяет получить значимые результаты.

print(generated_text)

<image>. the, to and of as in I that' for is was- on’ it with The as at bet he have from by are " you his “ this said not has an ( but had we her they will my or were their): up about out who one all been she can more would It</image><grounding> Изображение<phrase> снеговика</phrase><object><patch_index_0044><patch_index_0863></object> согревающегося<phrase> у костра</phrase><object><patch_index_0006><patch_index_0879></object>

Шаг 6: Дополнительная обработка

На этом шаге сосредотачиваемся на сгенерированном тексте, исключая начальные токены, связанные с изображением. Мы извлекаем детали, включая названия объектов, фразы и местоположение. Эта извлеченная информация более содержательна и позволяет лучше понять ответ модели.

# По умолчанию сгенерированный текст очищается и извлекаются сущности.processed_text, entities = processor.post_process_generation(generated_text)print(processed_text)print(entities)

Изображение снеговика согревающегося у костраДетали: [('снеговик', (12, 21), [(0.390625, 0.046875, 0.984375, 0.828125)]), ('костер', (36, 42), [(0.203125, 0.015625, 0.484375, 0.859375)])]

end_of_image_token = processor.eoi_tokencaption = generated_text.split(end_of_image_token)[-1]print(caption)

<grounding> Изображение<phrase> снеговика</phrase><object><patch_index_0044><patch_index_0863></object> согревающегося<phrase> у костра</phrase><object><patch_index_0006><patch_index_0879></object>

Шаг 7: Отображение границ

Мы покажем, как визуализировать ограничивающие рамки объектов, определенных на изображении. Этот шаг позволяет нам понять, где модель нашла конкретные объекты. Мы используем полученную информацию для аннотации изображения.

from PIL import ImageDrawwidth, height = image.sizedraw = ImageDraw.Draw(image)for entity, _, box in entities:    box = [round(i, 2) for i in box[0]]    x1, y1, x2, y2 = tuple(box)    x1, x2 = x1 * width, x2 * width    y1, y2 = y1 * height, y2 * height    draw.rectangle(xy=((x1, y1), (x2, y2)), outline="red")    draw.text(xy=(x1, y1), text=entity)image

Шаг 8: Землеройные ответы на вопросы

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

url = "https://huggingface.co/ydshieh/kosmos-2-patch14-224/resolve/main/pikachu.png"image = Image.open(requests.get(url, stream=True).raw)image

Мы можем подготовить вопрос и ограничивающую рамку для Пикачу. Использование специальных токенов <phrase> указывает на наличие фразы в вопросе. Этот шаг демонстрирует, как получить конкретную информацию из изображения с использованием землеройных ответов на вопросы.

prompt = "<grounding> Вопрос: Что это за персонаж? Ответ:"inputs = processor(text=prompt, images=image, bboxes=[(0.04182509505703422, 0.39244186046511625, 0.38783269961977185, 1.0)], return_tensors="pt").to("cuda:0")

Шаг 9: Генерация землеройного ответа

Мы позволяем модели авторегрессионно завершить вопрос, генерируя ответ на основе предоставленного контекста.

generated_ids = model.generate(**inputs, max_new_tokens=128)generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]# По умолчанию сгенерированный текст очищается, и из него извлекаются сущности.processed_text, entities = processor.post_process_generation(generated_text)print(processed_text)print(entities)

Вопрос: Что это за персонаж? Ответ: Пикачу в аниме.[('this character', (18, 32), [(0.046875, 0.390625, 0.390625, 0.984375)])]

Применения KOSMOS-2

Возможности KOSMOS-2 простираются далеко за пределы лаборатории и находят применение в реальных приложениях. Некоторые из сфер, где он может иметь влияние, включают:

  1. Робототехника: Представьте, что вы можете сказать роботу разбудить вас, если небо выглядит затянутым облаками. Он должен способен видеть небо в контексте. Способность роботов видеть контекстуально является ценной особенностью. KOSMOS-2 может быть интегрирован в роботов для понимания их окружения, следования инструкциям и извлечения опыта, наблюдая и понимая окружающую среду и взаимодействуя с миром через текст и изображения.
  2. Интеллект документов: Помимо внешней среды, KOSMOS-2 может использоваться для анализа и понимания сложных документов, содержащих текст, изображения и таблицы, что делает извлечение и обработку соответствующей информации более доступными.
  3. Мультимодальный диалог: Два распространенных применения ИИ – язык и видение. С KOSMOS-2 мы можем использовать чат-боты и виртуальных помощников для совместной работы, позволяя им понимать и отвечать на запросы пользователей, включающие текст и изображения.
  4. Описание изображений и визуальные ответы на вопросы: Это включает автоматическое генерирование подписей к изображениям и ответы на вопросы на основе визуальной информации, что имеет применение в таких отраслях, как реклама, журналистика и образование. Это включает генерацию специализированных или тонконастроенных версий, овладевающих конкретными сценариями использования.

Практические реальные применения

Мы видели, что возможности KOSMOS-2 выходят за рамки традиционного искусственного интеллекта и языковых моделей. Давайте рассмотрим конкретные приложения:

  • Автоматическое управление автомобилем: Он может улучшить системы автоматического управления автомобилем, обнаруживая и понимая относительное положение объектов в автомобиле, таких как указатель поворота и колеса, что позволяет принимать более интеллектуальные решения в сложных ситуациях вождения. Он может определить пешеходов и распознать их намерения на шоссе на основе их положения тела.
  • Безопасность и защита: При создании полицейских роботов безопасности архитектура KOSMOS-2 может быть обучена определять, когда люди находятся в состоянии ‘застывшем’ или нет.
  • Исследование рынка: Кроме того, он может стать настоящей революцией в исследовании рынка, где огромные объемы отзывов, изображений и обзоров пользователей могут быть анализированы вместе. KOSMOS-2 предлагает новые способы выявления ценных инсайтов в масштабе, квантифицируя качественные данные и сочетая их с статистическим анализом.

Будущее мультимодального искусственного интеллекта

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

Это одна из наиболее близких моделей, которые движутся к искусственному общему интеллекту (AGI), который в настоящее время является только гипотетическим типом интеллектуального агента. Если он будет реализован, AGI сможет выполнять задачи, которые могут выполнять люди.

Заключение

KOSMOS-2 от Microsoft – это подтверждение потенциала искусственного интеллекта в объединении текста и изображений для создания новых возможностей и применений. В различных сферах применения мы можем ожидать инноваций, основанных на искусственном интеллекте, которые ранее считались недостижимыми технологией. Будущее становится ближе, и модели, подобные KOSMOS-2, формируют его. Модели, подобные KOSMOS-2, делают шаг вперед для искусственного интеллекта и машинного обучения. Они сокращают разрыв между текстом и изображениями, потенциально революционизируя отрасли и открывая двери для инновационных приложений. По мере продолжения исследования возможностей мультимодальных языковых моделей, мы можем ожидать захватывающих прогрессов в области искусственного интеллекта, что откроет путь к реализации передового машинного интеллекта, такого как AGI.

Ключевые выводы

  • KOSMOS-2 является новаторской мультимодальной крупной языковой моделью, которая может понимать текст и изображения с помощью уникального процесса обучения, включающего ограничивающие рамки ссылок в тексте.
  • KOSMOS-2 отличается в мультимодальном обосновании и способен генерировать текстовые описания изображений, указывая местоположение объектов, что позволяет снизить искажения и повысить точность модели.
  • Модель может отвечать на вопросы о конкретных местах на изображении с использованием ограничивающих рамок, открывая новые возможности для естественного языкового взаимодействия с визуальным контентом.

Часто задаваемые вопросы

Ссылки

  • https://github.com/inuwamobarak/KOSMOS-2
  • https://github.com/NielsRogge/Transformers-Tutorials/tree/master/KOSMOS-2
  • https://arxiv.org/pdf/2306.14824.pdf
  • https://huggingface.co/docs/transformers/main/en/model_doc/kosmos-2
  • https://huggingface.co/datasets/zzliang/GRIT
  • Peng, Z., Wang, W., Dong, L., Hao, Y., Huang, S., Ma, S., & Wei, F. (2023). Kosmos-2: Grounding Multimodal Large Language Models to the World. ArXiv. /abs/2306.14824

Упомянутое в статье медиа не принадлежит Analytics Vidhya и используется по усмотрению автора.