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

3 минуты машинного обучения

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

Зачем читать эту статью?

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

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

Передача нейронного стиля

Neural Style Transfer - это метод оптимизации. Его реализация включает использование двух изображений: одно представляет основной контент (изображение содержимого), а другое представляет стиль (ссылка на стиль изображение), представляющий изображение, которое мы хотим получить. . Алгоритм смешивает эти изображения, беря изображение содержимого и применяя к нему эталонное изображение стиля. Это достигается путем оптимизации окончательного изображения в соответствии с статистикой содержания изображения содержания и статистикой стиля эталонного изображения стиля. Реализация алгоритма предполагает использование сверточных сетей.

Для получения дополнительной информации, пожалуйста, обратитесь к оригинальной статье или этому интересному туториалу от Tensorflow.

Код

Код требует импорта нескольких библиотек и определения некоторых переменных среды. Matplotlib используется для построения изображений, Tensorflow и Keras для управления суррогатными моделями и предварительной обработки изображений, системная библиотека os для определения некоторых системных переменных NumPy в качестве основного инструмента для численного анализа. Мы импортируем некоторые инструменты прямо из Google Colab, чтобы упростить импорт изображений прямо с вашего ПК.

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

Определим несколько полезных функций:

tensor_to_image позволяет преобразовать TensorFlow Tensor в файл изображения, который можно представить как таковой. load_img загружает изображение по желаемому пути. imshow позволяет нам визуализировать изображение, обращая внимание на размер входного файла.

Давайте отобразим изображения:

Давайте создадим нашу модель передачи нейронного стиля:

Все, что необходимо, чтобы использовать потенциал Tensorflow Hub, - это:

  • загрузить предварительно обученную модель из Tensorflow Hub
  • сгенерируйте новое стилизованное изображение, передав наши два изображения в модель как постоянные тензоры Tensorflow
  • преобразовать новое изображение в изображение
  • давайте визуализируем результат!

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

Выводы

Надеюсь, вам понравится содержание этой статьи. Напоминаю, что вы можете найти исходный код здесь, а полный репозиторий на GitHub и YouTube.
До следующего раза,
Марко