Схема подделки, восстановления и проверки фруктов в овощном магазине. Отрывок из книги

image


Привет, Хаброжители! Пока такая ситуация за окном мы решили поделиться занимательным отрывком из нашей книги «Генеративное глубокое обучение. Творческий потенциал нейронных сетей» Дэвида Фостера.

Яблоки и апельсины

Бабуля Смит и Флорида — совладелицы овощного магазина. Чтобы добиться максимальной эффективности, каждая заботится о своих полках в магазине. Например, бабуля Смит гордится своим выбором яблок, а Флорида часами раскладывает апельсины, добиваясь их идеального расположения. Обе настолько уверены в себе, что согласились на сделку: прибыль от продажи яблок пойдет на долю бабули Смит, прибыль от продажи апельсинов — на долю Флориды.

К сожалению, ни бабуля Смит, ни Флорида не намерены состязаться честно. Когда Флорида не видит, бабуля Смит пробирается к витрине с апельсинами и начинает красить их в красный цвет, чтобы они выглядели как яблоки! Флорида действует точно так же: она пытается сделать яблоки бабули Смит более похожими на апельсины, используя спрей подходящего цвета, когда та поворачивается спиной. Из-за этого покупатели часто выбирают не те фрукты, какие намеревались купить. Те, кто собирался купить апельсины, иногда по ошибке выбирают яблоки, покрашенные Флоридой, а те, кто хотел купить яблоки, по ошибке выбирают апельсины, замаскированные бабулей Смит. В конце концов прибыль за каждый фрукт суммируется и делится соответственно договоренностям — бабуля Смит теряет деньги всякий раз, когда одно из ее яблок продается как апельсин, а Флорида — когда один из ее апельсинов продается как яблоко.

После закрытия магазина обе приступают к наведению порядка на полках с фруктами. Но вместо того чтобы пытаться отмыть краску, нанесенную соперницей, обе просто красят подделки, стараясь привести их в первоначальный вид. Для них важно сделать эту работу правильно: если фрукты не будут выглядеть как нужно, то они не смогут продать их на следующий день и снова потеряют прибыль. Чтобы убедиться в правильности своих действий, они иногда проверяют свои методы на своих собственных фруктах. Флорида опрыскивает свои апельсины и проверяет, выглядят ли они точно так же, как и первоначально. Бабуля Смит проверяет свои «умения» на яблоках. Если они обнаружат очевидные несоответствия, то им придется тратить с трудом заработанную прибыль на изучение более совершенных методов (рис. 5.2).

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

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

image

image

CycleGAN

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

Существовавшие до этого модели передачи стиля, такие как pix2pix, требовали, чтобы каждое изображение в обучающем наборе существовало и в исходной, и в целевой форме. Для некоторых задач переноса стиля (например, для преобразования черно-белых фотографий в цветные, карт — в спутниковые снимки) можно создать такой набор данных, но для других это просто невозможно. Например, у нас нет оригинальных фотографий пруда, с которого Моне написал свою серию «Водяные лилии», и картины кисти Пикассо с изображением Эмпайр-стейтбилдинг. По аналогии, потребовались бы огромные усилия и для того, чтобы получить фотографии лошадей и зебр, стоящих в одинаковых позах. Статья с описанием CycleGAN вышла всего через несколько месяцев после статьи, описывающей метод pix2pix, и показывает, как обучить модель решать те же задачи, но в отсутствие пар исходных и целевых изображений. На рис. 5.4 показана разница между парными и непарными наборами данных pix2pix и CycleGAN соответственно. Если метод pix2pix позволяет моделировать изменения только в одном направлении (от исходного стиля к целевому), то CycleGAN обучает модель в обоих направлениях одновременно, благодаря чему модель учится преобразовывать исходные изображения в целевые и обратно. Это свойство обусловлено архитектурой модели, поэтому возможность преобразования в обратном направлении вы получаете автоматически.

image

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

Ваша первая сеть CycleGAN

Большая часть следующего кода была заимствована из репозитория Keras-GAN (http://bit.ly/2Za68J2), поддерживаемого Эриком Линдером-Нореном (Erik Linder-Norén). Этот замечательный ресурс содержит множество примеров генеративно-состязательных сетей из разных книг, реализованных с помощью Keras.

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

bash ./scripts/download_cyclegan_data.sh apple2orange

В загруженном наборе изображений яблок и апельсинов, которые мы будем использовать далее, данные разбиты на четыре папки: trainA и testA содержат изображения яблок, а trainB и testB — изображения апельсинов. То есть A представляет пространство изображений яблок, а B — пространство изображений апельсинов. Наша цель — обучить модель на наборах данных в папках train преобразовывать изображения из набора A в набор B, и наоборот. Изображения в папках test мы используем для проверки качества модели.

» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

FavoriteLoadingДобавить в избранное
Posted in Без рубрики

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *