Как фото превратить в красивую картину: создаем оригинальные изображения с помощью нейронных сетей (удивляем девушку!)

Содержание:

Нейросети для создания фото людей и аватарок

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

Generated.photos

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

Посмотрите, как работает нейросеть для фотографий: 

В Generated.photos есть удобный фильтр — можно сгенерировать лицо конкретного пола и возраста, выбрать цвет глаз и волос, длину прически и даже эмоцию на лице. Нейросеть работает безупречно. 

Ссылка для использования: generated.photos

ThisPersonDoesnotExist

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

ThisPersonDoesnotExist обработала миллионы человеческих лиц и создает новые на основе собирательных образов. Начинка сервиса — генеративная нейросеть StyleGAN от Nvidia. 

Ссылка для использования: ThisPersonDoesnotExist

RoundDF

А вот и один из самых интересных экземпляров нашей подборки. Нейросеть для создания дипфейк-видео из обычных картинок. Фото с помощью нейросети превращаются в анимацию. Для этого используется технология First Order Motion Model. Изначально код был опубликован на гитхабе, но энтузиасты уже перенесли все в Telegram-бота. Ребята даже анимировали жуткую голову из рекламы телекомпании “ВИД”:

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

Telegram бот для создания дипфейк-видео: RoundDFbot

SpineNet

SpineNet применяется для обнаружения объектов на изображении. Исследователи из Google Research достигли хороших результатов, которые превышают имеющиеся state-of-the-art (SOTA) подходы.

Предложенная модель SpineNet позволяет выучивать разномасштабные признаки из-за сверточных слоев смешанных размеров (смотрите рисунок ниже). Размеры слоев подбирались с помощью нейронного поиска архитектур (Neural Architecture Search, NAS). Использование SpineNet в качестве базовой модели дает прирост в точности (Average Precision, AP). При этом на обучение модели требуется меньше вычислительных ресурсов.

Рисунок – Построение моделей со смешанным масштабом с помощью перестановок слоев архитектуры ResNet (ResNet-50-FPN крайняя слева)

Тренировка нейронной сети — многовариантные исчисления, Часть 2

Текущая цель понятна – это минимизация потерь нейронной сети. Теперь стало ясно, что повлиять на предсказания сети можно при помощи изменения ее веса и смещения. Однако, как минимизировать потери?

Для простоты давайте представим, что в наборе данных рассматривается только :

Имя/Name Вес/Weight (минус 135) Рост/Height (минус 66) Пол/Gender
Alice -2 -1 1

Затем потеря среднеквадратической ошибки будет просто квадратической ошибкой для :

Еще один способ понимания потери – представление ее как функции веса и смещения. Давайте обозначим каждый вес и смещение в рассматриваемой сети:

Затем можно прописать потерю как многовариантную функцию:

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

На этот вопрос может ответить частная производная . Как же ее вычислить?

Для начала, давайте перепишем частную производную в контексте :

Данные вычисления возможны благодаря дифференцированию сложной функции. 

Подсчитать можно благодаря вычисленной выше :

Теперь, давайте определим, что делать с . Как и ранее, позволим , , стать результатами вывода нейронов, которые они представляют. Дальнейшие вычисления:

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

Так как влияет только на , а не на , можно записать:

Использование дифференцирования сложной функции.

Те же самые действия проводятся для :

Еще одно использование дифференцирования сложной функции.

В данном случае — вес, а — рост. Здесь как производная функции сигмоида встречается во второй раз. Попробуем вывести ее:

Функция в таком виде будет использована несколько позже.

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

Эта система подсчета частных производных при работе в обратном порядке известна, как метод обратного распространения ошибки, или backprop.

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

Обратное распространение

  • Суммарная ошибка (total_error) вычисляется как разность между ожидаемым значением «y» (из обучающего набора) и полученным значением «y_» (посчитанное на этапе прямого распространения ошибки), проходящих через функцию потерь (cost function).
  • Частная производная ошибки вычисляется по каждому весу (эти частные дифференциалы отражают вклад каждого веса в общую ошибку (total_loss)).
  • Затем эти дифференциалы умножаются на число, называемое скорость обучения или learning rate (η).

Полученный результат затем вычитается из соответствующих весов.

