Подпишитесь на наш телеграмм канал про спорт и заработок

Нейросеть Рисует По Тексту

Нейросеть рисует по тексту

Пару дней назад мы подводили ИИ итоги 2020-го года в мире машинного обучения. 2021-й год только начался, но мы определенно видим одну из важнейших работ в области ИИ текущего года.

Итак, исследователи в области искусственного интеллекта из OpenAI создали нейронную сеть под названием DALL·E, которая генерирует изображения из текстового описания на естественном языке.


Если тебе интересно машинное обучение, то приглашаю в 
«Мишин Лернинг» — мой субъективный телеграм-канал об искусстве глубокого обучения, нейронных сетях и новостях из мира искусственного интеллекта.

DALL·E представляет собой версию GPT-3 с 12 миллиардами параметров, обученную генерировать изображения из текстовых описаний на датасете из пар текст-изображение. Исследователи обнаружили, что DALL·E обладает огромным репертуаром генеративных возможностей, включая возможность создания антропоморфных животных и других необычных объектов, комбинирующих совершенно нетривиальные свойства, например «кресло в форме авокадо.»

Изображения, сгенерированные DALL·E на основании текстового описания «кресло в форме авокадо»

Можно сказать, что уже были все предпосылки к созданию DALL·E: прошлогодний триумф GPT-3 и успешное создание Image GPT сети, способной к генерации изображений на основе текста, использующей языковую модель трансформер GPT-2. Все уже подходило к тому, чтобы создать новую модель, взяв в этот раз за основу GPT-3. И теперь DALL·E показывает невиданные доселе чудеса манипулирования визуальными концепциями с помощью естественного языка!

Как и GPT-3, DALL·E — это языковая модель-трансформер, принимающая на вход текст и изображение, как последовательность размером до 1280 токенов. Модель обучена максимизировать правдоподобие при генерации токенов, следующих один за другим.

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

Давайте посмотрим на примеры, которые говорят сами за себя. Исследователи утверждают, что не использовали ручной «cherry picking». Примерами являются изображения, полученные при помощи DALL·E, в которых используются 32 лучших примера из 512-ти сгенерированных, отобранных нейросетью нейронного ранжирования CLIP, созданную теми же OpenAI.

Text: a collection of glasses sitting on the table

Изображения, сгенерированные DALL·E

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

Text: an emoji of a baby penguin wearing a blue hat, red gloves, green shirt, and yellow pants

Эмодзи пингвиненка, одетого в голубую шапку, красные перчатки, зеленую футболку и желтые штаны

DALL·E может не только генерировать изображение с нуля, но и регенерировать (достраивать) любую прямоугольную область существующего изображения, вплоть до нижнего правого угла изображения, в соответствии с текстовым описанием. В качестве примера за основу взяли верхнюю часть фотографии бюста Гомера. Модель принимает на вход это изображение и текст: a photograph of a bust of homer

Text: a photograph of a bust of homer

Фотография бюста Гомера

Особенно поражает то, что DALL·E выучил исторический и географический контекст. Модель способна к обобщению тенденций в дизайне и технологиях. Вот пример того, как DALL·E генерирует телефонные аппараты разных десятилетий двадцатого века.

Text: a photo of phone from the …

Фотографии телефонов разных десятилетий XX века

DALL·E попросили сгенерировать изображение по следующему описанию: «гостиная с двумя белыми креслами и картиной Колизея, картина установлена ​​над современным камином». Как оказалось DALL·E может создавать картины на самые разные темы, включая реальные локации, такие как «Колизей», и вымышленных персонажей, таких как «йода». Для каждого объекта DALL·E предлагает множество вариантов. В то время как картина почти всегда присутствует на изображении, DALL·E иногда не может нарисовать камин или правильное количество кресел.

Text: a living room with two white armchairs and painting of the colosseum. the painting is mounted above a modern fireplace

Гостиная с двумя белыми креслами и картиной Колизея, висящей ​​над современным камином

Название модели DALL·E (DALL-E, DALL E) является словослиянием имени художника Сальвадора Дали и робота WALL·E от Pixar. Вышел такой своеобразный Вали-Дали. Вообще в мире ИИ «придумывание» таких оригинальных названий это некий тренд. Что определенно радует, и делает эту область еще более оригинальной.

Старый добрый перенос стиля WALL · E в Dalí

Для пущего сюрреализма и оправдания своего названия DALL·E «попросили» сгенерировать животных, синтезированных из множества понятий, включая музыкальные инструменты, продукты питания и предметы домашнего обихода. Хотя это не всегда удавалось, исследователи обнаруживали, что DALL·E иногда принимает во внимание формы двух объектов при решении о том, как их объединить. Например, когда предлагается нарисовать «улитку-арфу».

Text: a snail made of harp

Улитка-Арфа. Фантастические твари и где они обитают..

Вывод

DALL·E — это декодер-трансформер, который принимает и текст, и изображение в виде единой последовательности токенов (1280 токенов = 256 для текста + 1024 для изображения) и далее генерирует изображения авторегрессивном режиме. По-видимому, авторегрессивный режим работы трансформера создает дискретную репрезентацию в разрешении 32х32, после чего VQVAE предобученный энкодер-декодер «завершает генерацию» до разрешения 256×256. Оговорюсь, что последнее предложение — это мое предположение, нужно подождать выхода самого пейпера.

Что можно сказать? Наступает эра «великого объединения» языковых моделей, компьютерного зрения и генеративных сетей. То что мы видим сейчас, уже поражает воображение своими результатами, не говоря уже о том, насколько подобные подходы могут изменить процесс генерации контента.

Читайте еще:  Родком 1 с�Одержание

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

Полезные ссылки

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

Новая специализация TensorFlow: Advanced Techniques от deeplearning aiоснованной самим Andrew Ng

Нейронная Сеть CLIP от OpenAI: Классификатор, который не нужно обучать. Да здравствует Обучение без Обучения

Телеграм-канал «Мишин Лернинг»: субъективно об искусстве глубокого обучения, нейронных сетях и новостях из мира искусственного интеллекта.

YouTube-Лекция: Нейронные сети: как их создают и где применяют? Два часа о “самом главном”

Ну вот и все! Надеюсь, что материал оказался полезным. Спасибо за прочтение!

Что ты думаешь о DALL·E и подобных генеративных нейронных моделях, способных создавать визуальный контент по текстовому описанию? Где может быть полезна такая технология? Насколько тебя впечатлили результаты? Давай обсудим в

Нейросеть рисует по тексту

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

Нейросети ТОП-15 сайтов где можно протестировать искусственный интеллект Фото Rodion Kutsaev  unsplashcom

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

Нейронная сеть — это система, способная изменять свою внутреннюю структуру на основе поступающей информации. Их активно применяют для распознавания и синтеза речи и изображений.

1.Сгенерировать человека

Сгенерировать человека Скриншот httpsthispersondoesnotexistcom

Сайт ThisPersonDoesNotExist генерирует реалистичные лица несуществующих людей. Для создания нового изображения достаточно перейти на сайт и обновить страницу. В основе алгоритма лежит генеративная нейросеть StyleGAN от Nvidia. Разработчик — сотрудник Uber Филипп Ван.

2. Сгенерировать кота

Сгенерировать кота Скриншот httpsthiscatdoesnotexistcom

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

3. Создать персонажа аниме

Создать персонажа аниме Скриншот thiswaifudoesnotexistnet

Нейросеть умеет создавать новые лица персонажей аниме. На сайте каждые 15 секунд появляется новый персонаж и его история, также генерируемая искусственным интеллектом.

4. Создать гостиничный номер

Создать гостиничный номер Скриншот thisrentaldoesnotexistcom

Сайт генерирует несуществующие гостиничные номера с текстовым описанием.

5. Создать название и логотип компании

Создать название и логотип компании Скриншот namelixcom

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

6. Брендирование и логотип

Брендирование и логотип Скриншот lookacom

Еще один сайт looka.com, который генерирует лого для компаний. Помимо логотипов сайт также предлагает создание фирменного стиля и оформление сайта и соцсетей.

7. Удалить фон с фото

Удалить фон с фото Скриншот removebgru

Сайт remove.bg удаляет фон с любых фотографий. Достаточно загрузить изображение и нейросеть удалит фон вокруг объекта. Также можно заменить фон на другой из множества предложенных.

8. Обучить нейросеть

Обучить нейросеть Скриншот teachablemachinewithgooglecom

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

9. Выбрать фильм, музыку или книгу

Выбрать фильм музыку или книгу Скриншот gnodcom

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

10. Ретушь фото

Ретушь фото Скриншот nvidiacomresearchinpainting

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

11. Улучшение рисунка

Улучшение рисунка Скриншот autodrawcom

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

12. Распознавание образов

Распознавание образов Скриншот quick-drawru

Сайт-игра Quick Draw, где пользователь за ограниченное время рисует образ, а нейросеть должна распознать, что он имел в виду. Модель обучения улучшается с ростом угаданных изображений. Все данные остаются в публичном доступе.

13. Создание новостного выпуска

Создание новостного выпуска Скриншот dictormailru

Нейросеть от mail.ru, с помощью которой можно создавать новости в видеоформате прямо в браузере. Нужно только написать текст, выбрать диктора и фон.

14. Раскрасить черно-белое фото

Раскрасить черно белое фото Скриншот colorizecc

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

15. Поговорить с книгой

Поговорить с книгой Скриншот booksgooglecomtalktobooks

В Google создали сайт, на котором нейросеть отвечает на вопросы пользователя цитатами из книг. Она умеет обрабатывать абстрактные вопросы, такие как «в чем смысл жизни» и «что такое счастье». К сожалению, сервис не распознает вопросы на русском языке.

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

  • Новые специальности. ТОП-50 профессий будущего
  • Искусственный интеллект дописал за Бетховена 10‑ю симфонию. Сегодня премьера
  • Берлин запустит поезда с искусственным интеллектом
Читайте еще:  Вацуева Асет

Нейросеть Рисует По Тексту

Нейросеть рисует по тексту

Neural networks

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

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

Как было сгенерировано это изображение?

Изображение было сгенерировано при помощи архитектуры под названием CPPN (Compositional Pattern Producing Networks). Мой код имплементирует эту архитектуру при помощи PyTorch.

Один из способов создавать изображения при помощи нейронной сети — вывести целиком всю картину. Например, как в этом случае: нейронная сеть под названием “Генератор” принимает на вход случайные шумы и создаёт всё изображение в выходном слое (размера ширина*высота).

Нейросеть Рисует По Тексту

В противоположность этому, CPPN (архитектура, с которой мы будем работать) выводит каждый цвет на заданную позицию, которую принимает на вход.

Нейросеть Рисует По Тексту

Опустим z и r во входных данных и заметим, что сеть принимает как X и Y значения координат пикселя и выводит его цвет (обозначаемый как c). Так будет выглядеть PyTorch модель для этой сети.

def __init__(self):
        super(NN, self).__init__()
        self.layers = nn.Sequential(nn.Linear(2, 16, bias=True),
                                    nn.Tanh(),
                                    nn.Linear(16, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 3, bias=False),
                                    nn.Sigmoid())
        
    def forward(self, x):
        return self.layers(x)

Заметьте, что функция принимает на вход 2 значения, а возвращает 3 — RGB значения пикселя. Для создания всей картины нужно просто подать все координаты X и Y изображения нужного размера и присваивать пикселю полученное значение цвета.

Эксперименты с нейронной сетью

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

Нейросеть Рисует По Тексту
Если бы у меня были покупатели, я бы продал эту картину в два счёта.

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

Сначала подозрение пало на функцию tanh. Возможно, большое количество tanh в последовательных слоях приближало все выходные значения к 0.5 (что соответствует серому цвету). Однако, пост, на котором я основывался, тоже использовал tanh. Всё, что я делал — буквально преобразовывал нейронную сеть с JavaScript в PyTorch без каких-либо изменений.

