Skip to content

Latest commit

 

History

History
198 lines (144 loc) · 10.5 KB

File metadata and controls

198 lines (144 loc) · 10.5 KB

CoverGAN

img1 img2 img3

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

Доступные эмоции для музыкального трека:

  • Гневный
  • Уютный
  • Страшый
  • Смешной
  • Счастливый
  • Вдохновляющий
  • Радостный
  • Одинокий
  • Ностальгичесикй
  • Страстный
  • Спокойный
  • Расслабленный
  • Романтичный
  • Печальный
  • Серьезный
  • Глубокий
  • Удивлябщий
  • Милый
  • Осторожный

Сервис доступен по адресу http://81.3.154.178:5001/covergan.

Функциональность сервиса

  • Генерация музыкальных обложек путем анализа музыки и эмоций
  • Несколько моделей GAN
  • Формат SVG
  • Возможность растеризации
  • Вставка хорошо читаемых подписей
  • Большое количество разных шрифтов
  • Вставка различных цветовых фильтров
  • Редактор SVG
  • Удобное изменение цветов
  • Перенос стиля с предоставленного изображения
  • Сохранение изображений в любом разрешении

Веса

  • Предварительно обученные веса можно скачать по этой ссылке
  • Эти веса должны быть помещены в папку ./weights

Обучение

Обучение модели CoverGAN

  • Положите аудио дорожки (формата .flac или .mp3) в папку ./audio по умолчанию.
  • Положите очищенные от подписей обложки (формата .jpg) в папку ./clean_covers по умолчанию.
  • Посмотрите этот документ, чтобы узнать больше опций для обучения.
  • Запустите ./covergan_train.py с указанными опциями.

Пример: python3 ./covergan_train.py --emotions emotions.json

Обучение модели Captioner

  • Положите оригинальные обложки (формата .jpg) в папку ./original_covers по умолчанию.
  • Если название обложки и имя автора уже сохранены в файле data.json (который для каждой обложки хранит координаты подписей и цвет текста), его следует сохранить в файл ./checkpoint/caption_dataset/data.json.
  • В противном случае поместите чистые (без подписей) обложки (в формате .jpg) в папку ./clean_covers.
  • Для получения более подробной информации об указанных параметрах см. этот документ.
  • Запустите ./captioner_train.py с указанными опциями.

Пример: python3 ./captioner_train.py --clean_covers ./clean_covers

Тестирование с использованием Docker

В этом сервисе доступны два типа генераторов:

  • Первый создает обложки с абстрактными линиями
  • Второй рисует закрытые формы

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

  • Первый алгоритм использует модель для создания подписей
  • Второй - детерминированный алгоритм, который ищет наиболее подходящее место

Сервис использует предварительно обученные веса. См. этот раздел.

Сборка

  • Укажите версию PyTorch для установки в файле Dockerfile..
  • Соберите образ, запустив файл docker_build_covergan_service.sh

Запуск

  • Запустите контейнер, запустив файл docker_run_covergan_service.sh

Тестирование

Перейдите по адресу http://localhost:5001 в браузере и наслаждайтесь!

Локальное тестирование

Установка зависимостей

  • Установите подходящую версию PyTorch: pip install torch torchvision torchaudio
  • Установите DiffVG
  • Установите зависимости из файла requirements.txt

Запуск

  • Запустите
python3 ./eval.py \
  --audio_file="test.mp3" \
  --emotions=joy,relaxed \
  --track_artist="Cool Band" \
  --track_name="New Song"
  • Результирующие обложки в формате .svg по умолчанию будут сохранены в папку ./gen_samples.

Примеры созданных обложек

См. папку examples.

Содержание

  • captions: сеть, предсказывающая эстетически сочетающиеся цвета и позиции для подписей (имена исполнителя и трека).
  • colorer: сеть, предсказывающая палитры для музыкальных обложек.
  • docs: папка с инструкциями о том, как начать обучение или тестирование моделей.
  • examples: папка с простыми музыкальными треками, их созданными обложками и примерами оригинальных и чистых наборов данных.
  • fonts: папка с загруженными из Google Fonts шрифтами.
  • outer: основной GAN, который генерирует описания векторной графики из аудиофайлов и указанных пользователем эмоций.
  • utils: части кода, реализующие различные независимые функциональности и разделенные для удобного повторного использования.
  • weights: папка, в которой сохранены лучшие модели.
  • captioner_train.py: точка входа для запуска обучения сети Captioner.
  • covergan_train.py: точка входа для запуска обучения CoverGAN.
  • eval.py: точка входа для запуска основного потока в виде командной строки.
  • service.py: основной код для генерации обложек альбомов.

Структура по умолчанию папки с набором данных:

  • audio: папка с музыкальными треками (в формате .flac или .mp3) для обучения CoverGAN.
  • checkpoint: папка, в которой будут сохранены контрольные точки и другие промежуточные файлы во время обучения CoverGAN и Captioner Networks.
  • clean_covers: папка с обложками, с которых были удалены подписи.
  • original_covers: папка с оригинальными обложками.
  • plots: папка, в которой будут сохранены промежуточные графики во время обучения
  • emotions.json: файл с разметкой эмоций для обучающего набора данных.

Зависимости

  • Модели машинного обучения основаны на популярном фреймворке PyTorch.
  • Визуализация векторной графики с использованием diffvg, который должен быть собран из исходного кода.
  • Извлечение аудиофункций основано на Essentia, предварительно собранные пакеты pip доступны.
  • Другие зависимости Python включают Pillow, Matplotlib, SciPy и Kornia.

Набор данных

Полный набор данных включает:

  • Аудио треки
  • Оригинальные обложки
  • Очищенные обложки
  • Шрифты
  • Размеченные эмоции
  • Размеченные прямоугольники для обучения модели подписей

Набор данных можно скачать по [этой ссылке](https://drive.google.com/file/d/1_NKlS79y29_he9P3xTLd7SgYbOstCkmO/view?usp

License

Shield: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0