В этой статье речь пойдет о:
- оформлении замысла в реальный проект с применением разных методов анализа и соответствующих инструментов управления проектом;
- использовании методологии CRISP-DM (межотраслевой стандартный процесс для интеллектуального анализа данных);
- определении стандартных задач для любого проекта AI.
Некоторые задачи представлены с упором на работу в группе. Если вы работаете в одиночку, вы можете пропустить эти разделы или выполнить соответствующие задачи, совместив в себе несколько функций.
В качестве учебного проекта для этой серии статей мы взяли приложение, которое будет распознавать эмоции на загруженных изображениях с помощью алгоритма обработки изображений (распознавания эмоций), создавать музыкальное сопровождение, подходящее для распознанных эмоций, после чего монтировать видео, совмещая изображения и музыкальное сопровождение.
Оформление замысла в проект
Оформление замысла в проект начинается с определения объема проекта, т. е. что вы будете создавать и как. Это позволяет устранить возможные неясные ситуации во время разработки.
Например:
- Сколько снимков можно будет загружать?
- Что понимается под распознаванием эмоций?
- Как мы будем представлять эмоцию на компьютере?
- Какие эмоции будут поддерживаться?
- Как мы будем присваивать эмоцию набору изображений?
- Как мы будем обучать модель создания музыки?
- Как будут связаны между собой компонент распознавания эмоций и компонент создания музыкального сопровождения?
- Как будет происходить процесс создания музыкального сопровождения?
- Как обеспечить соответствие мелодии, создаваемой компьютером, эмоциям?
- Как будет монтироваться окончательный видеоролик с плавными переходами между фреймами?
Вам необходимо найти ответ на каждый из этих вопросов перед тем, как вы сможете перейти к фазе внедрения. Кроме того, вам необходима методология, которая поможет вам сформулировать ваши собственные вопросы относительно будущего приложения, чтобы не упустить никакие важные аспекты.
Методы анализа проекта
Рекомендуем использовать эти три простые, но эффективные приема для анализа проекта и формулирования задач.
- Иерархическая декомпозиция. Этот прием основывается на принципе «разделяй и властвуй» и предполагает итеративную декомпозицию задач на подзадачи до тех пор, пока время выполнения отдельной подзадачи не будет составлять всего два часа¹ или время, необходимое на декомпозицию, не станет сопоставимым со временем выполнения задачи. Вверху иерархии находится блок, обозначающий всю систему. На следующем уровне находятся блоки, связанные с логически автономными системными компонентами, которые вместе обеспечивают необходимый пользователю результат и т. д. в обратном порядке. Поскольку вы начинаете с системы в целом, а потом разбираете ее уровень за уровнем на ряд взаимно исключающих компонентов, это не дает вам упустить ни одну задачу.
- Анализ возможных ситуаций. При использовании этого метода вы постоянно задаете себе вопрос «Что если?», чтобы обнаружить скрытые нюансы.
- Моделирование пути пользователя. Этот прием используется многими разработчиками пользовательских интерфейсов и менеджерами по продуктам и предполагает создание ряда задач и сценариев, которые должно поддерживать ваше приложение. Представьте, что вы сами пользуетесь приложением, и смоделируйте типичные режимы, которые может вызывать пользователь. Если вы мысленно можете пройти от начала до конца без заминки, нет нужды добавлять другие задачи — это ваш критерий остановки. Однако в самом начале вы, скорее всего, будете сталкиваться с проблемами на каждом шаге пути пользователя. В этом случае просто записывайте суть проблему и создавайте задачу, чтобы решить ее после.
Анализ приложения для видеомонтажа
Опираясь на метод иерархической декомпозиции для нашего проекта, мы решаем, что приложение для видеомонтажа, как и любое другое приложение, предполагающее взаимодействие с пользователями, можно разбить на:
- интерфейсную часть, т. е. компонент, непосредственно взаимодействующий с пользователем;
- программно-аппаратную часть, т. е. компонент, где и происходят интересные процессы AI и который, в свою очередь, можно разделить на:
- o компонент распознавания эмоций;
- o компонент создания музыкального сопровождения.
В интерфейсной и программно-аппаратной частях существует три основных компонента: интерфейс пользователя (синий), распознавание эмоций (оранжевый) и создание музыкального сопровождения (зеленый), как показано на рис. 1.
Рис. 1. Схема приложения для видеомонтажа.
Интерфейс пользователя
Пользователь взаимодействует с данным компонентом, используя кнопки для загрузки изображений, запуска процесса видеомонтажа, а также организации совместного доступа или загрузки полученного результата. Хотя интерфейс пользователя является важным элементом, в этой серии учебных материалов мы сделаем упор на интеллектуальной обработке информации в программно-аппаратной части с помощью новых технологий Intel.
Испытайте на себе преимущества приложения для видеомонтажа на основе AI
Шаг 1. Распознавание эмоций
Шаг 2. Видеомонтаж
Шаг 3. Обмен
Распознавание эмоций программно-аппаратной частью (обработка изображений)
Этот компонент отвечает за присвоение эмоций изображениям. У каждого интеллектуального компонента, обрабатывающего данные, есть два процесса:
- процесс обучения или извлечения данных компонентом, т. е. фаза обучения;
- процесс применения компонента, т. е. фаза применения и тестирования.
Каждый из этих процессов связан с рядом стандартных задач AI.
Во время фазы обучения вы снабжаете компонент данными с ответами и обучаете машину «правилу» присвоения соответствующих ответов входным данным, поступающим от одной и той же совокупности или распределения. К задачам фазы обучения относятся:
- определить входные и выходные данные для каждого этапа обработки данных;
- найти или создать набор данных для машинного обучения, соответствующий определенным входным и выходным данным;
- обучить модель машинного обучения;
- оценить модель машинного обучения.
Во время фазы применения и тестирования обученная модель используется для прогнозирования ответов при поступлении неизвестных объектов от одной и той же совокупности или распределения. В число задач входят:
- определить входные и выходные данные для каждого этапа обработки данных;
- развернуть модель машинного обучения.
В более широком контексте задачи и этапы, типичные почти для каждого проекта AI, можно определить с помощью методологии CRISP-DM. В рамках этой методологии проект на базе интеллектуального анализа данных или AI представляется в виде цикла с шестью состояниями, как показано на рис. 2. На каждом этапе есть свои задачи и подзадачи, например, разметка данных, оценка модели и разработка функций. Цикл возникает в связи с тем, что любую реальную интеллектуальную систему можно усовершенствовать.
Рисунок 2. Отношения между разными фазами CRISP-DM.
Переходя от теории к практике, давайте сформулируем входные и выходные данные для обучения и протестируем модель распознавания эмоций.
У нас есть шесть разных эмоций: беспокойство, грусть, радость, спокойствие, решительность и страх.
- Каждая эмоция представлена в компьютере в виде кода от 1 до 6 в соответствии с методом кодирования содержания.
- Каждое изображение представлено в виде трехмерного тензора (трехмерного массива), где тремя измерениями являются высота, ширина и цветовой канал (например, RGB)
Обучение
- Входные данные: четырехмерный тензор (набор трехмерных изображений с метками, т. е. изображений и классов их эмоций)
- Выходные данные: обученная модель машинного обучения.
Тестирование
- Входные данные: трехмерный тензор (изображение без метки), модель обучения.
- Выходные данные: мультиноминальное вероятностное распределение по кодам/классам.
Далее необходимо посмотреть, как проект вписывается в общую картину, и применить методы системного анализа для устранения несоответствий:
- Пользователь будет загружать несколько изображений. Поэтому мы должны решить, как из эмоций, распознанных для каждого отдельного изображения, получить единое эмоциональное настроение для всего видеоролика.
- Изображения будут сопровождаться музыкой. Поэтому мы должны понять, как на основе той или иной эмоции будет создаваться мелодия.
- Содержание изображений должно быть синхронизировано с музыкой, а переходы между изображениями должны быть плавными, чтобы пользователю было приятно смотреть.
Для начала мы создадим музыкальное сопровождение для одного изображения. Мы вернемся к нескольким изображениям после того, как рассмотрим компонент создания музыкального сопровождения и поймем, как интегрировать его с компонентом распознавания эмоций.
Создание музыкального сопровождения программно-аппаратной частью
Этот компонент выдает мелодию в ответ на эмоцию. Чтобы связать компонент создания музыкального сопровождения с компонентом обработки изображений, нам потребуется соединительное звено между кодом эмоции и аудиосигналом:
- Возьмите произвольную известную песню из заранее созданной базы данных известных песен.
- Настройте темп, звукоряд, ритм мелодии в соответствии с эмоцией с помощью простого скрипта.
- Запустите процесс создания музыкального сопровождения на основе машинного обучения с использованием базовой мелодии, настроенной под эмоцию.
Процесс создания музыкального сопровождения должен закончить базовую мелодию, настроенную под эмоцию, определяя наиболее естественно звучащую следующую музыкальную ноту за счет обучения в прошлом на широком корпусе песен.
Как и в случае с компонентом распознавания эмоций, нам необходимо определить входные и выходные данные для обучения и тестирования модели создания музыкального сопровождения.
Обучение
- Входные данные: коллекция песен.
- Выходные данные: обученная модель машинного обучения для создания музыкального сопровождения (например, прогнозирование следующей ноты в ответ на определенную ноту).
Тестирование
- Входные данные: обученная модель машинного обучения для создания музыкального сопровождения И подготовленная базовая мелодия (ряд нот).
- Выходные данные: последовательность нот, создающая базовую мелодию.
Принимая во внимание постоянные API-интерфейсы для компонента создания музыкального сопровождения, нам необходимо внедрить скрипт модуляции в зависимости от эмоции и выполнить все задачи AI, связанные с созданием музыкального сопровождения, в том числе поиск набора данных для обучения модели создания музыкального сопровождения или поиск базовых мелодий. Об этих аспектах мы расскажем позже в статьях. Для нашего учебного проекта мы будем использовать следующее:
- Базовые мелодии берутся из открытой коллекции музыкальных композиций (музыкальные композиции, созданные до 1922 года)
- Обучение процессу создания музыкального сопровождения осуществляется на хоралах Баха, т. е. нотах, символически представляющих работы Баха, которые были подготовлены в рамках проекта BachBot
- Исходные файлы берутся из проекта music21
Соединение компонентов
Варианты комбинирования изображений и мелодий представлены ниже со своими преимуществами и недостатками.
Вариант А: Одна базовая мелодия модулируется в соответствии с преобладающей эмоцией для всех изображений.
- Преимущества: Плавные переходы между изображениями.
- Недостатки: Пользователь может испытать дискомфорт, если музыкальное сопровождение останется прежним, когда радостное изображение сменится грустным.
Вариант В: Одна базовая мелодия модулируется отдельно для каждой эмоции, встречающейся на изображениях.
- Преимущества: Плавные переходы между изображениями и четкое соответствие между эмоцией на изображении и музыкальным сопровождением.
- Недостатки: Нет.
Вариант С: Разные базовые мелодии модулируется отдельно для каждой эмоции, встречающейся на изображениях.
- Преимущества: Четкое соответствие между эмоцией на изображении и музыкальным сопровождением.
- Недостатки: Неплавные переходы между изображениями, потому что музыка может резко меняться при изменении эмоции.
Например, у нас есть три изображения с разными эмоциями (радость, спокойствие и страх). В качестве базовой песни мы будем использовать «Jingle Bells», а для создания музыкального сопровождения мы возьмем BachBot. В результате мы получим три созданные песни на основе трех версий «Jingle Bells» (первая — для радости, вторая — для спокойствия и третья — для страха). Каждое входящее изображение обрабатывается отдельно путем вызова API для распознавания эмоций с помощью одной базовой песни, распространяющейся на все изображения. Базовая песня модулируется для каждой эмоции, после чего для каждого изображения используется соответствующая версия песни, модулированная под эмоцию.
Дополнительную информацию см. в:
Общие рекомендации по управлению проектом
Для декомпозиции проекта выполните следующие действия:
- определить структуру верхнего уровня (до трех уровней декомпозиции);
- поговорить с каждым участником отдельно (обычно выполняется системным архитектором), чтобы
- узнать о возможностях и требованиях соответствующих компонентов;
- определить официальные требования к API;
- доработать иерархию декомпозиции проекта. В этом случае мельчайшие детали интеграции будут выявлены на ранней стадии проекта, благодаря чему снизится количество работы и доработок на стадии интеграции.
Внизу представлены общие рекомендации, которые помогут вам оформить ваш замысел в проект.
- Один специалист из вашей проектной команды (обычно это системный архитектор) будет отвечать за декомпозицию, а все остальные участники команды должны активно участвовать в процессе, предоставляя исходные данные и обратную связь на технические условия. Это позволит обеспечить цельность замысла — главное свойство качественно спроектированной системы².
- Чтобы найти правильную абстракцию (входные и выходные данные) для каждого компонента, возможно, вам придется одновременно рассматривать несколько компонентов. В этом случае определите все возможные форматы ввода и вывода для каждой системы, после чего подберите конфигурацию, подходящую для обоих компонентов.
- Поскольку задачи повторяются от проекта к проекту, после определения задач AI вы можете сэкономить время, создав набор стандартных задач AI в виде поддерева в иерархии декомпозиции.
- Начните с простого случая (например, одно изображение, одна эмоция или одна мелодия) и идите от него вместо того, чтобы пытаться создать модель интеграции компонентов для целого приложения с нуля.
В последующих статьях мы подробно рассмотрим все задачи для нашего учебного проекта.
Контрольная карта элементов декомпозиции и ресурсов для проекта AI
Ниже представлен перечень типичных задач для проектов AI. Используйте его как шаблон для своего проекта.
- Сформулируйте бизнес-задачу, определив входные и выходные данные, например, объекты и метки или целевые переменные.
- Проанализируйте данные.
- Сделайте выборку данных.
- Выполните поисковый анализ данных.
- Очистите данные.
- Удалите повторяющиеся, посторонние данные и т. д.
- Нормализуйте значения функций.
- Создайте испытательную модель для методологии оценки.
- Разработайте модель машинного обучения.
- Подготовьте набор данных для машинного обучения.
- Соберите исходные данные.
- Найдите подходящий набор данных.
- Настройте инфраструктуру хранения.
- Если метки отсутствуют, аннотируйте исходные данные.
- Составьте рекомендации по аннотированию.
- Выполните процесс аннотирования.
- Проверьте качество аннотирования.
- Обучите модель машинного обучения.
- Выберите библиотеку.
- Выполните сравнительный анализ существующих библиотек.
- Установите и настройте самую подходящую библиотеку.
- Выберите и настройте инфраструктуру для машинного обучения.
- Выполните сравнительный анализ частных и общедоступных облачных сред и технологий исполнения.
- Выполните планирование ресурсов для достижения своих целей в области машинного обучения.
- Выберите алгоритм.
- Создайте прототип алгоритма.
- Доработайте свою модель путем настройки гиперпараметров и добавления улучшений, связанных с данной предметной областью.
- Выберите библиотеку.
- Выполните оценку модели.
- Разверните модель.
- Определите характер соглашений об уровне обслуживания (SLA) для API машинного обучения.
- Поместите модель машинного обучения в API (контейнер или повторное внедрение на более эффективном языке программирования).
- Выполните тестирование API под нагрузкой, чтобы проверить соответствует ли он условиям соглашений об уровне обслуживания (SLA).
Заключение
В этой статье мы рассмотрели три популярных метода системного анализа, которые были применены к проекту по созданию приложения для видеомонтажа. Выполнив иерархическую декомпозицию, мы определили три основных компонента приложения: интерфейс пользователя, распознавание эмоций и создание музыкального сопровождения. Мы произвели подробный анализ компонентов AI для распознавания эмоций и создания музыкального сопровождения, включая определение входных и выходных данных, обучение и тестирование, а также интеграцию компонентов. И наконец, мы дали рекомендации по планированию проекта, а также поделились набором стандартных задач AI на основе методологии CRISP-DM, подходящих для любого проекта AI.