Где карта Билли? Или заменит ли ИИ картографов?

Привет, как известно рано или поздно искусственный интеллект заменит всех нас. Но картограф Topi Tjukanov решил выяснить сможет ли ИИ успешно создавать карты если его этому обучить. Его эксперименты возможно пока не имеют высокой картографической ценности, зато смотреть на результаты одно загляденье. Далее я приведу конспект его публикации, посвященной увлекательному процессу натаскивания железных мозгов на анализ и создание карт. Кто знает какие сокровища с их помощью удастся отыскать в будущем?
N.B. А если вам не очень интересно читать про технические детали процесса ML, можете просто полистать картинки, они довольно залипательные ;)

Где карта Билли? Или заменит ли ИИ картографов?
Произведения искусства, созданные с помощью нейронных сетей, выглядят очень увлекательно, красиво и даже пугающе. Некоторые люди обучали нейронные сети модным изображениям, аниме-лицам или людям, чтобы создавать воображаемый контент и исследовать визуальные эффекты.
Результаты работы Topi Tjukanov
Результаты работы Topi Tjukanov

 AI, ML, GAN ... что?

GAN генеративно-состязательная сеть (англ. Generative adversarial network) - это класс систем машинного обучения. Две нейронные сети соревнуются друг с другом в игре. Одна сеть генерирует изображения, а другая оценивает, насколько «реально» они выглядят.
Учитывая сетевой набор обучающих карт, этот метод обучается создавать новые карты с той же статистикой, что и обучающий набор. Так что в основном после тренировки можно создавать практически бесконечное количество изображений, которые являются картами. Но не совсем.
Упрощенный процесс происходящего. Йоу, я слышал, ты любишь карты!
Упрощенный процесс происходящего. Йоу, я слышал, ты любишь карты!
Для этого процесса автор использовал StyleGAN2 от NVIDIA. Потрясающая структура, стоящая за большой долей искусственного интеллекта, которую вы видите в Интернете. Конечно, он используется и для других целей.
Настройка среды StyleGAN может быть немного трудной для новичка, так как вам нужны Tensorflow (1.x), драйверы NVIDIA, инструментарий CUDA 10.0 и cuDNN 7.5. Если вы не используете Docker (которым я не являюсь), есть смысл использовать Anaconda для управления установками вашего пакета Python.
Для кого-то, кто не знаком с процессами, основанными на графическом процессоре, такими как машинное обучение, может удивить то, что запуск виртуальной машины с эффективным графическим процессором очень дорог. Для создания изображений в высоком разрешении с StyleGAN вам понадобится графический процессор NVIDIA с не менее 16 ГБ оперативной памяти. Еще лучше, если у вас есть несколько графических процессоров. Выполнение этих упражнений может легко стоить вам нескольких долларов в час, и если ваше обучение занимает несколько дней, недель или даже месяцев, это много.
Поэтому очень важно оптимизировать использование вашей машины. Вы также можете проверить такие места, как RunwayML, предназначенные для этого типа целей.

Учебные материалы

Для обучения требовалось много карт. Как известно всем любителям карт, старые карты ручной работы очень красивы. Topi хотел придать выводам рисованный вид, так что это было одним из немногих ограничений, которые были в учебных материалах. Любая точка мира, любого типа карты, любого масштаба и на любом языке.
Есть много сайтов в Интернете, которые делятся старыми картами, но по понятным причинам очень немногие из них предлагают простой способ выполнить массовую загрузку. Поэтому пришлось заняться ручным сбором.
Образец старой карты ручной работы
Образец старой карты ручной работы

Когда вы собираете данные для изучения AI, вы можете сделать это с помощью Python, но для многих сайтов можно обойтись, просто используя wget.
Например:

  wget --random-wait -nd -r -P /save/location -A jpeg http://www.somedomain.com

Эта команда вернет вам все изображения JPEG на определенных сайтах и ​​сделает коллекцию рекурсивно!
После некоторого утомительного сбора пришлось унифицировать данные. StyleGAN2 хочет, чтобы все тренировочные данные имели одинаковый размер и предпочтительно квадратную форму. С помощью Python были изменены все изображения и приведены к RGB, а не в оттенках серого.

Скрипт которые унифицирует данные, использованный Topi Tjukanov:

