Может ли глубокая нейронная сеть научиться готовить, имея только изображение вкусной еды? Новое исследование Deep Learning, проведенное Массачусетским технологическим институтом, предполагает это!

В их недавно опубликованном исследовании под названием Как приготовить пиццу:
Изучение модели GAN на основе композиционных слоев
исследуется, как можно обучить модель GAN распознавать этапы приготовления пиццы. Их PizzaGAN состоит из 2 частей:

(1) Учитывая входное изображение пиццы, PizzaGAN обучен предсказывать, какие начинки есть в пицце.

(2) Учитывая входное изображение пиццы, PizzaGAN может применить к изображению упорядоченный набор моделей, где каждая модель добавляет или удаляет начинку из пиццы.

Из чего состоит пицца?

Прежде чем пытаться обучить глубокую нейронную сеть приготовлению пиццы, нам сначала нужно выяснить, как приготовить пиццу самостоятельно.

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

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

Например, предположим, что мы начинаем с хорошей пиццы пепперони. Затем к нам подходит наш друг и говорит: «Эй, давай добавим оливки!» Мы можем смоделировать процесс перехода от нашей оригинальной пиццы к нашей новой в виде ряда шагов:

(1) Признать наше текущее состояние - пицца пепперони

(2) Примените изменение, которое приведет нас к нашему целевому состоянию - добавьте оливки.

После добавления оливок другой друг может сказать: «Я не люблю пепперони, давай возьмем ветчину!» На этот раз у нас есть 3 шага:

(1) Признать наше текущее состояние - пицца пепперони и оливки

(2) Примените первое изменение, которое приближает нас к нашему целевому состоянию - удалите пепперони.

(3) Примените второе изменение, которое приведет нас к нашему целевому состоянию - добавьте ветчину.

Чтобы научиться готовить пиццу, нейронная сеть PizzaGAN пытается смоделировать все эти шаги.

Как GAN может приготовить пиццу

Набор данных

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

["ham", "mushrooms"]

При выполнении обучения выходные классификации подвергаются горячему кодированию. Таким образом, для пиццы с ветчиной и грибами элементы ветчины и грибов выходного вектора устанавливаются на 1,0, а остальные элементы - на 0,0.

Сеть генераторов - добавление и удаление начинки

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

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

Поскольку генератор обучается для одного доливания за раз и только для добавления или удаления, обучаются несколько сетей генераторов, по две для каждой пары различных наборов доливки (один для добавления и один для удаления в каждой паре). Пример пары генераторов PizzaGAN - один для добавления пепперони, а другой - для его удаления, показан ниже.

Пицца с сыром имеет 0 для всего вектора классификации, а пицца с пепперони имеет все 0, за исключением индекса пепперони, который равен 1,0. Поскольку разница между входным и выходным изображениями генератора PizzaGAN всегда составляет только одну вершину, отсюда следует, что разница суммы элементов вектора классификации входных и выходных векторов меток также равна 1.

Дискриминатор - распознавание пиццы

Генераторы PizzaGAN покрывают все операции по добавлению и удалению начинки в пицце. Дискриминатор позаботится о том, чтобы определить, какие начинки на самом деле есть в пицце в настоящее время.

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

Например, на рисунке ниже дискриминатор PizzaGAN предсказал, что изображение пиццы содержит пепперони, грибы и оливки. Элементы выходного вектора, соответствующие этим покрытиям, при выводе предполагались равными 1,0 (или некоторому значению, превышающему установленный пользователем порог).

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

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

Полученные пиццы

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

Если вы хотите узнать больше о том, как работает PizzaGAN, я бы рекомендовал ознакомиться с оригинальной статьей, опубликованной на CVPR 2019!

Помимо этого, я оставляю вас с этой замечательной цитатой из газеты:

Пицца - самая фотографируемая еда в Instagram: более 38 миллионов публикаций с хэштегом #pizza.

Любите учиться?

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

Рекомендуемая литература

Хотите узнать больше о глубоком обучении? Книга Глубокое обучение с помощью Python научит вас выполнять настоящее глубокое обучение с помощью самой простой библиотеки Python: Keras!

И просто предупреждаю, я поддерживаю этот блог партнерскими ссылками Amazon на отличные книги, потому что обмен хорошими книгами помогает всем! Как партнер Amazon я зарабатываю на соответствующих покупках.