Умные алгоритмы уже умеют находить и распознавать лица, определять главную часть картинки, узнавать различные предметы. А нейронные сети пошли дальше и даже могут самостоятельно создавать произведения искусства.
Недавно Google на своем блоге опубликовали интересный способ использования нейронных сетей, распознающих картинки. Далее свободный перевод публикации.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/2e4/22a/66e/2e422a66e22b48f5df17980214caaa5f.jpg)
Каждая нейронная сеть обучается с помощью миллионов тренировочных картинок. Сеть имеет от 10 до 30 вложенных слоев с различными уровнями абстракции. Вначале картинка поступает на входной слой, который делает свою работу и передает информацию в следующий слой, пока на выходе не получится ожидаемый результат.
Важно понять, что именно происходит на каждом уровне системы. Каждый последующий слой извлекает новые черты изображения. Допустим первый уровень определяет углы и ребра на картинке, второй — формы, и именно последние несколько слоев принимают решение о том, что изображено на картинке.
Чтобы нейронная сеть начала рисовать картины на её вход подается изображение рандомного шума и ставится задача — найти в нем определенную форму и утрировать её. Например, нарисовать банан.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/b36/412/a9f/b36412a9f967cc3e1c4f250676c0f06e.png)
Это нужно для того, чтобы понять научилась ли нейронная сеть распознавать тот или иной образ. Например, её обучали узнавать вилку по определенным характеристикам: 2-4 зубца и ручка. При этом форма и цвет предмета не должны влиять на решение.
Хороший способ проверить, действительно ли сеть научилась распознавать образ — это попросить её нарисовать его.
В некоторых случаях можно выявить явную ошибку в обучении. Система не смогла нарисовать правильную гантель. Скорее всего, при обучении она видела гантели только в комплекте с рукой.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/3e9/2a0/1ba/3e92a01ba4e92dce3d59e5be91c9a4fd.png)
Нейронной сети можно и не задавать конечный результат. Если на вход подать любую картинку и указать уровень, который будет с ней работать, то он улучшит все, что в его компетенции. Пример отрисовки картинки нижним слоем, отвечающим за края:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/41f/9e9/796/41f9e97965a3843a5374a171c8bae9a5.png)
Если для интерпретации выбрать более продвинутый слой, то сеть постарается найти в картинке те образы, на которых тренировалась.
На вход нейронной сети, которая обучалась на фотках животных подали изображение облаков.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/8b8/ba4/ddf/8b8ba4ddfc84adc05eeeda45b62865f1.png)
Все, что сеть смогла распознать, она сделала утрированным. Таким образом в облаках образовались необычные животные: собака-бабочка, свинья-улитка, птица-верблюд и собака-рыба.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/569/269/413/5692694138487d6e7f871b201020e65f.png)
Эту же технику можно применить для любой другой картинки. Результаты зависят от типа изображения, т.к. установленные свойства склоняют сеть к определенным интерпретациям.
Например, линия горизонта замещается пагодами и башнями, очертания деревьев и скал — постройками, а листья превращаются в птиц и насекомых.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/544/3fc/ca1/5443fcca1129448b9c3aa262291e05b5.png)
Техника обратного рисования дает разработчикам оценить качество распознавания того или иного слоя.
Сами разработчики называют эту технику «Inceptionism» (инцепционизм). Еще картины.
На вход нейронной сеть можно подавать немного увеличенную картинку с выхода и получить невероятные цветовые пространства. Если начать с рандомного шума, то выходную картину можно считать исключительно творением нейронной сети.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/7d2/631/f87/7d2631f87f11d595c901a8be6ae1fb7a.png)
Эта техника помогает понять и визуализировать как именно нейронная сеть выполняет задачи классификации, как улучшить архитектуру и проверить чему она научилась.
Недавно Google на своем блоге опубликовали интересный способ использования нейронных сетей, распознающих картинки. Далее свободный перевод публикации.
![image](https://habrastorage.org/getpro/habr/post_images/2e4/22a/66e/2e422a66e22b48f5df17980214caaa5f.jpg)
Каждая нейронная сеть обучается с помощью миллионов тренировочных картинок. Сеть имеет от 10 до 30 вложенных слоев с различными уровнями абстракции. Вначале картинка поступает на входной слой, который делает свою работу и передает информацию в следующий слой, пока на выходе не получится ожидаемый результат.
Важно понять, что именно происходит на каждом уровне системы. Каждый последующий слой извлекает новые черты изображения. Допустим первый уровень определяет углы и ребра на картинке, второй — формы, и именно последние несколько слоев принимают решение о том, что изображено на картинке.
Распознавание наоборот
Чтобы нейронная сеть начала рисовать картины на её вход подается изображение рандомного шума и ставится задача — найти в нем определенную форму и утрировать её. Например, нарисовать банан.
![image](https://habrastorage.org/getpro/habr/post_images/b36/412/a9f/b36412a9f967cc3e1c4f250676c0f06e.png)
Это нужно для того, чтобы понять научилась ли нейронная сеть распознавать тот или иной образ. Например, её обучали узнавать вилку по определенным характеристикам: 2-4 зубца и ручка. При этом форма и цвет предмета не должны влиять на решение.
Хороший способ проверить, действительно ли сеть научилась распознавать образ — это попросить её нарисовать его.
В некоторых случаях можно выявить явную ошибку в обучении. Система не смогла нарисовать правильную гантель. Скорее всего, при обучении она видела гантели только в комплекте с рукой.
![image](https://habrastorage.org/getpro/habr/post_images/3e9/2a0/1ba/3e92a01ba4e92dce3d59e5be91c9a4fd.png)
Нижние слои
Нейронной сети можно и не задавать конечный результат. Если на вход подать любую картинку и указать уровень, который будет с ней работать, то он улучшит все, что в его компетенции. Пример отрисовки картинки нижним слоем, отвечающим за края:
![image](https://habrastorage.org/getpro/habr/post_images/41f/9e9/796/41f9e97965a3843a5374a171c8bae9a5.png)
Продвинутые слои
Если для интерпретации выбрать более продвинутый слой, то сеть постарается найти в картинке те образы, на которых тренировалась.
На вход нейронной сети, которая обучалась на фотках животных подали изображение облаков.
![image](https://habrastorage.org/getpro/habr/post_images/8b8/ba4/ddf/8b8ba4ddfc84adc05eeeda45b62865f1.png)
Все, что сеть смогла распознать, она сделала утрированным. Таким образом в облаках образовались необычные животные: собака-бабочка, свинья-улитка, птица-верблюд и собака-рыба.
![image](https://habrastorage.org/getpro/habr/post_images/569/269/413/5692694138487d6e7f871b201020e65f.png)
Эту же технику можно применить для любой другой картинки. Результаты зависят от типа изображения, т.к. установленные свойства склоняют сеть к определенным интерпретациям.
Например, линия горизонта замещается пагодами и башнями, очертания деревьев и скал — постройками, а листья превращаются в птиц и насекомых.
![image](https://habrastorage.org/getpro/habr/post_images/544/3fc/ca1/5443fcca1129448b9c3aa262291e05b5.png)
Техника обратного рисования дает разработчикам оценить качество распознавания того или иного слоя.
Сами разработчики называют эту технику «Inceptionism» (инцепционизм). Еще картины.
Итерации
На вход нейронной сеть можно подавать немного увеличенную картинку с выхода и получить невероятные цветовые пространства. Если начать с рандомного шума, то выходную картину можно считать исключительно творением нейронной сети.
![image](https://habrastorage.org/getpro/habr/post_images/7d2/631/f87/7d2631f87f11d595c901a8be6ae1fb7a.png)
Эта техника помогает понять и визуализировать как именно нейронная сеть выполняет задачи классификации, как улучшить архитектуру и проверить чему она научилась.
Конспект
- Нейронная сеть имеет от 10 до 30 вложенных слоев с разным уровнем абстракции.
- Чтобы нейронная сеть начала рисовать картины на её вход подается картинка и ставится задача — найти в нем определенную форму и утрировать её.
- Техника «инцепционизм» помогает понять и визуализировать как нейронная сеть выполняет задачи классификации.