from PIL import Image
import random
import os, sys
path = "/path_to_your_images/"
dirs = os.listdir( path )
def resize():
    i = 0
    for item in dirs:
        if os.path.isfile(path+item):
            try:
                print(item)
                im = Image.open(path+item)
                f, e = os.path.splitext(path+item)
                i = i + 1
                width, height = im.size
                for crops in range (5):
                    rand1 = random.randint(-2000,2000)
                    left = (width - 1024 + rand1)/2
                    top = (height - 1024 + rand1)/2
                    right = (width + 1024 + rand1)/2
                    bottom = (height + 1024 + rand1)/2
                    pil_imagecrp = im.crop((left, top, right, bottom))
                    pil_imagecrp.save('/' + str(i) + '_' +  str(crops) + '_map_cntr.jpeg', format='JPEG', quality=90)
imResize = im.resize((1024,1024), Image.ANTIALIAS)
                imResize.save('/' + str(i)  + ' _map_rsizd.jpg', 'JPEG', quality=90)
            except:
               pass
resize()

StyleGAN должен иметь изображения в определенном формате TFRecords, чтобы Tensorflow мог их читать. Помните, что эти TFRecords с несколькими разрешениями и в 30 раз больше, чем ваши оригинальные изображения. Так, например, у автора было чуть более 20 гигабайт изображений карт и более 500 гигабайт TFRecords! Поэтому убедитесь, что у вас достаточно места на диске.
Вы можете преобразовать изображения в TFRecords с помощью инструмента набора данных, который поставляется с StyleGAN2, следующим образом:

python dataset_tool.py create_from_images ~/datasets/my-custom-dataset ~/my-custom-images

Ну ооочень дооолгий учебный процесс

После того, как вы выполнили все установки и обучающие материалы, вы можете приступить к обучению сети. 1024 x 1024 - это самый большой размер, с которым StyleGAN2 легко справится. Впоследствии, возможно, имело больше смысла использовать разрешение 512 x 512 для ускорения процесса.
3000 тиков (итераций) обучения заняло примерно одну неделю чистого машинного времени. Один тик занял 2–3 часа. Каждые 50 тиков StyleGAN создает снимок сети и несколько поддельных изображений.
Во время тренинга число «Начальное расстояние Фреше» (FID) позволяет получить представление о том, как проходит обучение. Показатель FID для этих карт, показанных здесь, составил около 23.
Из графика видно, что в процессе обучения требуется больше времени, чтобы увидеть большие изменения в балле fid.
Из графика видно, что в процессе обучения требуется больше времени, чтобы увидеть большие изменения в балле fid.


Некоторые мечты о картах

Интерполяция через скрытое пространство одновременно интересна и психоделична.
Помимо приятной анимации, очень интересно просто исследовать скрытое пространство. Ниже приведены несколько примеров результатов. Где-то между цветным и черно-белым. Где-то между латинскими буквами и кириллицей.
Где карта Билли? Или заменит ли ИИ картографов?
Ниже еще больше случайных выборок. Некоторые из них лучше других, но все они выглядят довольно красиво по-своему. Некоторые черные края также показывают, что не все обрезки были успешными на 100%.
Где карта Билли? Или заменит ли ИИ картографов?
При взгляде на интерполяции между изображениями переходы не всегда кажутся такими логичными. Некоторые изменения кажутся очень внезапными, но это в основном из-за используемых данных обучения.
Девять шагов интерполяции между этим странным зеленоватым изображением и картой города в пастельных тонах делают несколько интересных шагов.
Девять шагов интерполяции между этим странным зеленоватым изображением и картой города в пастельных тонах делают несколько интересных шагов.
Еще одна анимация, где вы можете четко отличить два типа карт от тренировочных данных. Старая финская базовая карта и старая советская карта. Яркие контрасты заставляют их выглядеть очень красиво.
Где карта Билли? Или заменит ли ИИ картографов?

Выводы

Многие люди спрашивают автора, какой смысл во всем этом? У него было несколько мотивов:

  • Узнать что-то новое. Topi Tjukanov испортил несколько виртуальных машин и сделал несколько глупых инсталляций пакетов в пути, но вот как ты учишься 😁
  • Он хотел создать что-то новое, чего раньше не было. Все еще исследуя скрытое пространство, чтобы найти красивую карту для печати и повесить на стену.
Но что это такое? Карты, произведения искусства или просто шум? Вы понимаете, что это такое, но не можете понять это. Каков масштаб этой карты? Откуда это? На каком языке этот ярлык?
Как выразился один из комментаторов в Twitter:
“Деконструкция до такой степени, что смысл смещается и интерпретация становится многогранной. Его работы связаны между проявлением географии и воображением. Возникают многослойные образы, в которых хрупкость нашей, казалось бы, определенной реальности ставится под сомнение.”
Картография, визуализация. Topi Tjukanov

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

Комментарии