Нейросеть как услуга. Онлайн-сервисы по стилизации изображений. Картины нейросети


Нейросеть создаёт картины в стиле знаменитых художников ≪ Scisne?

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

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

Стилизация под конкретного автора происходит на этапах d, e.

Стилизация под конкретного автора происходит на этапах d, e.

В статье приведены примеры работ в стиле Винсента Ван Гога, Пабло Пикассо, Эдварда Мунка, Василия Кандинского. Нейросеть обрабатывала фотографии в определенном стиле, получая максимально похожие изображения на знаменитые картины.

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

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

Оригинал

Оригинал

Результат работы нейросети

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

Похожее

  • Горбань А. Н.

    Игрушка ли нейрокомпьютер? В чем истинные преимущества нейрокомпьютеров? В каких областях преимущества нейронных систем наиболее очевидны? Избыточность — это хорошо или плохо? Какие задачи под силу только нейрокомпьютеру?

  • Впервые был достигнут масштаб, соответствующий человеческому мозгу — 530 миллиардов нейронов и 137 триллионов синапсов. Симуляция происходила в 1542 раза медленнее реального времени. В ней были задействованы все 1 572 864 ядер и полтора петабайта памяти.

  • У архитектуры фон Неймана есть один известный минус, который состоит в том, что и данные, и программы-инструкции, описывающие то, что нужно сделать с данными, находятся в одной и той же памяти. И процессор либо собирает данные из памяти, либо манипулирует ими в соответствии с командой. Одновременно подгружать новые данные и обрабатывать их в рамках такой схемы нельзя. Из-за этого современным компьютерам, сколь бы быстры они ни были, трудно выполнять некоторые задачи, например, связанные с распознаванием изображений. Пытаясь выйти за пределы архитектуры фон Неймана, специалисты по «электронным мозгам» обратились к мозгам настоящим.
  • Такие нейросети состоят из 10–30 связанных слоев, которые работают последовательно: получив картинку, они анализируют ее и «сообщают» результаты анализа следующему слою. Например, первые слои могут искать на изображении края и углы, средние — интерпретировать наборы особенностей в отдельные объекты (например, двери или листья). Наконец, финальные слои объединяют все эти интерпретации воедино и делают выводы о том, что изображено на картинке — например, здание или дерево.
  • Бурцев М. С.

    Очень часто люди не задумываются, почему они придерживаются той или иной точки зрения. Так сегодня значительная часть исследователей и инженеров, занимающихся адаптивными системами, a priori придерживаются принципа "бытие определяет сознание", а, следовательно, и действия. Этот наивный взгляд на вещи, предполагает, что обучение состоит в нахождении закономерностей в том потоке информации, который доступен из наблюдения, поступает на вход системы. Естественно, что при таком подходе модель системы, обладающей адаптивным поведением, будет представлять собой некоторое отображение множества входных данных на множество выходов, управляющих поведением системы. При этом обучение, адаптивность поведения обычно обеспечивается детерминированными алгоритмами, изменяющими функцию отображения. Использование таких принципов, позволяет быстро создавать приемлемые модели адаптивных систем, которые обеспечивают достаточно гибкое поведение в среде, на которую рассчитывал конструктор. Однако, при соприкосновении с неожиданными изменениями среды, с необходимостью использования нестандартных ходов, такая "отражательная" детерминированная схема пасует. Как же создать действительно адаптивную систему?

  • Евгений Путин

    Евгений Путин, аспирант кафедры «Компьютерные Технологии» университета ИТМО. В рамках диссертации Евгений исследует проблемы интеграции концепции выбора признаков в математический аппарат искусственных нейронных сетей. Евгений расскажет о том, как устроены нейронные сети, что они могут делать сейчас, на что будут способны в недалеком будущем и ждать ли прихода Скайнета.

  • Нейрофизиологи впервые детально описали механизм, с помощью которого человеческий мозг распознает лица. Оказалось, что принцип его работы похож на распознавание более простых характеристик, таких как цвета и формы объектов. За каждую конкретную черту отвечают свои нейроны, и их комбинированный сигнал позволяет человеку проанализировать увиденное и выяснить, например, знакомо ему это лицо или нет. При этом установить, что именно мозг считает «чертой», ученые смогли лишь в процессе машинного обучения.
  • Чурсин Н. Н.

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

  • Алексей Потапов

    Искусственный интеллект всегда рассматривался в рамках «биологической метафоры» — как аналог человеческого интеллекта. Однако создаваемые сейчас искусственные интеллектуальные системы, которые превосходят человека при решении самых разных задач, нисколько не похожи на человека. Это относится даже к таким биологически инспирированным подходам, как искусственные нейронные сети. Я расскажу о том, как сейчас ученые в области ИИ определяют понятие интеллекта, какие проблемы стоят на пути построения мыслящих машин, и нужна ли или вредна для их преодоления «биологическая метафора».

