Разработка XR с Oracle, эп. 6 AI суммаризатор + генератор

XR разработка с Oracle, эп. 6 AI суммаризатор + генератор

В этой шестой статье серии мы описываем и предоставляем полный исходный код для приложения дополненной реальности, которое принимает любой визуальный и аудиовход от окружающей среды пользователя, обрабатывает его с помощью различной ИИ и возвращает вывод в виде сводок, результатов генеративной ИИ и т. д.

Это шестая часть серии о разработке приложений и опыта XR с использованием Oracle и сосредоточена на визуальном и аудиовходе от окружающей среды пользователя, обработке его с помощью различной ИИ и возвращении вывода в виде сводок, результатов генеративной ИИ и т. д. Ниже вы найдете ссылки на первые пять статей:

  • Разработка XR с Oracle, эпизод 1: пространственная среда, ИИ/МО, Kubernetes и OpenTelemetry
  • Разработка XR с Oracle, эпизод 2: графы свойств и визуализация данных
  • Разработка XR с Oracle, эпизод 3: компьютерное зрение, ИИ и МО
  • Разработка XR с Oracle, эпизод 4: цифровые двойники и наблюдаемость
  • Разработка XR с Oracle, эпизод 5: здравоохранение, компьютерное зрение, обучение/сотрудничество и обмен сообщениями

Как и в предыдущих записях, я буду показывать приложения, разработанные с использованием базы данных Oracle и облачных технологий с использованием Magic Leap 2, HoloLens 2, Oculus, iPhone и Android, а также ПК, написанные с использованием платформы Unity и OpenXR (для поддержки нескольких платформ), Apple Swift и WebXR.

На протяжении блога я буду ссылаться на соответствующее демонстрационное видео ниже:

Расширенная реальность (XR) и ИИ в повседневной жизни с контекстным и ситуационным пониманием

Я ссылаться на первую статью в этой серии (ссылка выше) для обзора XR. Эта статья сосредоточена на использовании смешанной реальности/дополненной реальности и искусственного интеллекта, хотя есть немало примеров использования ИИ в виртуальной реальности, и мы исследуем их в будущих блогах серии. Комбинация, используемая для разработки этих приложений, является мощной и идеальной. Unity, Cohere и другие службы ИИ Oracle, а также база данных Oracle – вот основа решения.

Идеальное решение XR AI Fullstack: Unity, Kubernetes, Oracle AI и Cohere и база данных Oracle

Архитектура приложения состоит из полного стека, в котором Unity создает фронтенд, Java Spring Boot и другие микросервисы, работающие в Kubernetes (которые могут содержать вычисления NVidia), образуют бэкэнд и вызывают различные службы ИИ и базу данных Oracle, где хранится различная информация, включая векторные, пространственные и т. д. данные.

Примеры

Вот несколько из множества примеров. Каждый из них вызывается голосовой командой через систему распознавания речи гарнитуры XR.

“Объясни это…”

В ответ на эту команду клиентское приложение Unity берет фотографию с точки зрения носителя гарнитуры и отправляет ее на серверную сторону, где запущено приложение Spring Boot в Kubernetes (хотя Kubernetes не является обязательным, так же как и Spring Boot, и это можно сделать с помощью Python, JavaScript, .NET и других языков, включая языки, работающие непосредственно в базе данных). Серверное приложение вызывает службу Oracle Vision AI, которая обнаруживает и возвращает текст на фотографии. Текст может быть под любым углом и т. д., и служба правильно его интерпретирует. Затем серверное приложение берет этот текст и передает его в Cohere (или Hugging Face или OpenAI), чтобы получить объяснение здоровью в текстовом и речевом виде, простыми словами, и предложения по улучшению результатов/здоровья. Изображение, содержимое и сводка хранятся в базе данных, где можно провести дальнейший анализ, от простого расширенного текстового поиска до анализа изображений, искусственного интеллекта машинного обучения Oracle и т. д.

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

“Кратко об этом…”

Этот пример очень похож на пример “Объясни это” и просто демонстрирует гибкость такой функциональности команд. В этом случае содержимое кратко резюмируется, снова в тексте и речи, в x (например, 3) предложениях или менее.

Этот пример показывает, как огромные объемы информации могут быть быстро усвоены.

«Выбрать все из сводок…»