В результате получатся следующие обновленные веса:

  • w1 = w1 — (η * ∂(err) / ∂(w1))
  • w2 = w2 — (η * ∂(err) / ∂(w2))
  • w3 = w3 — (η * ∂(err) / ∂(w3))

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

Популярный мем о том, как Карлсон стал Data Science разработчиком

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

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

Оценят, «зайдёт» ли картинка

Раньше
З: А давайте поменяем это изображение на портрет нашего директора?
Д: Знаете, портрет — это скучно… Так уже никто не делает.
З: Ну, а мы сделаем. Тем более, директор хочет.
Д: Я-то сделаю, но подписываться под этим не буду.

Сейчас
З: А давайте поменяем картинку на портрет нашего директора?
Д: Смотрите, я меняю картинку, а программа говорит, что привлекательность фото близка к нулю. А наша картинка будет оставлять хорошее впечатление и запомнится надолго.
З: Хорошо, я передам директору. Думаю, он согласится.

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

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

Система Everypixel работает как поисковик по изображениям на основе имеющейся картинки. Вы скажете: «Это давно умеет Google». Однако программа имеет возможность определять степень привлекательности изображения. А если вы ещё и немного SEO-шник, система автоматически проставит ключевые слова к картинке.

LaMem

В свою очередь, алгоритм LaMem (ex-MemNet) от MIT определяет, какие изображения, постеры и рекламные буклеты запомнят надолго, а какие — забудут почти сразу же.

Кому нужны курсы data science онлайн?

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

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

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

Сегодня курсы data science онлайн рекомендуется пройти всем специалистам, которые осуществляют процесс разработки систем автонавигации, занимаются распространением лекарственных препаратов или же других продуктов, владельцам или же специалистам по популяризации товаров в крупных торговых сетях. Также активно методика применяется в IT-сфере при работе с новостями (систематизация) с фильтрами спама, при оптимизации поисковой выдачи и пр. Активно методика применяется в медицине, где очень актуальным сегодня становится направление автоматической диагностики заболеваний. Ну, и конечно же, специалистам финансовой структуры также рекомендуется пройти такие курсы онлайн, так как они позволят совершенно иначе подойти к решению многочисленных сложных задач.

Подборка интересных сервисов и приложений по обработке фото

Ostagram

Было — стало (Ostagram)

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

Как это работает: вы загружаете на сервис парочку нужных вам фотографий (для обработки), одна из которых выступает в роли «базового» изображения, а вторая в роли «стиля». И из двух картинок автоматически получается одна, но зато какая!

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

1+1 равно…

Примечание: для использования сервиса — потребуется регистрация. В бесплатной версии время на обработку одной фотографии может варьироваться (в зависимости от нагрузки) — в среднем 3-7 мин.

DeepArt.io

DeepArt — главная страничка сервиса (скриншот с офиц. сайта)

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

Полученные картины смотрятся весьма необычно и даже местами экстравагантно. Точно можно удивить собеседника!

Также отметил бы, что на подготовку одной картины здесь уйдет чуть больше времени — около 10 минут. За ускоренную обработку — предусмотрен тариф ~2 евро…

Примеры работ с DeepArt

Приложение Prisma

Prisma — главное окно приложения

Весьма популярное приложение для обработки фотографий. Позволяет в мгновение ока стать художником! См. примеры ниже ().

В чем суть: разработчики «оцифровали» и смоделировали стили популярных художников (Ван Гога, Пикассо, Левитана). Искусственный интеллект при помощи этих моделей может «изменить» любую картинку или фотографию — и это можете сделать вы с любым изображением прямо на своем телефоне!

По-моему, звучит весьма заманчиво?! Благо, что в отличие от вышеприведенных сервисов фотографии обрабатываются моментально!

Фото превратилось в картину… / Prisma

Примечание: в приложении десятки различных арт-стилей (на любой вкус!). Часть из этих стилей — бесплатны, другие — платны. Из минусов: настойчиво предлагается купить годовую подписку.

Приложение Vinci

Vinci – Обработка фото нейросетями

Добротное приложение для ретуширования и мгновенной обработки картинок и фото. В арсенале приложения несколько десятков арт-стилей и моделей, благодаря которым можно изменить изображение до неузнаваемости!

Например, можно превратить фото в мозаику (кистью), рисунок карандашом, мультипликационный кадр и т.д. Даже бесплатных фильтров хватит, чтобы вдоволь «поколдовать» над снимками.

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