Далее >>>

scisne.net

Нейросеть как услуга. Онлайн-сервисы по стилизации изображений / Хабр

Недавно в Open Source выложили предварительно обученную нейросеть, которая умеет генерировать изображения, взяв за основу образец стиля с другого изображения. Таким образом, из карандашного наброска можно создать художественный шедевр в стиле Ренуара или Моне. Технология основана на свёрточной нейросети, разработанной в прошлом году в университете Тюбингена (о которой тоже рассказывали на Geektimes). Она правдоподобно подделывает художественный стиль известных художников, принимая на вход для обработки любые фотографии.

Интересные научные исследования привели к тому, что сейчас в интернете открылось несколько сервисов, рассчитанных на массовую публику. Не нужно теперь устанавливать Python 3.4+, библиотеки, скачивать нейросеть и настраивать окружение на локальном ПК, просто загружаем на сервер фотографии — и получаем результат. Один из таких сайтов — Instapainting. На сайт нужно закачать фотографию для «раскрашивания», а потом образец стиля. Процедура ресурсоёмкая, так что обработка занимает до несколько минут.

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

Instapainting зарабатывает на продаже картин, которые рисует профессиональный художник по фотографии клиента.

Российский клон — Ostagram. В галерее встречаются довольно красивые работы.

Бесплатная версия генерирует изображения не более 600 пикселов по длинной стороне с одним проходом фильтра. В платной версии — до 1000 итераций. Есть услуга печати изображений на холсте.

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

habr.com

от инцепционизма к искусству будущего

Новый адрес страницы:https://tannarh.wordpress.com/2015/10/10/нейросети-от-инцепционизма-к-искусст/

Предчувствие грядущего

В 1993 году я увидел по телевизору клип на песню Питера Габриэля "Steam", созданный с использованием весьма продвинутой на тот момент компьютерной графики. Компьютерные спецэффекты уже не были чем-то принципиально новым, хотя и вызывали восторг у большинства постсоветских зрителей, лишенных возможности наблюдать их постепенную эволюцию от «Звездных войн» и «Трона» до «Терминатора 2» и «Газонокосильщика». Счастливые обладатели видеомагнитофонов, к коим принадлежал и я, смотрели все сразу без какой-либо хронологической последовательности. И все же клип Габриэля концептуально отличался от увиденного мною прежде.

Peter Gabriel Steam (1992), James Cameron Avatar (2009)Peter Gabriel "Steam" (1992), James Cameron "Avatar" (2009)

В вышедшем годом ранее втором «Терминаторе», равно как и во многих других тогдашних голливудских фильмах, компьютерная графика использовалась лишь в качестве спецэффектов, дополняющих привычную реальность. Однако в "Steam" с ее помощью был создан целый мир со своими персонажами, никоим образом не пересекающийся с действительностью, как, скажем, в «Газонокосильщике», где виртуальная реальность существовала внутри реального мира в качестве компьютерной модели.