В ответ на эту команду клиентское приложение Unity вызывает серверную часть для запроса базы данных Oracle и получения различной информации, такой как изображения и тексты предыдущих записанных команд.

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

“Транскрипция [YouTube видео]…”

В отличие от “Транскрипции аудио”, которая берет или записывает аудиофрагмент для транскрипции, в ответ на эту команду приложение проверяет, есть ли URL YouTube в поле зрения пользователя, и если есть, то использует API для получения транскрипции видео. Она также может быть “транскрибирована и суммирована”, как описано ранее.

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

“Создать изображение [Из …] Остановить создание изображения”

В ответ на эту команду приложение Unity начинает записывать речь пользователя и прекращает запись, когда пользователь говорит “Остановить создание изображения”. Речь отправляется на серверную часть приложения, которая затем транскрибирует ее, удаляет “стоп генерация изображения” из конца транскрипции и отправляет текстовое описание в Stable Diffusion (или DALL-E и т. д.), которая создает изображение и передает его (или его URL-адрес) обратно в приложение и на гарнитуру, которая отображает изображение перед пользователем.

Это, конечно, очень простой пример, и эта функциональность больше не ограничивается только 2D, но также 3D изображениями, звуками и т. д. Она демонстрирует возможность динамического создания и добавления визуального контекста для быстрого создания сюжетных досок, сотрудничества и тренировок, AEC (архитектура, инженерия и строительство) и т. д., и, конечно, для игр. Это также может использоваться с USD (Universal Scene Description) и такими технологиями, как платформа NVidia Omniverse для очень убедительных совместных впечатлений.

“Расскажите дистопическую историю об этом и дайте настроение…”

В ответ на эту команду снова клиентское приложение Unity делает снимок с точки зрения пользователя, надевшего гарнитуру, и отправляет его на серверную часть, которая в этот раз использует Oracle Vision AI для определения всех объектов в поле зрения пользователя. Затем она отправляет эти объекты в Cohere (или другой ИИ) и просит сгенерировать историю определенного стиля на основе содержимого. Затем эта история дополнительно анализируется с помощью сервиса AI Sentiment Analysis от Oracle, и история и анализ настроений отправляются пользователю для просмотра в текстовом и речевом форматах.

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

В третьей статье этой серии (ссылка на которую приведена в начале этой статьи) были приведены еще два примера.

“Идентифицировать объекты…”

В ответ на эту команду снова клиентское приложение Unity делает снимок с точки зрения пользователя, надевшего гарнитуру, и отправляет его на серверную часть, которая в этот раз использует Oracle Vision AI/Object Detection для обнаружения объектов и их относительных координат. Эти данные отправляются обратно в клиентское приложение Unity, которое проецирует лучи через эти координаты для рисования ограничивающих рамок с метками идентификации в пространственном расположении объектов в комнате и также произносит имена объектов из пространственных координат, где они находятся.

Что касается примеров использования в этой и других упомянутых командах/функциональности, нетрудно представить потенциал помощи при нарушении зрения, болезни Альцгеймера, идентификации неизвестных и трудно изолированных предметов, анализе угроз, интересов и т. д., путем получения контекстной аудио- и визуальной обратной связи о окружающей среде с помощью устройства XR.

“Начать разговор…”

В ответ на эту команду снова клиентское приложение Unity делает снимок с точки зрения пользователя, надевшего гарнитуру, и отправляет его на серверную часть, которая в этот раз использует Oracle Vision AI/Document AI для извлечения найденного текста (различные названия книг), выбирает случайное название и отправляет текст нескольким моделям разговора (на тот момент последний был GPT-3), которые затем предоставляют различные ответы для беседы. Эти ответы или любая информация из различных моделей предоставляются пользователю.

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

Исходный код, OpenXR и другие детали разработки

Я опишу ключевые фрагменты программ и компонентов, участвующих в этом приложении, в этом блоге. Полный исходный код как для Unity фронтенда, так и для Java бэкэнда можно найти на GitHub. Этот репозиторий будет продолжать расти с примерами другой функциональности, разных языков, фреймворков и т.д. Здесь также будет находиться код для предстоящего семинара “Разработка XR с Oracle”. Для этих конкретных примеров потребуется базовое понимание Unity и Java, а также особенности используемого вами гарнитура XR.

Это приложение было протестировано на Hololens 2 (показано на фотографиях и видео в этом блоге) и Magic Leap 2. Unity-приложение написано с использованием MRTK 3 (набора инструментов для смешанной реальности), который соответствует стандарту OpenXR. Magic Leap недавно присоединился к комитету по управлению MRTK, который был создан Microsoft и включает Qualcomm в число членов. Широкое распространение OpenXR делает приложения, написанные на его основе, более переносимыми. Однако Apple не является его членом, и, подобно другим технологиям, где программное обеспечение и различное оборудование должны работать вместе, даже при использовании этого стандарта, код должен иметь адаптеры для определенной нативной функциональности, особенно в области XR, где подходы и функции могут сильно отличаться между продуктами.

Например, описанные приложения на самом деле довольно просты (где у 1/ввода обычно есть специфичная настройка для устройства, в то время как 2, 3 и, в значительной степени, 4, в целом переносимы):

  1. Ввод (изображение, видео, аудио и т.д.) берется с устройства XR.
  2. Ввод отправляется на сервер (для обработки ИИ, базы данных и т.д.).
  3. Ответ получается с серверной стороны.
  4. Содержимое ответа выдается в качестве вывода (текст, изображение, видео, звук и т.д.).

Давайте рассмотрим “нет кода” и код, связанный с указанным выше списком.

Мы добавляем объект MRTK в нашу сцену Unity. Этот объект содержит профили с настройками для настроек опыта, камеры, ввода, границы, телепорта, пространственного восприятия и т.д. В разделе “Ввод” есть различные настройки для контроллеров, жестов и т.д., включая речь. Здесь мы просто указываем ключевые слова, такие как “Объясни это”, “Сгенерируй изображение” и т.д.

Затем мы добавляем компонент Microsoft.MixedReality.Toolkit.Input.SpeechInputHandler в сцену, который отображает наши определенные ключевые слова на действия. Например, здесь мы видим, что метод ExplainThis объекта с сценарием/классом TakePicAndProcessAI будет вызван, когда пользователь скажет “Объясни это”.

При более детальном изучении исходного кода на C# TakePicAndProcessAI мы видим следующее для ExplainThis (аналогично другим командам, связанным с общим процессом отправки изображения для обработки ИИ):

TakePicAndProcess() содержит логику и настройки для снятия фотографии и (временного) сохранения ее локально, а также обратный вызов OnCapturedPhotoToDisk.

OnCapturedPhotoToDisk в свою очередь загружает изображение в текстуру для отображения перед пользователем и вызывает подпрограмму ProcessAI. Эта подпрограмма ProcessAI имеет код, который является динамическим на основе предоставленных параметров, но в целом ее целью является выполнение сетевых вызовов на стороне сервера и маршалинг данных к нему и от него. Она также отображает полученное содержимое ИИ в текстовом поле (или в виде 2D или 3D объекта, в зависимости от случая), чтобы пользователь мог видеть его, выполняет преобразование текста в речь для прослушивания пользователем и т.д.

На стороне сервера у нас есть простая логика для обработки изображения, отправленного из Unity-приложения, с использованием Vision AI и извлечения найденного текста:

И следующая логика для обработки извлеченного из Vision AI текста для получения краткого изложения с использованием Cohere (или Hugging Face или OpenAI):

А также следующая логика для обработки хранения, извлечения и другой логики базы данных Oracle.

Опять же, эта логика на стороне сервера может быть на любом языке, так как все службы OCI, службы Cohere и база данных Oracle их поддерживают.

Дополнительные мысли

Я представил некоторые идеи и примеры того, как ИИ и XR могут использоваться вместе с помощью Oracle. Я с нетерпением жду выпуска еще больше блогов на эту тему и другие области XR с использованием Oracle Cloud и Database, включая использование новых передовых функций в пространственном компоненте Oracle Database для геометрического хранения (сетка .OBJ, облако точек и т. д.), анализа и обработки, которые работают с Unity в реальном времени, а также возможность запуска серверных языков внутри самой базы данных Oracle. “Разработка XR с Oracle” также будет выпущена в ближайшем будущем.

Пожалуйста, ознакомьтесь с моими другими публикациями для получения дополнительной информации о XR, Oracle Cloud и Database, а также различных темах современной разработки приложений, включая микросервисы, наблюдаемость, обработку транзакций и т. д. Наконец, пожалуйста, не стесняйтесь обращаться ко мне с вопросами или предложениями о новых блогах и видео, так как я всегда открыт для предложений. Спасибо за чтение и просмотр.