Приложение GoArt

GoArt — пример изменения фото

Это приложение также, как и предыдущие, позволяет применять различные эффекты к фото, за исключением одного момента: можно обрабатывать изображения вплоть до 10M Pixel!

Благодаря новейшим технологиям нейросетей — можно практически мгновенно имитировать живопись от Ван Гога до Моне к выбранной вами фотографии. (ряд эффектов, кстати, платные, но и открытых — хватает с лихвой!)

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

Рекомендую к ознакомлению!

Приложение Toolwiz Photos

Toolwiz Photos — раздел фильтры

Toolwiz Photos — это полноценный редактор фотографий, позволяющий не только применять какие-то креативные эффекты, но и, например, изменить размер изображения, что-то подрезать, замазать и т.д.

Что касается темы нашей статьи: обратите внимание на вкладку «Фильтры» (см. скрин ниже)

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

Пример наложения эффектов

Кстати, что радует — в процессе работы не выскакивает никаких рекламных окон с предложением что-то приобрести.

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

— точно не будут лишними (благодарю заранее за комментарии).

Всего наилучшего!

Бета-версия

на FloydHub публичный датасетUnsplash

Выделитель признаков

Количество обработанных фильтрами изображений на каждом этапе.Уменьшаем размер в три этапа.

Чему научились

  • Сначала побольше экспериментов с небольшими сериями, а потом можно переходить к большим прогонам. У нас были ошибки даже после 20–30 экспериментов. Если что-то выполняется, ещё не значит, что оно работает. Баги в нейросетях как правило менее заметны, чем традиционные ошибки программирования. К примеру, одним из наших самых причудливых багов был Adam hiccup.
  • Чем разнообразнее датасет, тем больше коричневого будет в изображениях. Если в вашем датасете очень похожие изображения, то нейросеть будет работать вполне прилично без применения более сложной архитектуры. Но такая нейросеть будет хуже обобщать.
  • Формы, формы и ещё раз формы. Размеры картинок должны быть точными и пропорциональными друг другу в течение всей работы нейросети. Сначала мы использовали изображение в 300 пикселей, потом несколько раз уменьшили его вдвое: до 150, 75 и 35,5 пикселей. В последнем варианте потерялось полпикселя, из-за чего пришлось подставлять кучу костылей, пока не дошло, что лучше использовать двойку в степени: 2, 4, 8, 16, 32, 64, 256 и так далее.
  • Создание датасетов: a) Отключите файл .DS_Store, иначе он сведёт вас с ума. б) Проявите выдумку. Для скачивания файлов мы воспользовались консольным скриптом в Chrome и расширением. в) Делайте копии исходных файлов, которые вы обрабатываете, и упорядочивайте скрипты для очистки.

Обучаем нейронную сеть

Для обратного распространения ошибки нам потребуется знать значения входов, выходов и значения производных функции активации сети на каждом из слоёв, поэтому создадим структуру LayerT, в которой будет 3 вектора: x — вход слоя, z — выход слоя, df — производная функции активации. Также для каждого слоя потребуются векторы дельт, поэтому добавим в наш класс ещё и их. С учётом вышесказанного наш класс станет выглядеть так:

class Network {
    struct LayerT {
        public Vector x; // вход слоя
        public Vector z; // активированный выход слоя
        public Vector df; // производная функции активации слоя
    }

    Matrix[] weights; // матрицы весов слоя
    LayerT[] L; // значения на каждом слое
    Vector[] deltas; // дельты ошибки на каждом слое

    int layersN; // число слоёв

    public Network(int[] sizes) {
        Random random = new Random(DateTime.Now.Millisecond); // создаём генератор случайных чисел

        layersN = sizes.Length - 1; // запоминаем число слоёв

        weights = new Matrix; // создаём массив матриц весовых коэффициентов
        L = new LayerT; // создаём массив значений на каждом слое
        deltas = new Vector; // создаём массив для дельт

        for (int k = 1; k  0 ? y : 0;
                //L.df = y > 0 ? 1 : 0;
            }
        }

        return L.z; // возвращаем результат
    }
}

Обратное распространение ошибки