Конечно, графика 1992 года была донельзя примитивной и привлекала внимание скорее своей необычностью, нежели мастерством исполнения, и все же, помню, я подумал, что у этой технологии есть огромный потенциал, который изменит все наши представления о кинематографе и искусстве вообще. Спустя всего семнадцать лет (пустяковый по историческим меркам срок) Джеймс Кэмерон снял фильм «Аватар», объединив фантазию и технологии в демиургическом акте творения новой вселенной. И даже сейчас, по прошествии более чем двух десятилетий после "Steam" и «Газонокосильщика», потенциал компьютерных технологий еще не раскрыт в полной мере ни в кинематографе, ни в других сферах человеческой деятельности. Когда-нибудь «Аватар» будут смотреть с той же вежливой снисходительностью, с какой мы сегодня пересматриваем старые фантастические фильмы начала 90-х, и эта история будет повторяться снова и снова, хотя сама компьютерная графика уже не будет пробуждать в душе ощущение чуда.

Ощущение чуда и гигантского потенциала, скрытого за примитивной на вид игрой образов, вернулось ко мне летом 2015-ого, когда новостные ленты наперебой начали сообщать о последних успехах ученых в разработке искусственных нейронных сетей, и я снова подумал, что сам того не ведая, прикоснулся к будущему, которое в скором времени кардинальным образом изменит наши взгляды на искусство и сам процесс творчества. А начнется все, пожалуй, с этой небольшой анимации, напоминающей фильм «Помутнение» (2006) с Киану Ривзом:

Первые успехи

Одно из главных преимуществ искусственных нейронных сетей перед обычными алгоритмами заключается в том, что их не программируют, а обучают. Структурно они похожи на нейронные сети живых организмов и представляют собой систему соединенных и взаимодействующих между собой искусственных нейронов, способных принимать решения на основе полученной информации и решать весьма сложные задачи. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение. Кроме того, некоторые исследователи задумываются о возможности развития психологической интуиции у нейросетей и о построении на их основе компьютерных моделей естественного интеллекта.[1]

Что все это означает на практике? Вот лишь некоторые из новостей последних лет:

 

«Недавно разработчики добавили функцию визуального перевода в Google Translate. Теперь приложение может при помощи камеры на лету переводить надписи на 27 языках даже без подключения к интернету. Об этом сообщается в официальном блоге Google. Специалисты Google тренировали нейросеть на изображении букв и цифр, которые в различной степени намеренно искажали. После этого разработчики Google намеренно «ослабили» сложность нейросети, занимающейся распознаванием букв. Например, нейросеть не будет распознавать перевернутые набок надписи или совсем искаженные буквы.

Искаженные буквы, использованные при обучении нейросети. Изображение: GoogleИскаженные буквы, использованные при обучении нейросети.Изображение: Google

После того, как нейросеть распознала буквы, приложение составляет из них слово и проверяет его через загруженные в память телефона словари. При этом учитывается визуальная схожесть символов, поэтому приложение, например, при распознавании последовательности символов «5uper» проверит в словаре не только его, но и «Super».[2]

 

«Facebook опубликовала научную работу, описывающую созданную исследователями компании систему распознавания лиц при помощи глубокого обучения (deep learning). По точности узнавания она вплотную приблизилась к человеческим способностям.

До сих пор люди различали лица из этого набора куда лучше, чем это делают машины. В 97,53% случаев они верно узнавали фотографии, изображающие одного человека. Алгоритм Deepface отстаёт совсем немного: его точность составляет 97,25%. При этом не играет роли, с какого ракурса сделан снимок и совпадает ли освещённость.

Распознавание происходит в два этапа. На первом Deepface накладывает лицо с фотографии на трёхмерную модель средней человеческой головы, а потом разворачивает её в том же направлении, что и на других портретах. Затем к работе подключается заранее обученная многослойная нейронная сеть и даёт лицу числовое описание. Если описания двух лиц совпадают, они, как правило, принадлежат одному человеку. Нейронная сеть состоит из девяти слоёв нейронов, между которыми проходят 120 миллионов связей. Сеть обучали на четырёх миллионах портретах, принадлежащих примерно четырём тысячам пользователей Facebook».[3]

 

«Ученые из Технологического института Карлсруэ разработали алгоритм, способный опознать человека по инфракрасному изображению низкого разрешения. Результаты исследования опубликованы на сайте arXiv.org, с кратким описанием можно ознакомиться в MIT Technology Review.

Сопоставление фотографии и ИК-изображения человекаСопоставление фотографии и ИК-изображения человека.Изображение: M. Saquib Sarfraz, Rainer Stiefelhagen / Institute of Anthropomatics & Robotics Karlsruhe institute of Technology Karlsruhe

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

Создатели обучили нейросеть на базе изображений Университета Нотр-Дам. В базе были данные по 82 людям, 4585 изображений среди которых были обычные фотографий разрешением 1600x1200 и инфракрасные изображения разрешением 312x239. При этом снимки были сделаны в разные времена года и люди вели на разных фотографиях себя по-разному: улыбались, смеялись, наклоняли голову и тому подобное. Исследователи посчитали, что в таких условиях алгоритм сможет лучше распознавать человеческое лицо вне зависимости от того, в какой момент получено ИК-изображение.

В итоге ученые использовали данные половины базы, по 41 человеку, чтобы натренировать нейросеть. Вторую группу изображений авторы работы использовали для проверки функционирования нейросети. В итоге алгоритм показал точность распознавания на 10% выше, чем в результатах аналогичных работ, при этом на распознавание человека у машины уходит всего 35 миллисекунд».[4]

 

«Греческие ученые научились определять пьяных людей по инфракрасному изображению. Исследование опубликовано в Forensic Science International. Исследователи из Университета Патры обучали нейросети на примере 41 человека, сравнивая инфракрасное изображение лиц испытуемых до и после употребления 480 миллилитров вина. При этом разные нейросети анализировали разные участки лица.

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

Сравнение одной из зон лица до и после употребления алкоголяСравнение одной из зон лица до и после употребления алкоголя.Изображение: Georgia Koukiou et al. / Forensic Science International

Предполагается, что исследование может помочь полиции выявлять потенциальных нарушителей общественного порядка при помощи инфракрасных камер. Алгоритм также может лечь в основу систем предупреждения вождения в состоянии алкогольного опьянения»[5].

Инцепционизм

Распознавание лиц имеет сугубо прагматическое значение, например, с помощью этой технологии можно искать преступников в больших городах или организовать тотальную слежку за населением, однако настоящий концептуальный прорыв совершила компания Google, создатели которой, кстати, с самого начала не скрывали, что ставят своей целью создание искусственного интеллекта. Вполне возможно, что объединение их разработок с последними достижениями купленной Гуглом в 2013 году компании Boston Dynamics в области робототехники могут привести к весьма любопытным, хотя и пугающим результатам. Сегодня корпорация Google занимается сканированием книг по всему миру, и если однажды она пропустит все накопленные человечеством знания через достаточно мощную нейронную сеть, то в результате мы можем получить технологию, способную перевернуть все наши представления о творчестве и создании произведений искусства. Искусство станет персональным, адаптивным и свободным, что повлечет за собой огромные экономические и социальные изменения.

 

«Инженеры Google Александр Мордвинцев, Крисофер Ола и Майк Тика визуализовали работу 22-слойной сверточной нейросети, которая составляет основу системы распознавания изображений Inception. Изображения, которые получились в результате «переворачивания системы с ног на голову», исследователи назвали «инцепционизмом». О методе получения таких изображений они рассказали в блоге Google Research.

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

Результат нескольких итераций полностью случайного изображенияРезультат нескольких итераций полностью случайного изображения.Изображение: MIT Computer Science and AI Laboratory

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

Результат нескольких итераций полностью случайного изображенияРезультат нескольких итераций полностью случайного изображения.Изображение: MIT Computer Science and AI Laboratory

Как и ожидалось, нижние уровни сети находили в исходной картинке простые геометрические черты: наклонные линии, круги и так далее. Слои высокого уровня позволяли увидеть на фотографиях что-то напоминающее людей и животных. С помощью нескольких итераций инженерам удалось получить целые абстрактные картины, стартовав при этом с полностью случайного изображения (строго говоря, изображения не были белым шумом, так как ученым пришлось нормализовать корреляцию между соседними пикселями до типичных значений «обычных изображений»).

Работа сделана на базе архитектуры Inception, по которой в Google построена сверточная нейронная сеть 22 уровнями GoogLeNet. Именно ее инженеры использовали для получения изображений. Ранее тот же подход к визуализации работы нейросетей неоднократно применяли и другие исследователи, однако в их распоряжении не было настолько масштабной системы. Описание системы Inception было опубликовано еще в сентябре прошлого года.

Интересно, что по современным данным нейрофизиологии распознавание изображений мозгом устроено очень похоже: «появление» объекта на картине зависит от порога чувствительности, на который влияют, например, галлюциногены или сенсорная депривация»[6].

 

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

Это нужно для того, чтобы понять научилась ли нейронная сеть распознавать тот или иной образ. Например, её обучали узнавать вилку по определенным характеристикам: 2-4 зубца и ручка. При этом форма и цвет предмета не должны влиять на решение.

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

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

Если для интерпретации выбрать более продвинутый слой, то сеть постарается найти в картинке те образы, на которых тренировалась. На вход нейронной сети, которая обучалась на фотках животных подали изображение облаков.

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

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

Техника обратного рисования дает разработчикам оценить качество распознавания того или иного слоя. Сами разработчики называют эту технику «Inceptionism» (инцепционизм)».[7]

Нейроарт и «игра в бисер»

«Коллектив ученых из Германии разработал искусственную нейронную сеть, которая позволяет «синтезировать» изображение из двух независимых источников: одно из них дает только содержание, другое — только стиль. На основании этого метода авторы обработали фотографию с пейзажем немецкого города Тюбинген, используя стили нескольких знаменитых картин, например «Звездную ночь» Винсента ван Гога и «Крик» Эдварда Мунка. Препринт с описанием работы выложен на arXiv.org.

В основе метода лежит обучение сверточных нейронных сетей на двух различных изображениях и последующее слияние полученных наборов признаков в один. Авторы показали, что содержание и объекты лучше удается описать при помощи крупных слоев нейронной сети, захватывающих большие участки изображения. Однако для описания стиля наоборот, лучше использовать данные слоев сети, которые описывают с локальными участками изображения.

Ученые использовали в работе популярную нейронную сеть VGG-Network. Вначале ее «обучали» на единственной фотографии — пейзаже город Тюбинген, а затем на одной из картин, например, «Звездной ночи». При этом в первом случае набор признаков выбирался с целью распознавания объектов на фотографии, а во-втором — для распознавания текстуры и мелких деталей. Далее при помощи линейной комбинации этих наборов признаков ученые синтезировали новую картинку, по шагам изменяя «исходник» — изображение, где каждый пиксель генерировался при помощи белого шума.

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

Пейзаж города Тюбинген, обработанный в нескольких разных стиляхПейзаж города Тюбинген, обработанный в нескольких разных стилях.Изображение: Leon A. Gatys et al./ arXiv.org

Более того, поскольку система в некотором роде «осмысливает» фотографию и технику художника, в ней можно задать степень выраженности оригинального произведения, с которого она передирает стилистику. Например, так выглядит переход от оригинала Кандинского к пейзажу, сделанному под него:

arXiv / A Neural Algorithm of Artistic Style / Gatys, et alarXiv / A Neural Algorithm of Artistic Style / Gatys, et al

Новую работу уже опробовал аспирант Стэндфордского университета Андрей Карпатый, который в своем твиттере выложил несколько фотографий, обработанных таким образом. Среди них, например, его портрет в стиле Винсента ван Гога, а также снимок Гэндальфа (Иэна Маккелена) из «Властелина колец» в стиле Пабло Пикассо». [8]

Фотография Иэна Маккеллена в роли Гэндальфа, обработанная в стиле Пабло ПикассоФотография Иэна Маккеллена в роли Гэндальфа, обработанная в стиле Пабло Пикассо.Изображение: Andrej Karpathy / Twitter

 

«Феликс Сунь (Felix Sun), студент из Массачусетского технологического института, создал нейронную сеть, которая способна достраивать мелодию аккордами на основе предварительно «выученного» жанра. В качестве демонстрации автор обучил сеть на подборке регтаймов Скотта Джоплина, а затем использовал ее для аранжировки, например оды «К радости» Бетховена. Сама работа подробно описана в блоге программиста, а исходный код выложен на GitHub.

Нотная запись аранжировки, созданной при помощи DeepHearНотная запись аранжировки, созданной при помощи DeepHear.Изображение: Felix Sun / web.mit.edu/felixsun/www

Программа, которая получила название DeepHear, представляет собой глубокую байесовскую сеть (deep belief network). Такая разновидность искусственных нейросетей часто используется для распознавания данных, например, изображений. Однако, в отличии от этой задачи, использовался автокодирующий вариант: сеть не только сводила входящие данные к меньшему числу измерений (от примерно 5000 бит к 16), но и решала обратную задачу, стремясь как можно точнее воспроизвести «образец».

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

Название «DeepHear», вероятно, выбрано созвучным с «DeepDream» — нейросети от Google, которая на основе заданного изображения создает новую картинку, где все объекты дополнены определенными шаблонами (лицами и глазами). DeepHear, по сути, делает то же самое, но с музыкой. В будущем Феликс планирует использовать более совершенные методы обучения, а также перейти от «виртуального композиторства» к генерации естественных звуков при помощи нейросетей».[9]

Personal Art

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

К сожалению треки в стиле Beatles получились недостаточно хорошими, поэтому вы заходите на сайт, где люди со всего мира делятся друг с другом сгенерированным контентом и просматриваете первые строчки чартов. Композиция Чайковский+Rammstein с легкой стилизацией под китайскую музыку кажется вам слишком эклектичной, а вот новая песня в стиле Pink Floyd времен "The Dark Side Of The Moon" получилась просто прекрасной.

Утром вас ждет не только чашка ароматного кофе, но и статья Черчилля о недавних событиях в Афганистане, сдобренная изрядной порцией английского юмора, а в блоге Ницше — несколько хлестких афоризмов о внешней политике текушего правительства. В новостях сообщают о новой выставке работ Сальвадора Дали, отобранных профессиональными критиками и искусствоведами из нескольких тысяч работ, присланных на конкурс счастливыми обладателями платной подписки на нейросеть "Dali" от компании Microsoft. Пожалуй, можно будет сходить на выходных, тем более что эта разработка редмондовцев вам пока не по карману, да и в общем-то ни к чему, потому что живописью вы не увлекаетесь.

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

Tannarh, 2015 г.

[1] https://ru.wikipedia.org/wiki/Искусственная_нейронная_сеть [2] https://nplus1.ru/news/2015/07/30/google-translate-27 [3] http://www.computerra.ru/96497/deepface/ [4] https://nplus1.ru/news/2015/0hil7/25/deep-neural-infrared [5] https://nplus1.ru/news/2015/05/05/alabama-song [6] https://nplus1.ru/news/2015/06/19/backprop, https://nplus1.ru/news/2015/07/13/use, https://meduza.io/galleries/2015/06/19/intseptsionizm [7] http://habrahabr.ru/company/io/blog/262267/ [8] https://nplus1.ru/news/2015/08/31/like-van-Gogh, https://slon.ru/posts/56202 [9] https://nplus1.ru/news/2015/09/16/deephear

Порядок вывода комментариев: По умолчаниюСначала новыеСначала старые

tannarh.narod.ru

Анализируем изображения с помощью нейронных сетей

В курсе “Глубокое обучение на Python” мы научились обучать нейронные сети для распознавания рукописных цифр и объектов из набора данных CIFAR-10. Давайте посмотрим, как применять эти нейронные сети для анализа своих изображений.

Распознавание рукописных цифр

Начнем с распознавания рукописных цифр. Читатели прислали мне несколько отсканированных картинок с рукописными цифрами. Вот одна из них:

Для распознавания рукописных цифр воспользуемся сверточной нейронной сетью.

Keras содержит специальный модуль для работы с изображениями, который называется image. С его помощью можно быстро загрузить изображение из файла и преобразовать его в массив numpy, который мы можем передать модели для распознавания:

