Технологии дополненной реальности и искусственный интеллект: создание цифровых аватаров помощников с умением вести диалог
- Индивидуальные задания
- 3д-Дизайнер: Правильная последовательность (1)
- 3д-Дизайнер: Облако точек (2)
- ИИ-разработчик: Термины больших языковых моделей (3)
- ИИ-разработчик: Botpress. Основы(4)
- ИИ-разработчик: Botpress. База знаний (5)
- ИИ-разработчик: Botpress. API (6)
- ИИ-разработчик: Botpress. Workflow (7)
- AR-разработчик и веб-разработчик (задачи 8-17)
- Командная задача
- Постановка задачи: AR-бот для изучения анатомии
- Оценка 3д-моделей
- Оценка чат-бота и базы знаний
- Оценка интерфейса взаимодействия
- Оценка дополненной реальности
Индивидуальные задания
Все задачи были разбиты по четырем ролям:
Задания для AR-разработчика и Веб-разработчика в данном блоке были объединены
Ниже представлены видео разборы и текстовые пояснения к соответствующим задачам
3д-Дизайнер: Правильная последовательность (1)
Для решения задачи на соотнесение различных узлов материала
необходимо было добавить эти узлы к себе и в правильной последовательности выставить их для того, чтобы получить схожий с референсом результат.
Material Output и шейдер в условиях задачи не предусмотрены, так как они создаются автоматически.
3д-Дизайнер: Облако точек (2)
1. С помощью питона написать скрипт, который визуализирует точки в трехмерном пространстве.
def create_vertices(coords): mesh = bpy.data.meshes.new("NTO_Mesh") obj = bpy.data.objects.new("NTO_Object", mesh)
bpy.context.collection.objects.link(obj) bm = bmesh.new() for coord in coords: bm.verts.new(coord)
coordinates = тут список координат create_vertices(coordinates)
2. После этого открыть сохранить полученный результат в формате .ply
3. В программе MeshLab открыть данный файл, выбрать функцию Filter -> Normals, Curvatures and Orientation -> Compute normals for point set для создания ориентации вершин в пространстве. Это даст понять программе где находится внутренняя, а где внешняя часть создаваемого меша. Настройки можно оставить по умолчанию. После использования данной функции вершины с внешней стороны должны окраситься в более светлый оттенок, внутри в более темный
4. Выбрать Filter -> Remeshing, Simplification and Reconstruction -> Surface Reconstruction: Screened Poisson. Настройки можно оставить по умолчанию. Получившийся меш сохранить как один из экспортируемых форматов, предпочтительно .fbx или .obj
5. Полученный результат импортировать в приложенный файл формата .blend, использовать модификатор decimate или иным способом уменьшить количество полигонов, наложить подготовленный материал "основной"
6. Нажать Render -> Render Image и полученное изображение отправить на проверку
ИИ-разработчик: Термины больших языковых моделей (3)
- Токен - Минимальная единица текста, с которой работает языковая модель. Это может быть слово, часть слова или даже отдельный символ.
- Температура - Параметр модели, который контролирует степень случайности в её ответах. При низком значении модель более предсказуема, при высоком — более креативна.
- Галлюцинации - Явление, при котором языковая модель генерирует некорректные или несуществующие данные, хотя они выглядят правдоподобно.
- Дообучение - Процесс обновления нейросети на новых данных для улучшения её производительности или адаптации к новым задачам.
- Размер контекста - Ограничение на количество токенов (слов, символов), которые модель может учитывать при генерации ответа. Если текст превышает этот предел, часть данных теряется.
ИИ-разработчик: Botpress. Основы(4)
Верными определениями являлись:2,4,6,7
- Основной Workflow бота начинается с блока Start и заканчивается End
- Каждый блок представляет собой набор определенных карточек, каждая карточка может выполнять свою функцию. Например указывать боту текст, который он будет выводить при обращению к блоку.
- В качестве ответа от бота, можно получить не только текст, но например и изображение или геометку
- Для того, чтобы настроить взаимодействие бота с Базой знаний, или, например, примерить на него какую-либо роль, необходимо определить соответствующего агента
ИИ-разработчик: Botpress. База знаний (5)
Верными определениями являлись:1,4,6
- Полученный из базы знаний ответ хранится в переменной turn.KnowledgeAgent.answer.
- При обращении к базе знаний можно указать дополнительные инструкции, например, про желаемому формату ответа.
- Чтобы передать заданный пользователем вопрос в базу знаний, может понадобиться переменная event.preview.
ИИ-разработчик: Botpress. API (6)
Ответ: listen|fetch|GET|x-user-key|key
ИИ-разработчик: Botpress. Workflow (7)
Предполагаемый ответ: 1.аб, 2.вг, 3.д, 3*.e, 4.ж
Изначально в описание было пропущено условие разделение на узлы, поэтому данная задача оценивалась в ручном формате, и были учтены все работающие варианты
AR-разработчик и веб-разработчик (задачи 8-17)
Данные задания представлены в виде теста, ниже описаны ответы к ним.
8. С какими 3D-фреймворками JavaScript интегрируется AR.js и mindAR.js?
12. Какой формат 3д моделей предпочтителен (поддерживается по умолчанию) для WebAR?
13. Какие характеристики должны быть у маркера, чтобы обеспечить наивысшее качество отслеживания?
15. Ниже представлен шаблон для создания и регистрации пользовательского aframe компонента, где аргументы это {string} name - название компонента и {Object} definition - объект конфигурации компонента, который содержит методы жизненного цикла
AFRAME.registerComponent(‘component-name’, { schema: {}, init: function () {}, update: function () {}, tick: function () {}, remove: function () {}, pause: function () {}, play: function () {} });
- schema - Определяет и описывает свойство или свойства компонента
- init -Вызывается один раз в начале жизненного цикла компонента. Обработчик часто используется для: настройки начального состояния и переменных, привязки методов и присоединения слушателей событий.
- update - Вызывается всякий раз, когда изменяются свойства компонента, в том числе в начале жизненного цикла компонента. Этот обработчик часто использует this.data для изменения сущности. Также этот обработчик имеет доступ к предыдущему состоянию данных компонента через свой первый аргумент.
- tick - Вызывается на каждом такте или кадре цикла рендеринга сцены
- remove - Вызывается всякий раз, когда компонент отсоединяется (отключается) от a-entity. Обработчик часто используется для: удаления, отмены или очистки всех изменений компонента в сущности и для отключения всех слушателей событий.
- pause - Вызывается, когда a-entity или a-scene останавливаются. Обработчик используется для удаления слушателей событий и исключения возможности динамического поведения.
- play - Вызывается, когда a-entity или a-scene возобновляются. Обработчик часто используется для добавления слушателей событий
16. Какие три обязательные элемента требуются для создания базовой сцены в Three.js?
17. С помощью какого метода можно загрузить 3д модель в three.js?
Ответ: THREE.GLTFLoader \ THREE.GLTFLoader() \ GLTFLoader \ GLTFLoader()
Командная задача
Постановка задачи: AR-бот для изучения анатомии
Создайте веб-проект в дополненной реальности с ассистентом для ответов на вопросы по работе органов человека. Пользователи могут задавать вопросы о различных частях тела, особенности их функционирования и заболеваниях. Бот отвечает на вопрос пользователя, показывая соответствующий орган на AR-модели и предоставляя краткие описания.
- При наведении на QR-код или поверхность, на экране устройства отображается 3д-модель тела человека, с которым общается пользователь, приветствие и описание возможностей чат-бота. Дополнительно можно отображать 3д-аватар человека, а не модель, на начальном этапе
- Пользователь вводит вопрос в отображаемый интерфейс, например, "Что такое сердце?" и нажимает кнопку для отправки вопроса.
- Бот делает запрос в базу знаний и при нахождении ответа, отображает информацию пользователю на экране устройства. А так же, подсвечивает орган, о котором идет речь, на 3д-модели. Дополнительно можно реализовать анимацию органа или его детализацию.
- Если информация не найдена в базе знаний, то пользователю выводится информация об этом. Дополнительная реализация: можно предложить пользователю несколько вопросов на выбор, на которые бот знает ответ.
Задачу можно разбить на 4 составляющих
- Создать 3д модель аватара
- Создать модели органов: легкие, сердце, мозг, печень, желудок, кишечник
- Для всех моделей создать материалы/наложить текстуры
- Предусмотреть возможность просматривать органы
Количество полигонов для каждой модели должно было быть адаптировано под дополненную реальность
- Реализовать разговорного бота, который способен вести диалог на строго обозначенную тему. То есть, бот должен обладать подгружаемой базой знаний, на которой обучается
- Разработать концепт базы знаний, и представить его в виде изображения. Пример концепта базы знаний на тему собака
- Заготовленные ветки диалога, в котором предлагается конечному пользователю поговорить про конкретный орган или составляющую часть. Важно, чтобы бот мог отвечать на запросы написанные на естественном языке
- Так же, бот должен сообщать остальным частям системы, про какую конкретную часть тела/детали ведется диалог
- Настроить правильный routing выходов бота и их интеграции на клиентскую сторону (настройка отображения и обеспечение корректного взаимодействия клиента и бота)
- Для этого необходимо, решить следующие задачи:
- Реализовать клиент, который позволяет коммуницировать с ИИ и отображать результаты ответов при наведении на маркер в дополненной реальности. В задачи AR-разработчика входит не только наложение оверлея на маркер, но и создание AR-интерфейса, который соединит все части работы.
- UI элементы на экране, которые видно даже без наведения на маркер. UI может быть представлен в формате диалога или поисковой строки: одно поле ввода с кнопкой.
- При наведении на маркер отображается модель человека.
- Текстовый ответ который содержит информацию о выбранном органе. Ответ может быть представлен в формате ответного UI сообщения или в формате 3д текста на панели рядом с 3д моделью органа.
- Визуальное выделение выбранного органа. Оно может быть выполнена произвольно, главное чтобы было понятно о каком органе идет речь. Например одним из возможных вариантов может быть следующий.
Оценка 3д-моделей
Основыной аспект обращался на адаптацию модели к дополненной реальности, а также текстурирование.
Оценка чат-бота и базы знаний
Оценивалась полнота ответа на вопрос пользователя, понимание естественной речи чат-ботом при уточняющих вопросах. И оценивалось зацикливание диалога, чтобы пользователю не приходилось перезагружать страницу, для ответов по другому органу.
Также, оценивалось наличие первичного сценария (чат-бот здоровается с пользователем, предлагает темы для общения), и боковой ветви сценария, когда пользователь отходит от предзаданных тем.
Оценка интерфейса взаимодействия
Обработка ответа чат-бота, и форматирование его в удобный и понятный формат для пользователя (например, разбиение большого ответа на несколько кусочков).
Обработка различных ошибок соединения с чат-ботом по API, а так же наличие для каждого пользователя отдельной ветки разговора.
В botpres возможно для варианта последующей интеграции на сайт: web-chat и api. Первый вариант оценивался в малое количество баллов, так как не подразумевает дополнительной обработки запросов и настройки интерфейса
Оценка дополненной реальности
Оценивался разработанный маркер и его считываемость. И соответствие описанному сценарию:
- При старте и отображении приветственной информации, вывод общей структуры органов в теле человека или самого человека
- При дальнейшем взаимодействии с приложением были возможны варианты:
А так же оценивалось кроссплатформенность решения с точки зрения расположения UI элементов на различных устройствах.