Трехэтапное руководство для начинающих

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

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

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

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

Начало работы

Загрузите или клонируйте файлы примеров учебника:
https://github.com/3milychu/ml_color_music_score

Что вам понадобится:

I. Подготовьте партитуру для кластеризации

Получите электронную копию партитуры

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

Разделите партитуру по желаемому уровню группировки цветового кода

Когда у вас есть электронная копия, вам нужно будет разрезать ее по атомарному уровню, по которому вы хотите проанализировать сходство. Например, если вы хотите увидеть фрагменты, сгруппированные по сходству между долями, каждая доля должна быть нарезана в отдельный файл изображения.

Проще всего это сделать с помощью графического программного обеспечения, такого как Illustrator, Sketch и т. Д., Которое позволяет быстро создавать аккуратно выровненные холсты вокруг каждой доли. Затем вы можете просто экспортировать все полотна в указанное место. Вам нужно будет следовать неограниченному и прямому соглашению об именах для каждой доли (например, 1.png, 2.png, 3.png и т. Д.)

Отлично! Мы подготовили партитуру для кластеризации. Но подождите, что такое кластеризация и как это помогает процессу?

Кластеризация - это метод науки о данных, позволяющий брать выбранную информацию из набора объектов и группировать их по сходству. Есть несколько способов сделать это. Один из способов, который мы будем использовать здесь, - это пропустить данные через модель под названием k-means.

Модель k-средних является неконтролируемой - мы говорим, что нет примеров абсолютно правильных или неправильных ответов, данных машине, группы формируются в меру ее знаний на основе всей информации. дано намеренно (поэтому очень важно предоставить ему наиболее точную и эффективную информацию). Процесс, который мы только что прошли, положил начало нашим усилиям по переработке сложной информации, содержащейся в нотах, в минимальную информацию, которая является чистой, ясной и читаемой машиной.

Цель: комплексная → простая информация

Шаг 2. Обработайте данные о музыке с помощью модели машинного обучения

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

Сначала откройте блокнот kmeans-model из репозитория учебников на github. Затем создайте фрейм данных всех имен файлов изображений:

Затем добавьте все важные метаданные, которые у вас есть, которые можно добавить к анализу:

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

Выбранная техника преобразования изображения фокусируется на обнаружении краев. Успешное обнаружение краев можно просто понять как выделение целевых объектов или форм на изображении и отбрасывание того, что не помогает нам идентифицировать эти важные объекты или формы. Поскольку мы будем преобразовывать преобразованные изображения в массив чисел, мы хотим, чтобы массив чисел был как можно меньшим (в идеале подумайте о 1 для того места, где находится метка, и 0, если метки не ставятся). Идея состоит в том, что это позволит нам удалить ненужный шум, сохранив при этом наиболее важные особенности изображения, а машина узнает, что делает одно изображение с определенными формами похожим на другое. См. Красивую вводную раздаточную статью о целях обнаружения краев здесь.

В образце учебного кода представлены различные детекторы кромок; в руководстве используется последний детектор края в функции обработки изображения. Не стесняйтесь поэкспериментировать и пройти через метод обнаружения краев, который вы сочтете нужным.

Мы достигаем момента, когда мы просматриваем машиночитаемые данные музыкальной партитуры, относящиеся к нашему делу, и группируем их с помощью нашей модели машинного обучения (k-средних):

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

Параметры модели K-средних

Как мы выбираем количество кластеров и уточняем ли мы параметры после итеративного просмотра результатов, чтобы вызвать понятный кивок одобрения от вашего друга-музыканта? Вот несколько вопросов, которые мы можем рассмотреть:

  • Как часто в целом мелодия резко меняется?
  • Как часто ключ меняется на протяжении всего произведения?
  • Как часто меняется темп на протяжении пьесы?
  • Как модификации распределяются по всему произведению?

Результаты будут выглядеть примерно так, где столбец «метки» содержит кластер, назначенный этому индивидуальному ритму:

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

Шаг 3. Визуализируйте свои музыкальные данные

Вы можете визуализировать свои музыкальные данные по своему усмотрению в зависимости от выбранного вами инструмента и техники. В этом уроке мы будем использовать простой шаблон html / css / javascript, который я создал. Найдите файл «results.html» в репозитории учебников на github или откройте его здесь.

Этот шаблон очень простой. Для визуализации существует контейнер div vis. Вы измените сценарий, чтобы перебрать количество изображений, с которыми вы работаете. Функция getScore () получит ваш JSON и добавит контейнер с изображением и цветной полосой для каждого объекта (в нашем случае каждого удара). Вы можете изменить стили в шаблоне, чтобы изменить цвет метки + # по классу.

Что даст вам этот шаблон:

В целях презентации вы также можете использовать шаблон кластерного анализа, показанный 'cluster-analysis.html' в репо, или получить доступ здесь, где вы можете продемонстрировать информацию, которую вы выбрали для кластеризации вашей музыкальной партитуры, назвать свои кластеры и отображать всю информацию о биениях изображения, принадлежащую кластеру, в интерактивном режиме.

Эль Фин

Если вы хотите узнать больше о модели k-средних, используемой для лучшего понимания того, как устанавливать параметры и интерпретировать результаты, вот несколько классических чтений и ресурсов:

Ограничения и примечания

Некоторые немедленные способы улучшить метод, описанный выше:

  • Протестируйте набор данных изображений, похожих, но не равных изображениям для нот, которые вы используете, убедившись, что используемый метод обработки изображений предсказывает или «видит» нотную запись наилучшим образом (пока что я должен признать, что это обоснованная гипотеза, основанная на опыте) .
  • Подтвердите, что нотная запись действительно является наиболее минимальным и эффективным способом получения множества музыкальных атрибутов, связанных с произведением (темп, тональность, экспрессия). Если нет, используйте альтернативный самый простой и эффективный способ получить эту информацию.
  • Проведите этот эксперимент с самыми разными нотами! Исправьте неточные предположения и улучшите свои методы моделирования на основе опыта.

Повеселись!