Перейдём к обратному распространению ошибки. В качестве функции оценки сети E(W) возьмём среднее квадратичное отклонение: . Чтобы найти значение ошибки E, нам нужно найти сумму квадратов разности значений вектора, который выдала сеть в качестве ответа, и вектора, который мы ожидаем увидеть при обучении. Также нам потребуется найти дельту для каждого слоя, причём для последнего слоя она будет равна вектору разности полученного и ожидаемого векторов, умноженному (покомпонентно) на вектор значений производных последнего слоя: , где — выход последнего слоя сети, — ожидаемый вектор сети, — вектор значений производной функции активации последнего слоя.

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

Что ж, давайте реализуем это в коде:

Виды ИНС

Мы разобрались со структурой искусственного нейрона. Искусственные нейронные сети состоят из совокупности искусственных нейронов. Возникает логичный вопрос – а как располагать/соединять друг с другом эти самые искусственные нейроны?

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

На этом схожесть заканчивается и начинаются различия…

Однослойные нейронные сети

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

Выглядит однослойная нейронная сеть следующим образом:

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

Нейроны соединены друг с другом стрелками. Над стрелками расположены веса соответствующих связей (весовые коэффициенты).

Многослойные нейронные сети

Такие сети, помимо входного и выходного слоев нейронов, характеризуются еще и скрытым слоем (слоями). Понять их расположение просто – эти слои находятся между входным и выходным слоями.

Такая структура нейронных сетей копирует многослойную структуру определенных отделов мозга.

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

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

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

Сети прямого распространения

Можно заметить одну очень интересную деталь на картинках нейросетей в примерах выше.

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

Сети прямого распространения (Feedforward neural network) (feedforward сети) — искусственные нейронные сети, в которых сигнал распространяется строго от входного слоя к выходному. В обратном направлении сигнал не распространяется.

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

Однако никто не запрещает сигналу идти и в обратную сторону.

Сети с обратными связями

В сетях такого типа сигнал может идти и в обратную сторону. В чем преимущество?

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

А в сетях с обратными связями выходы нейронов могут возвращаться на входы. Это означает, что выход какого-нибудь нейрона определяется не только его весами и входным сигналом, но еще и предыдущими выходами (так как они снова вернулись на входы).

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

Частные производные

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

Разберем необходимость частных производных на примере.

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

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

Ошибка нескольких детей может уменьшиться, но общая ошибка все еще увеличивается.

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

Преимущества прохождения курсов data science онлайн

  1. Возможность заниматься в удобное для вас время;
  2. Отсутствие необходимости тратить время и средства на дорогу до учебного заведения;
  3. Возможность осуществлять обучение без отрыва от основной работы;
  4. Все материалы поступают на электронных носителях. Вы получаете не только материалы для изучения, но еще и детально разработанный план занятий;
  5. Как правило, такое обучение предполагает возможность связываться с преподавателями для разрешения сложных моментов, в которых вы не смогли разобраться самостоятельно;
  6. Курсы длятся не более года. В течение данного срока времени можно не только пройти обучение, но еще и получить практические навыки;
  7. Предоставляется свидетельство или же сертификат, подтверждающие ваши знания, умения и навыки, что позволяет быстро устроиться на достаточно престижную работу.

Подберут комбинации шрифтов, много комбинаций

Раньше
Заказчик (З): Знаете, мне всё нравится, кроме шрифта. Можете сделать ещё несколько вариантов?
Дизайнер (Д): Сколько?
З: Ну штук десять…
Д: …

Сейчас
З: Знаете, мне все нравится, кроме шрифта. Можете сделать ещё несколько вариантов?
Д: Сколько?
З: Ну штук десять…
Д: Дайте пять минут.

Мем «поиграть со шрифтами» стал классикой. Но что если вам реально потребуется сделать десятки вариантов сочетаний для своего проекта или очень требовательного заказчика? Дизайнер из Airbnb Джон Голд подумал об этом и создал программу Rene.

Сервис Rene показывает разные комбинации шрифтов

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

Сделают кликабельный макет новой версии сайта

Раньше
З: Нам бы сайт обновить… Посовременнее сделать. Нас, в принципе, всё устраивает, но на фоне конкурентов смотрится архаично.
Д: Пишите техзадание, что конкретно менять.
З: Да, я словами не могу сказать. Просто — посовременнее, вот это всё…

З: Знаете, нам не нравится. Вы можете показать ещё версию. Или сделать две.
Д: Я вас не понимаю.

