.io
Компания
39,46
рейтинг
10 июля 2015 в 14:15

Разработка → Как нейронные сети рисуют картины перевод

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

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

image


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

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

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


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

image

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

Хороший способ проверить, действительно ли сеть научилась распознавать образ — это попросить её нарисовать его.

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

image

Нижние слои

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

image

Продвинутые слои

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

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

image

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

image

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

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

image

Техника обратного рисования дает разработчикам оценить качество распознавания того или иного слоя.

Сами разработчики называют эту технику «Inceptionism» (инцепционизм). Еще картины.

Итерации


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

image

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

Конспект


  1. Нейронная сеть имеет от 10 до 30 вложенных слоев с разным уровнем абстракции.
  2. Чтобы нейронная сеть начала рисовать картины на её вход подается картинка и ставится задача — найти в нем определенную форму и утрировать её.
  3. Техника «инцепционизм» помогает понять и визуализировать как нейронная сеть выполняет задачи классификации.
Автор: @moccachin Alexander Mordvintsev, Software Engineer, Christopher Olah, Software Engineering Intern and Mike Tyka, Software Engineer
.io
рейтинг 39,46
Компания прекратила активность на сайте

Комментарии (38)

  • +4
    Где можно скачать эти картинки в хорошем качестве? Хочу распечатать и повесить теперь :)
    • +2
      По ссылке Ещё картины
    • +5
      Хочу распечатать

      Для начала надо будет спросить разрешения у автора.
      • +2
        Зачем спрашивать у автора, если я хочу распечатку у себя дома повесить?
        • +20
          Это была шутка о том, что придётся спросить разрешения у компьютера.
      • +7
        Разве исходники автора не в открытом доступе?
      • +3
        Вспоминая исход тяжбы про обезъянное селфи, автором этих картин вполне могут признать саму нейросеть.
        Хотя в этом случае нейросеть сама себя, слава скотчу, не запускала.
        • +2
          Ну знаете, вы тоже не сами по себе сообразились.
          • 0
            Я бы начал не от «кто включил» а от дееспособности.
            Автора софта могут назначить опекуном над сетью, ведь сеть недееспособна :)
  • 0
    Я правильно понимаю, что эти картинки — лишь своеобразные коллажи? Т.е. что нейронная сеть компонует результат, используя фрагменты готовых изображений из библиотеки?
    Если нет, откуда возникают довольно детальные изображения животных на картинках, скажем, с облаками? То, что сеть обучали на таких картинках — этого не объясняет. В статье этот момент как-то пропущен.
    • 0
      Глубокие нейронные сети обучаются с прицелом на выделение ключевых особенностей в исходных данных. Для изображений эти особенности, если говорить грубо, могут представлять собой какие то характерные участи как то глаза, силуэт\контур, фон, в общем, все, что может помочь решить задачу. Когда нейронная сеть сталкивается с новым изображением, она пытается собрать из выделенных ранее особенностей «правильный» ответ. Отсюда мы и наблюдаем фрагменты собак на картинках, где их нет.
      • 0
        > собрать из выделенных ранее особенностей «правильный» ответ.
        Непонятно, где и как эти собранные ранее особенности хранятся. Т.е., допустим, сеть обучена распознавать кошачью морду и распознаёт её, ок. Но каким образом из неё можно извлечь эти черты кошачьей морды в виде конкретного изображения?
        • +1
          Особенности (фичи) хранятся в слоях нейронной сети. Чем глубже, тем более четкие особенности (на сколько я понимаю).
          Вот здесь есть примеры изображений и извлеченные особенности для каждого слоя для нескольких классов.
          • 0
            Supervised learning. Скорее всего чем больше фич, тем точнее можно решить проблему регрессии. В слоях у них разные аспекты изображения: цвет, форма, силуэт и т.д.
        • 0
          Обычно изменяют случайное или заданное изображение методом градиентного спуска так, чтобы усилить сигнал выбранных нейронов сети.

          Структура современных сверточных нейронных сетей склоняет сети запоминать кусочки образа, игнорируя расстояние между ними, до тех пор пока они достаточно близко друг к другу. В итоге, упрощенно говоря, при попытках восстановить «кошачью морду», сеть рисует два глаза, нос, усы и т.п. А вот в каком порядке и на каком расстоянии друг от друга она их расположит, ее не волнует.
        • 0
          > Но каким образом из неё можно извлечь эти черты кошачьей морды в виде конкретного изображения?
          Если коротко, то оптимизируем входной сигнал, максимизируя L2-норму выходов нейронов зафиксированного слоя обычным градиентным методом. На самом деле ещё с парой трюков: github.com/google/deepdream/blob/master/dream.ipynb
  • +7
    >Как нейронные сети рисуют картины
    и тут же:
    >Хороший способ проверить, действительно ли сеть научилась распознавать образ — это попросить её нарисовать его.

    Так где ответ на вопрос в заголовке?

    Топик в стиле «как нарисовать сову»
  • +4
    Так и осталось нераскрытым — как нейросеть рисует.
    Одно дело классифицировать. «Этот пиксел — от собаки, этот пиксел — от пагоды». И другое — по классификации восстановить прообраз. Вот этот момент непонятен.
  • +12
    У меня вот что получилось из шума


    И треугольник на шуме

    • +4
      Какие-то инфернальные картинки получаются!
      • +2
        Так выглядит ваше подсознание)
    • +1
      жесть. А если несколько треугольников и квадратов нарисовать?
  • +3
    Ну и для тех кто хочет сам поковыряться

    Оригинальная статья:
    http://googleresearch.blogspot.jp/2015/07/deepdream-code-example-for-visualizing.html

    Докер контейнер:
    https://registry.hub.docker.com/u/mjibson/deepdream/
    • +1
      И для тех, кто хочет просто посмотреть побольше картинок: deepdream.pictures
  • +3
    Скажите, а есть возможность заменить психособак на свои картинки, есть одна задумка клевая.
  • +1
    Насколько я понимаю, рисование основано на механизме обратного распространения. То есть, некоторое изображение на входе дает сигнал на выходе: нейрон1 = 0.8, нейрон2 = 0.3,… Задаем сигнал на выходе, по коэффициентам нейронов рассчитываем, какой должна быть входная картинка.

    Только вот мне кажется, это сильно далеко от того, как распознает изображения человек, собака или даже лягушка.
  • +1
  • +4
    Интересно. Компьютеры научились рисовать как люди-шизофреники. Например, картины художника Уэйна Луиса Уильяма, к концу жизни сошедшего с ума:

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



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

        Кстати, интересны методы лечения шизофрении:

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

        Психотерапевтическое лечение
        Ещё один подход — когнитивная тренировка (англ. cognitive remediation therapy), приёмы которой направлены на борьбу с когнитивными нарушениями, иногда присутствующими при шизофрении. Первые результаты говорят о когнитивной эффективности этого направления, основанного на методиках нейропсихологической реабилитации, причём некоторые позитивные подвижки сопровождаются изменениями характера активации мозга, отмечаемыми при фМРТ-сканировании. Аналогичный подход под названием «терапия когнитивного улучшения», направленный, помимо нейрокогнитивной сферы, на социальное познание, также показал эффективность.


        Оба подхода направлены на переобучение нейронов мозга. В первом случаи прямым вмешательством в работу нейронов, во втором — методом обратного распространении ошибки. Кто знает — может когда-нибудь методы лечения шизофрении буду использовать для нейронных сетей?
  • 0
    Сколько картинок видел, даже с порнухой, какая то хрень это а не рисунки. Не видно ни какой связи с творчеством а только наложение одного на другое.
    • +2
      Возможно, творчеством в полной мере нельзя назвать. Но это демонстрация работы одного из механизмов, который лежит в основе творчества — поиск аналогий.
    • +1
      А вы считаете, что человеческое творчество — это не наложение одного на другое?
  • +9
    Хочется еще послушать музыку, написанную нейросетью
    • +3
      Причём есть подозрение, что у нейросети получится лучше, чем у большинства современных «музыкантов».
      • +1
        На здоровье:

        Music in the video is also generated by a deep neural net.
  • +1
    Собака эта несчастная… Она теперь везде чудиться будет…
  • +1
    Когда смотришь в сумерках на человека, пытаясь разглядить закрыты у него глаза или нет, мозг так же дорисовывает то, что не может различить в темноте глаз. То глаза кажуться закрытыми, то через секунда — распахнутыми и смотрящими на тебя в упор.

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

Самое читаемое Разработка