import numpy as np from keras.preprocessing import image # Загружаем изображение img_path = '2.png' img = image.load_img(img_path, target_size=(28, 28), grayscale=True) # Преобразуем изображением в массив numpy x = image.img_to_array(img) # Инвертируем и нормализуем изображение x = 255 - x x /= 255 x = np.expand_dims(x, axis=0)

Загружаем из файла обученную сверточную нейронную сеть:

json_file = open("mnist_model.json", "r") loaded_model_json = json_file.read() json_file.close() loaded_model = model_from_json(loaded_model_json) loaded_model.load_weights("mnist_model.h5")

Компилируем модель перед использованием

loaded_model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])

Теперь мы готовы к распознаванию цифры. Для распознавания вызываем метод модели predict:

prediction = loaded_model.predict(x)

Модель выдает массив из 10 значений в формате One Hot Encoding. Выбираем индекс максимального значения и печатаем его:

print(np.argmax(prediction))

[2]

Распознавание объектов на изображениях

Давайте рассмотрим более сложную задачу - распознавание объектов на изображении. Будем использовать нейронную сеть, обученную на наборе данных CIFAR-10. Попробуем распознать картинку самолета, которую сеть не видела в процессе обучения:

Загружаем изображение в Keras:

import numpy as np from keras.preprocessing import image img_path = 'plane.jpg' img = image.load_img(img_path, target_size=(32, 32))

В отличие от рукописных цифр, в этот раз изображение цветное и его размер 32х32, в соответствии с форматом CIFAR-10. Преобразуем картинку в массив numpy:

x = image.img_to_array(img) x /= 255 x = np.expand_dims(x, axis=0)

Загружаем сеть, обученную на наборе данных CIFAR-10, и компилируем модель:

json_file = open("cifar10_model.json", "r") loaded_model_json = json_file.read() json_file.close() loaded_model = model_from_json(loaded_model_json) loaded_model.load_weights("cifar10_model.h5") loaded_model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

Запускаем распознавание объекта:

prediction = loaded_model.predict(x)

Для удобства вывода задаем список с названиями классов объектов:

classes=['самолет', 'автомобиль', 'птица', 'кот', 'олень', 'собака', 'лягушка', 'лошадь', 'корабль', 'грузовик']

Печатаем результат распознавания:

print(classes[np.argmax(prediction)])

[самолет]

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

Давайте попробуем дать нейронной сети более сложную задачу - распознать не фотографию объекта, а рисунок. Например, вот такой рисунок лошади:

Запускаем программу и получаем результат:

[лошадь]

Нейронная сеть сумела распознать объект даже на рисунке, хотя мы обучали ее только на фотографиях!

Итоги

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

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

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

  1. Курс “Глубокое обучение на Python”.
  2. Сверточная нейронная сеть для распознавания рукописных цифр.
  3. Сверточная нейронная сеть для распознавания объектов из набора данных CIFAR-10.
  4. Сохранение обученных нейронных сетей.

www.asozykin.ru

Художник от Google. Искусственный интеллект научился писать картины

В блоге Google опубликован рассказ группы исследователей о том, как искусственные нейронные сети научили писать свои картины. Для этого использовались нейросети, предназначенные для распознавания изображений: получив фотографию или рисунок, они выясняют, какие именно объекты на ней изображены. Такие нейросети состоят из 10–30 связанных слоев, которые работают последовательно: получив картинку, они анализируют ее и «сообщают» результаты анализа следующему слою. Например, первые слои могут искать на изображении края и углы, средние — интерпретировать наборы особенностей в отдельные объекты (например, двери или листья). Наконец, финальные слои объединяют все эти интерпретации воедино и делают выводы о том, что изображено на картинке — например, здание или дерево. Чтобы получать «картины», исследователи заставляют работать нейронные сети задом наперед: они показывают сети случайный шум и просят «улучшить» его таким образом, чтобы на выходе получилась определенная интерпретация. Например, если попросить нейросеть «найти» в шуме банан, муравья или морскую звезду, та действительно подкорректирует изображение, чтобы в нем проявились узнаваемые черты.Шум превращается в бананы.