В конце концов, мне удалось вычислить виновного. Вся проблема в том, как PyTorch инициализирует веса при инициализации самой сети. В PyTorch веса инициализируются случайно от -1/sqrt(N) до 1/sqrt(N), где N — число связей в слое. Тогда, если N=16 для скрытых слоёв, веса будут распределяться от -1/4 до 1/4. Моя гипотеза заключается в том, что такой маленький разброс весов будет давать почти одинаковые значения цвета.

Если все веса в сети были между -1/4 и 1/4, то при умножении на входные данные и сложении, возможно, происходил эффект, определённый центральными предельными теоремами.

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

Вспомним, как вычислялось значение на результирующих слоях.

Нейросеть Рисует По Тексту

В нашем случае, первый входной слой получал 2 значения: X и Y. В следующем скрытом слое 16 нейронов. То есть, каждый нейрон второго слоя получает 2 значения, умноженных на веса от -1/4 до 1/4. Они суммируются и передаются активирующей функции tanh, становясь новыми значениями для отправления третьему слою.

Теперь, от второго слоя, каждому из 16 нейронов третьего слоя посылается 16 входных значений. Обозначим каждое из этих значений буквой z. Тогда значение, передаваемое каждому нейрону третьего слоя будет таким:

Нейросеть Рисует По Тексту

Выдвинем ещё одно предположение. Из-за того, что разброс весов мал, значения z (которые являются входными X и Y, умноженными на веса и переданными через функцию tanh) тоже будут мало отличаться. Тогда формулу можно переписать в таком виде:

Нейросеть Рисует По Тексту

И, скорее всего, сумма 16 весов от -0.25 до 0.25 для каждого нейрона будет стремиться к нулю. Даже если на первом слое сумма не была близка к нулю, 8 слоёв нейронной сети делают вероятность получения нулевой суммы достаточно высокой. Следовательно, вне зависимости от входных значений X и Y, сумма значений, передаваемых нейронам последующих слоёв (сумма весов * входные данные), будет стремиться к нулю. Tanh будет приравнивать их к нулю, поэтому во всех последующих слоях эти значения остаются нулевыми.

Нейросеть Рисует По Тексту
Значения по оси X — входные данные tanh, по оси Y — выходные. Заметьте, что tanh(0) = 0

Что же является причиной получения серого цвета? Sigmoid (функция последнего слоя) всегда получает 0 в качестве входного значения, которое сопоставляется 0.5 (0.5 — серый, 0 — чёрный, 1 — белый).

Нейросеть Рисует По Тексту
Заметьте, что Sigmoid(0) = 0.5

Как исправить серый квадрат?

Как мы определили, виновником оказался маленький разброс весов. Следующим логичным шагом будет увеличить его. Я изменил инициализацию, задав разброс весов от -100 до 100. Запуск нейронной сети дал мне вот такой результат:

Нейросеть Рисует По Тексту
Вуаля! Серый квадрат стал цветным.

Прогресс очевиден, значит, моя гипотеза оказалась верной.

Читайте еще:  Бумажный Дом 6 Сезон Дата Выхода

Однако, сгенерированное изображение слишком простое.

Наша нейронная сеть умножает входные значения на веса, отправляет их функции tanh и выводит цвет при помощи функции sigmoid. Мне уже удалось решить проблему с весами, могу ли я что-то изменить, чтобы сделать выходное изображение более интересным?

Заметим, что изображение выше было сгенерировано функцией, принимающей на вход данные X,Y — координаты пикселя от 0,0 до 128х128 (так как размер картинки — 128 на 128). Это значит, что моя сеть не получала на вход, например, отрицательные значения. Также, tanh получала на вход либо очень большие, либо очень маленькие значения, которые приводились к 1 или к -1. Поэтому в качестве выходных значений пикселей чаще всего получались базовые цвета. Например, полученный голубой в RGB будет представляться как (0, 1, 1).

Как сделать изображения интереснее?

Как и в оригинальном посте, на который я ориентировался, я решил нормализовать X и Y. Теперь, вместо того, чтобы подавать на вход X, я подавал (X/размер_изображения)-0.5. Тогда, вне зависимости от размера изображения, мои X и Y всегда оставались ограниченными -0.5 и 0.5. Таким способом я получил вот это изображение:

