Нейросеть Pix2pix реалистично расцвечивает карандашные наброски и чёрно-белые фотографии


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

    Многие задачи в обработке изображений, компьютерной графике и компьютерном зрении можно свести к задаче «трансляции» одного изображения (на входе) в другое (на выходе). Так же как один и тот же текст можно представить на английском или русском языке, так и изображение можно представить в RGB-цветах, в градиентах, в виде карты границ объектов, карты семантических меток и т.д. По образцу систем автоматического перевода текстов, разработчики из лаборатории Berkeley AI Research (BAIR) Калифорнийского университета в Беркли создали приложение для автоматической трансляции изображений из одного представления в другое. Например, из чёрно-белого наброска в полноцветную картинку.

    Неосведомлённому человеку работа такой программы покажется магией, но в основе её лежит программная модель условных генеративных состязательных сетей (conditional generative adversarial networks, cGAN) — разновидности известного типа генеративных состязательных сетей (generative adversarial networks, GAN).

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

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


    Влияние различных функций потери на результат

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

    Разработчики использовали для поставленной задачи условные генеративные состязательные сети (cGAN), то есть GAN с условным параметром. Так же как GAN усваивает генеративную модель данных, cGAN усваивает генеративную модель по определённому условию, что делает её пригодной для трансляции изображений «один в один».


    Трансляция разметки Cityscapes в реалистичные фотографии. Слева разметка, в центре оригинал, а справа сгенерированное изображение

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

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


    Трансляция карандашных набросков в реалистичные фотографии. Слева карандашный рисунок, в центре оригинал, а справа сгенерированное изображение




    Трансляция карандашных набросков в реалистичные фотографии

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


    Обучение cGAN предсказывать фотографии аэрофотосъёмки по картам местности


    Примеры работы cGAN по трансляции фотографий аэрофотосъёмки в карты местности и наоборот

    Научная статья опубликована в открытом доступе, исходный код Pix2pix — на GitHub. Авторы предлагают всем желающим испытать программу.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 46
    • +7
      Хороший генератор уровней
      • +4
        Скормить бы ей детские рисунки или каракули, которые люди рисуют во время телефонного разговора
      • +1
        Пора собирать GUI ко всем этим вариантам, что тут показывали за последние пол-года.
        • 0
          Кстати о гуи. Неплохая мысль — нарисовать на листочке от руки формочки, прогнать через нейросеть и получить готовый комплект GUI.
          • +1
            и код обработчика…
            • 0
              А почему и нет. Стандартные кнопки, вроде закрыть, логин, свернуть, громкость и подобные реализовать достаточно просто.
              • 0
                Скормить нейросети гигаметры кода и получать результат? )
                • 0
                  Не надо гигамеры. Хватит и 76 на трехслойной бумаге
        • 0
          Получается альтернатива CG для фильмов? графика будет совсем реалистичной при минимуме затрат. Эдакий компьютерный мультик на входе, а на выходе реалистичное кино. Наверняка, можно и без актеров обходиться.
          • 0
            Глубина-глубина, я не твой… ;-)
            • +1
              Да! Я мечтаю когда скачаешь обученную нейросеть по созданию CG фильмов, задашь ей в настройках критерии сюжета (типа маленькая девочка спасается в мире зомби апокалипсиса, или вообще в качестве сюжета можно закинуть книгу целиком), задаёшь количество драмы, триллера. Прописываешь какие-нибудь особенности и нажимаешь создать. комп подумает и к вечеру у тебя будет уникальный CG фильм, по качеству как «аватар» и «варкрафт»! Или мульт.

              Хм… ещё было бы круто создавать таким образом целые игры! Типа создай мне похожее на скайрим или ведьмака, только чтобы люди там играли в блэкджек и текстуры покачественней.
              • +1
                да и без зрителей — дискриминатор посмотрит и критическую статью напишет, рейтинг imdb выставит
              • +4
                Осталось написать нейросеть которая сможет генерировать нейросеть по наброску и дело в шляпе
                Так глядишь скоро в художественных школах вместо композиции начнуть преподавать питон
                • –1
                  худ. школы не будут популярны, если в открытом доступе будет ИИ, который нарисует всё что угодно, достаточно сделать детский набросок за пару минут (ну и может настрить несколько настроек)
                • +1
                  Пробовал на этой программе раскрашивать военные фото, ориентировочно 42-45 год. Что сказать, тональность меняется, цвета я бы сказал приближены к тем, которые могли бы быть в реальности. Но как по мне очень блекло все.
                  • +1
                    Проблема статистического алгоритма, нужно обучать, а все просто закидывают «true this, false that»
                  • 0
                    Отдать ей удава и слона Маленьго принца. И вот тогда!
                    «Но все они отвечали мне: „Это шляпа“. И я уже не говорил с ними ни об удавах, ни о джунглях, ни о звездах...»
                    • +1
                      Это абстракционизм наоборот. Интересно, что сеть думает про квадрат Малевича? :)
                      • 0
                        Ну, тут все просто 8-)

                        image
                        • 0

                          Почти: http://www.vz.ru/news/2015/11/12/777744.html "Они расшифровали надпись на «Черном квадрате», которую считают авторской.… Вся фраза, по мнению музейщиков, звучит как «Битва негров в темной пещере».… картину Малевича можно считать чем-то вроде заочного диалога художника с автором полотна, написанного в 1882 году французским писателем и эксцентриком Альфонсом Алле. Его полностью черная картина называется «Битва негров в темной пещере глубокой ночью»."

                      • +1
                        Блин, когда же появятся готовые оффлайновые программы с обученными нейросетями для всего этого?!
                        Хочу плагин к фотошопу в виде этой Pix2pix.
                        • +2
                          Нейросети — большие. Вы уверены что вас плагин в тридцать гигабайт устроит? А в пятьсот?
                          • +1
                            почему нет. главное, чтобы не понадобилась сотня Гб оперативки
                          • 0
                            Не совсем оффлайн, вдруг кто прошел мимо темы — Колоризатор от японских мастеров
                            • 0
                              классно, только результаты сохранить нельзя.
                              • 0
                                Хороший ресурс. У меня получилось сохранить:
                                Сохранить картинку как...


                                • 0
                                  Да, я не корректно выразился. Нельзя сохранить в исходном размере. Уменьшенный вариант мне не интересен.
                                  • +1
                                    Для скорости работы скорее всего они ее уменьшают
                                    • 0
                                      Скопируйте цветной результат в буфер, увеличьте до оригинала, наложите слой поверх в фотошопе с режимом «цветность». Старые фото выглядят вполне, хотя мне сам результат не понравился.
                            • +6
                              С раскрашиванием манги справится?
                              • +4
                                Интересно, а как оно справится с НАСТОЯЩИМИ карандашными набросками, а не оттрассированными с таких же фотографий, на которых сеть учили?
                                • 0
                                  Все просто — если в обучении были правильные изображения — будет правильный выхлоп.
                                  Если-бы сеть учили на «котиках» — было-бы интересно посмотреть на стену и сумку.
                                  К примеру стена леопардовых диванов в обучении;)
                                  • 0
                                    Жаль нет сервиса с веб-интерфейсом для этой нейросети =/
                                    • 0
                                      и бота в мессенджерах, присылаешь фото наброска с телефона — он тебе результат
                                      • 0

                                        Плагина для браузера, чтобы с quickdraw сразу картинки загружать

                                        • 0
                                          Прикольное приложение! Выдает в конце, похожие творения других пользователей.

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