Как Сделать Бота, Который Превращает Фотографии В Комиксы. Часть Вторая. Модельное Обучение

⇨ Первая часть ⇨ Часть третья И снова здравствуйте! Как вы могли заметить, праздники несколько нарушили график выхода статей.

Думаю, что многие за это время успели если не полностью обучить свою модель, то хотя бы поэкспериментировать с разными наборами данных.

1. Установите дистрибутив 2. Загрузите фотографии 3. ??? 4. Прибыль!
Если вас не интересовали эти наши нейросети, или вы начинаете читать с этой статьи, то, как говорится, нет времени объяснять, берем дистрибутив, скачиваем нужные фотографии и поехали! Подробная инструкция - в предыдущей статье серии .



Первая блин комковатая

Когда я обучал модель для @photo2comicsbot первый раз, не мудрствуя лукаво, я просто запихнул в датасет около 1000 страниц комиксов.

Да, вместе с обложками, анонсами и прочими наполнителями.

На входе это выглядело так:

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

Результат был тот же:

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

Больше картинок

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

Модель прекрасно передает общие различия между комиксами и фотографиями:

  • Характерная цветокоррекция
  • Изложение
  • Разбивка на блоки
  • Облака с текстом
В принципе, этого варианта может быть вполне достаточно для производства.

Но мне было интересно, какие результаты можно получить с помощью «более чистого» набора данных.



Возьми два

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

Если вы вносите изменения в свой набор данных, например, удаляете или добавляете фотографии, не забудьте сохранить предыдущую версию.

Вам будет куда вернуться, если что-то пойдет не так.

Второй набор данных выглядел так:

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

Результат, как говорится, налицо:

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

Больше картинок

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

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

Пустое пространство, которое когда-то было заполнено текстом, теперь заполнено психоделическим шумом.



Третий раз - это очарование

Я решил полностью избавиться от текста, оставив только те части комикса, где его нет. Никто не выжил: ни облака, ни титров, ни названий серий.

Набор данных после «лингвистического геноцида»:

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

Конечный результат:

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

Больше картинок

Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение



Как сделать бота, который превращает фотографии в комиксы.
</p><p>
 Часть вторая.
</p><p>
 Модельное обучение

С одной стороны, артефактов стало меньше, с другой — ушла выразительность.

Поскольку в GAN-обучении качество результата во многом определяется нами с вами, единого рецепта хорошей модели не существует. Красота в глазах смотрящего, поэтому не бойтесь экспериментировать и выбирать то, что вам больше нравится.



К оружию!

Что ж, об основных подводных камнях и способах борьбы с ними мы уже рассказали, пора переходить к делу.

Заходим в папку, куда мы скачали раздачу.

Напомню, это называлось pytorch-CycleGAN-и-pix2pix Так как наша инструкция для чайников, то код дистрибутива трогать не будем, так как все необходимые параметры можно задать из командной строки.

В этом распределении обучение по умолчанию длится двести эпох с линейным снижением скорости обучения после сотой эпохи.

Максимальное разрешение, с которым могла справиться моя восьмигигабайтная карта, было 400x400. Полное обучение заняло у меня около 33 часов, поэтому воспользуемся небольшим лайфхаком.

Сначала мы обучим модель на изображениях размером 128х128, затем 256х256 и только на финальном этапе покажем ей наш великолепный размер 400х400. Первый этап продлится 100 эпох, второй и третий — по 50, что позволит нам сократить время обучения почти вдвое.

Как показывает практика, результат при таком подходе не хуже, а иногда даже лучше, чем при тренировке сразу на максимальном разрешении.

Пожалуй, хватит теории, пора переходить к практике.

Введите в командной строке.



Энажми сначала

  
  
  
  
  
  
   

python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 128 --load_size 180 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 4

Не забудьте заменить фигурные скобки своими значениями.

Рассмотрим некоторые параметры более подробно:

--batch_size {number}

Этот параметр отвечает за количество обрабатываемых изображений «за такт», положительно влияя на скорость и отрицательно влияя на прожорливость модели.

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



-- dataroot {dataset root folder}

— папка с нашим набором данных.

Внутри него должны быть папки trainA, trainB, testA, testB, как описано в предыдущей статье.



--name {model name}

— название вашего проекта.

Может быть произвольным, но я рекомендую включать в название архитектуру модели, максимальное разрешение и название набора данных.

Например: «resnet9_128to400_comics8» Это поможет вам различать эксперименты с разными параметрами и данными.

Первый этап обучения можно остановить на сотой эпохе.

Вы можете следить за своим прогрессом из браузера: локальный хост :8097/ (или другая ссылка, которая будет видна в консоли)

Энажмите секунду



python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 256 --load_size 290 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 2 --epoch 100 --epoch_count 0 --continue_train

Здесь важно указать эпоху, в которой мы завершили обучение на первом этапе.

«--epoch 100» означает, что мы будем загружать модель с контрольной точки сотой эпохи.

«--epoch_count 0» означает, что мы начнем обучение с нуля, с максимальной скоростью обучения.

Второй этап обучения можно прекратить на 50-й эпохе.



Энажмите третий



python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 400 --load_size 430 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 1 --epoch 50 --epoch_count 0 --continue_train

Третий этап обучения можно прекратить и на 50-й эпохе, но это дело вкуса.

Вы можете доучиться до конца и выбрать понравившийся вам промежуточный результат. Важно помнить, что результат на 200-й эпохе может быть хуже, чем на 150-й.



Теперь выйди и посмотри, что ты сделал

В процессе обучения модель и промежуточные результаты будут сохраняться в папку /pytorch-CycleGAN-and-pix2pix/checkpoints/{название модели} Чтобы проверить модель, достаточно ввести в командную строку:

python test.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --netG resnet_9blocks --crop_size 512 --load_size 580 --epoch {epoch name}

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

Если {имя эпохи} не указано, будет взята последняя контрольная точка.

Результат сохранится в папке:

/pytorch-CycleGAN-and-pix2pix/results/{model name}/test_{epoch name}

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

Зафиксируйте исходные данные и результаты обучения.

Например, командная строка и эпоха, в которой вы достигли.

Этих данных достаточно для сохранения параметров обучения и набора данных, на котором мы обучались.

Ведь чем отличается научный эксперимент от дурачества? Потому что у нас все задокументировано!

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

Не бойтесь экспериментировать.

Обязательно попробуйте несколько разных наборов данных, сравните результаты и поделитесь ими в комментариях! Еще увидимся! ⇨ Следующая часть Теги: #Машинное обучение #python #программирование #учебник #GaN #комиксы #cyclegan

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.