Нейросеть Рисует По Тексту
Прогресс!

Интересно, что на предыдущем изображении линии увеличивались к нижнему правому углу, потому что значения X и Y увеличивались. Здесь, благодаря тому, что значения нормализованы, секторы цветов расширяются к краям изображения.

Тем не менее, картина всё ещё далека от той, которую хотелось бы увидеть.

Как сделать изображение ещё более интересным?

Если приглядеться, можно заметить, что центр картины отличается от краёв — он выглядит гораздо интереснее. Это подсказка от богов математики: нам нужно приблизить центр для получения чего-то большего.

Есть три способа это сделать:

  • Создать изображение больше. Координаты пикселей нормализуются, поэтому мы просто можем запустить нейронную сеть для изображения с большим разрешением и вырезать центр полученной картины.
  • Умножить значения X и Y на небольшое число (зум-фактор), что сделает почти то же самое, что и предыдущий способ, за исключением того, что нам не нужно будет обрезать результирующее изображение
  • Так как выходная картинка определяется входными данными, умноженными на вектор весов, вместо того, чтобы уменьшать входные данные, мы можем уменьшить значения весов от (-100, 100) до, например, (-3, 3). Однако, помните о том, что происходило, когда веса варьировались от -0.25 до 0.25.

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

Нейросеть Рисует По Тексту
Я зову это нейро-Мондрианом

А вот что вышло, когда я решил применить третий метод и инициализировал весы в промежутке (-3, 3):

Нейросеть Рисует По Тексту
Вы до сих пор не удивлены?

Больше экспериментов

Я изменил инициализацию весов на нормальное распределение (среднее значение между 0 и стандартным отклонением от 1) и сгенерировал несколько изображений.

Нейросеть Рисует По Тексту
Нейросеть Рисует По Тексту
Нейросеть Рисует По Тексту

Затем я убрал все скрытые слои:

Нейросеть Рисует По Тексту
0 скрытых слоёв

Затем оставил 1 скрытый слой вместо 8 по умолчанию:

Нейросеть Рисует По Тексту
1 скрытый слой

И, наконец, результат 16 скрытых слоёв:

Нейросеть Рисует По Тексту
16 скрытых слоёв с 16 нейронами на каждом

Как вы видите, изображение становится всё более сложным с увеличением количества скрытых слоёв. Мне стало интересно, что получится, если вместо удвоения количества слоёв я увеличу количество нейронов в слоях (с 16 до 32). Вот что получилось:

Нейросеть Рисует По Тексту
8 скрытых слоёв, 32 нейрона на каждом слое

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

Всё это, несомненно, говорит о том, что глубина делает нейронные сети более сложными.

Сложность вычисляемой функции экспоненциально растёт с ростом глубины.

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

Интересные эксперименты без особого смысла

Что произойдёт, если увеличить количество нейронов каждого слоя с 8 до 128?

Нейросеть Рисует По Тексту
Нейро-Поллок!

Что, если мы начнём со 128 нейронов на каждый скрытый слой, но каждый последующий слой мы будем уменьшать их количество?

self.layers = nn.Sequential(nn.Linear(2, hidden_n, bias=True),
                                    nn.Tanh(),
                                    nn.Linear(128, 64, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(64, 32, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(32, 16, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(16, 8, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(8, 4, bias=False),
                                    nn.Tanh(),
                                    nn.Linear(4, 3, bias=False),
                                    nn.Sigmoid())

Вот что вышло:

Нейросеть Рисует По Тексту
Выглядит гораздо естественнее остального

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

Или, можно объединить изображения, созданные нейронной сетью и философские цитаты, сгенерированные при её же помощи.

Нейросеть Рисует По Тексту
Моя нейросеть — стоик

Перевод статьи Paras Chopra: Making deep neural networks paint to understand how they work

Оцените статью
( Пока оценок нет )

Андрей Шутько, журналист и репортер Anticwar.ru. Об армии он пишет более 15 лет. Несколько раз он был военным корреспондентом в Афганистане.

andreyshutko7@gmail.com