Цель этого процесса — понять, правильно ли нейросеть интерпретирует те или иные объекты. Дело в том, что нейронные сети обучаются на большом количестве примеров. Можно показать им тысячу фотографий вилок, чтобы они определили нужные характеристики (ручка, четыре зубчика) и научились игнорировать лишние (цвет, форма, положение). И в будущем, если «попросить» нейросеть нарисовать вилку, можно увидеть, насколько хорошо она усвоила «урок». Например, с гантелей одна из таких сетей не справилась: по-видимому, на всех фотографиях, которые ей показывали, гантели были изображены вместе с держащими их руками. Поэтому в собственном «творчестве» нейросеть тоже постаралась изобразить гантели с руками.

Шум превращается в неправильные гантели.

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

Фото: вверху Zachi Evenor / Flickr / CC BY 2.0, внизу Günther Noack / Google

А ниже — пример того, что получится, если скормить картинку более «продвинутым» слоям нейронной сети, которые ищут целые объекты на картинках. Разработчики как бы говорят нейросети: «Что бы ты ни увидела, мы хотим побольше этого!». В результате, если сети покажется, что облако похоже на птицу, она сделает его еще более похожим.

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

Слева направо: Бабочка-пес, свинья-улитка, верблюд-птица и собака-рыба. Иллюстрация: Google

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

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

Все иллюстрации: MIT Computer Science and AI Laboratory / Google

klikabol.com

Нейросеть создаёт картины в стиле Ван Гога и Пикассо / Хабр

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

Новый эксперимент, проведённый в университете Тюбингена (Германия) демонстрирует альтернативный алгоритм для нейросети: она правдоподобно подделывает художественный стиль Винсента Ван Гога, Пабло Пикассо, Эдварда Мунка и любых других художников. На вход для обработки подходят любые изображения. Пример работы алгоритма показан иллюстрациях вверху, где нейросеть обработала в разных стилях фотографию улицы в немецком городке.

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

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

Стилизация под конкретного автора происходит на этапах d, e.

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

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

Оригинал

Результат работы нейросети

habr.com

Как нейронные сети Google видят изображения

Инженеры Google Александр Мордвинцев, Крисофер Ола и Майк Тика поделились в блоге Google Research удивительными изображениями.

Картинки, состоящие из множества разноцветных мелких деталей и напоминающие где-то полотна Ван Гога, где-то – описания мистических видений, были получены с помощью метода, который ученые окрестили «инцепционизмом». Это визуализация работы 22-слойной нейросети, которая лежит в основе системы распознавания изображений Inception.

Нейросети, с помощью которых распознаются изображения, состоят из 10-30 связанных слоев. В процессе их работы изображение «угадывается» постепенно: сначала распознаются общие формы, границы и углы, затем система определяет предмет на основании собранных особенностей и затем делает вывод об объекте, который может состоять их таких деталей. Например, нейросеть «видит» округлые объекты зеленого цвета, они напоминает ей листья, скопление листьев говорит о том, что на фотографии изображено дерево.

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

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

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

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

То, какое у системы получится изображение, зависит от выбранного для распознавания слоя. Базовые слои найдут только общие формы и простые геометрические фигуры (как на фотографии с антилопами выше), зато более высокие увидят на любой фотографии сложные объекы. Вот что, например, нейросеть увидела на фотографии облаков.

Примеры преобразования изображений системой: линия горизонта превращается в башни и пагоды, деревья – в здания, листья – в птиц и насекомых.

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

Различные орнаменты, увиденные системой.

Система ищет знакомые черты в картине Жоржа Сёра.

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

Рисунок, полученный с помощью нескольких итераций.

Рисунок, полученный с помощью нескольких итераций.

Рисунок, полученный с помощью нескольких итераций.

Рисунок, полученный с помощью нескольких итераций.

Рисунок, полученный с помощью нескольких итераций.

Рисунок, полученный с помощью нескольких итераций.

Нейрофизиологи отмечают, что система распознавания образов мозгом устроена схожим образом.

deadbees.net