Сейчас
З: Нам бы сайт обновить…
Д: Как обновить?
З: Посовременнее сделать…
Д: Ни слова больше! Через полчаса покажу вариант, и, если всё устраивает, доработаем.
З: О! То, что надо! И вот тут одну картинку поменяйте, пожалуйста.

«Сделать сайт посимпатичнее» — задача, которая подразумевает не только игру со шрифтами и цветами.

Сайт — это набор из графики, текстов, файлов, видео и прочего контента, которые должен быть распределён в определенном порядке, чтобы выполнять бизнес-задачи.

Если вы имеете дело с обновлением сайтов-визиток и небольших лендингов, uKit AI поможет прикинуть новые варианты их компоновки за несколько минут

Онлайн-сервис определит, какие элементы есть на текущей версии сайта и пересоберёт их на отдельном url-е так, чтобы важное для посетителя оказалось на видном месте. А заодно сам адаптирует результат под требования времени: мобильные устройства, HTML5, кликабельность телефона и так далее.

Результат можно тут же доработать или скинуть заказчику: люди чаще понимают, чего ещё хотят, когда «есть что пощупать».

uKit AI

Сервис готовится к запуску. Команда uKit AI до этого создала линейку отечественных онлайн-конструкторов, названия которых знакомы многим: uKit, uCoz и другие.

Колоризация фото онлайн с помощью нейросети. 3 варианта, позволяющие раскрасить чёрно-белые снимки без помощи фотошопа.

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

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

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

Окно онлайн-колоризации и финальный результат с многочисленными искажениями и пятнами:


Пример колоризированного фото и сайта Algorithmia.

2 вариант для создания колоризированных фото — нейросеть colorizer от deepai.

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

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


Хотя Colorizer сумел лучше выделить фон и модель, тон кожи сильно ушёл в красный, а отдельные участки кожи стали выглядеть пятнистыми.

Колоризация фото онлайн с помощью нейросети станет намного проще, если использовать 3 вариант — colourise.

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

К сожалению, для этого снимка не удалось добиться идеального результата. Я бы предпочёл получить нечто среднее между Colourise и Colorizer:


Пример «золотой середины» с раскрашиванием чёрно-белых изображений.

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

Самые главные — это долгое ожидание генерации фото и наличие капчи, которую нужно проходить как перед рендерингом, так и перед выбором картинки.

Рабочее меню Colourise:


Колоризация фото онлайн с помощью нейросети Colourise — демо с раскрашенной ч\б картинкой и страница для добавления фото с капчей.

Рекомендую не двигать ползунок, а нажимать сразу «Download result», либо переходить к добавлению нового снимка, если колоризация фото онлайн вас не удовлетворила. Для этого нужно нажать «Color new photo» и снова ввести капчу. Рекомендую не тянуть с выбором снимков, так как период обновления капчи довольно небольшой (менее минуты).

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

Препроцессинг

  1. Создание векторного пространства признаков, где будут жить примеры обучающей выборки. По сути, это процесс приведения всех данных в числовую форму. Это избавляет нас от категорийных, булевых и прочих не числовых типов.
  2. Нормализация данных. Процесс, при котором мы добиваемся, например того, чтобы среднее значение каждого признака по всем данным было нулевым, а дисперсия — единичной. Вот самый классический пример нормализации данных: X = (X — μ)/σ
  3. Изменение размерности векторного пространства. Если векторное пространство признаков слишком велико (миллионы признаков) или мало (менее десятка), то можно применить методы повышения или понижения размерности пространства:
    • Для повышения размерности можно использовать часть обучающей выборки как опорные точки, добавив в вектор признаков расстояние до этих точек. Этот метод часто приводит к тому, что в пространствах более высокой размерности множества становятся линейно разделимыми, и это упрощает задачу классификации.
    • Для понижения размерности чаще всего используют PCA. Основная задача метода главных компонент — поиск новых линейных комбинаций признаков, вдоль которых максимизируется дисперсия значений проекций элементов обучающей выборки.

One-Hotстатьей о вкусовой сенсорной системе

class: red: green: blue: bitter: sweet: salti: sour: weight: solid:
1 1 0.23 1
1 1 -0.85
1 1 1 0.14 1
1 1 1 0.38
1 1 -0.48

Таблица 2 — Пример данных обучающей выборки после препроцессингаkk

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector