Метод минимизации потерь при переносе стиля в HD-качестве

10 августа 2018
Результат в высоком разрешении

Метод минимизации потерь при переносе стиля в HD-качестве

Изображение содержит информацию не только о фоне и отдельных объектах рисунка, но и о художественном стиле картины (или о фильтре, применённом к фотографии). Стиль — важная часть посыла изображения. Компьютерное…

Изображение содержит информацию не только о фоне и отдельных объектах рисунка, но и о художественном стиле картины (или о фильтре, применённом к фотографии). Стиль — важная часть посыла изображения. Компьютерное зрение помогает разложить рисунок на его содержание и стиль для раздельного анализа каждого из них. Если операция сделана корректно, то можно выполнить перенос стиля на другие изображение с сохранением исходного содержания:

Neural style transfer
Перенос стиля на картину «Мона Лиза» Леонардо да Винчи

Ключевое значение во всех методах переноса стиля играют сети VGG16 и VGG19, предварительно обученные в ImageNet. Современный тренд в глубоком обучении – избежание предварительного контролируемого обучения, которое требует утомительной разметки объектов. Вместо того, чтобы использовать отдельную предварительно подготовленную сеть VGG для измерения и оптимизации качества выходного результата, используется архитектура «кодер-декодер» с состязательным дискриминатором, который стилизует входное изображение, а также кодер для вычисления потерь при восстановлении.

Новый подход

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

Для быстрого переноса определенного стиля на изображение или видео применяют архитектуру прямого распространения, а не медленный подход, основанный на оптимизации. Для этого используется архитектура «кодер-декодер» T, в которой сеть кодера E сопоставляется с сорержанием входного изображения x с его скрытым представлением z=E(x). Генератор-декодер G, выступающий в роли художника, генерирует стилизованное выходное изображение y=G(z) по его наброску z. Как видно, стилизация требует только одного прямого распространения, то есть работает в режиме реального времени.

Предложенная архитектура GAN
Предложенная архитектура

Обучение с вычислением потерь при переносе стиля

В более ранних подходах обучение работало только с одним стилем. В данной работе одиночное изображение y0 задается вместе с набором Y изображений с тем же стилем yj∈Y. Для обучения E и G используется стандартный состязательный дискриминатор D, выделяющий стиль изображения G(E(xi)) из образцов yj∈Y. Преобразованное выражение имеет вид:

content loss

где C × H × W – размеры изображения x, которые нужны для обучения T с равномерным весом. На схеме выше приведена архитектура метода. В итоге полное выражение для потерь выглядит так:

full network

где λ – относительный вклад состязательной части энергии.

Группировка изображений с одинаковым стилем

Пусть дано изображение y0. Задача состоит в том, чтобы найти набор Y изображений yj∈Y с таким же стилем. Для определения художника по картине VGG16 учится с нуля на наборе данных Wikiart, состоящим из произведений 624 крупнейших (по числу работ) авторов. Классификация художников в данном случае является вспомогательной задачей для изучения значимых особенностей стиля картины, которые позволят найти похожие на y0 изображения.

Пусть φ(y) – активатор слоя fc6 сети VGG16 (C) для входного изображения y. Чтобы получить набор изображений с тем же стилем, что y0, из набора данных Wikiart (Y), мы вычисляем «ближайшие» к y0 изображения путем вычисления косинусного расстояния δ активатора φ(·), т.е.

wikiart dataset

Основой для модели переноса стиля является архитектура «кодер-декодер». Сеть кодера содержит 5 conv-слоев: 1×conv-stride-1 и 4×conv-stride-2. Сеть декодера имеет 9 остаточных блоков, 4 блока повышающей выборки и 1×conv-stride-1. Дискриминатор представляет собой полностью сверточную сеть с 7×conv-stride-2 уровнями. Во время обучения стиль переносится на 768 × 768 изображений из обучающего набора Places365 и на 768 × 768 изображений из набора данных Wikiart. С каждым образцом проводится 300 000 итераций, скорость обучения равна 0,0002. Также используется оптимизатор Adam. Скорость обучения снижается в 10 раз после 200 000 итераций.

Результат

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

Таблица 1
Таблица 1

Рассматриваемый метод был признан самым точным наибольшее число раз. Средний рейтинг экспертов рассчитывался для каждого метода с использованием 18 различных стилей (таблица 1).

Сравнение затрат памяти GPU (Titan X) и скорости вычислений для разных методов:

Сравнение затрат памяти GPU (Titan X) и скорости вычислений разных методов
Таблица 2
Сравнение методов
Сравнение методов: (а) — предлагаемый метод, (b) — предобученный VGG16 энкодер вместо E

В сухом остатке

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

Больше примеров работы нейросети:

comparison style transfer methods
Сравнение с другими методами переноса стиля. (b) и (с) — результаты, полученные с помощью нового метода; (d) — (i) — другие методы
Результат в высоком разрешении
Результат переноса стиля в высоком разрешении

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

2 августа 2018
Качественное сравнение с другими методами стилизации

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

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

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

Для решения этой сложной задачи недавно была представлен ​​новый метод стилизации видео в режиме реального времени — ReCoNet. Авторы утверждают, что способ позволяет генерировать плавные ролики, сохраняя при этом благоприятную для восприятия картинку. Более того, по сравнению с другими существующими методами ReCoNet демонстрирует выдающуюся качественную и количественную производительность. Давайте узнаем, как авторам модели удалось достичь всего этого одновременно.

Предлагаемый подход

Группа исследователей из Университета Гонконга предложила real-time coherent video style transfer network (ReCoNet) в качестве современного подхода к стилизации видео. Это нейронная сеть прямого распространения, позволяющая выполнять обработку в режиме real-time. Видеофайл преобразовывается кадр за кадром через энкодер/декодер. Сеть потерь VGG отвечает за учет качества восприятия стиля.

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

Архитектура сети

Рассмотрим технические детали предлагаемого подхода и более внимательно изучим архитектуру сети (представлена на рисунке 2).

Преобразование данных в ReCoNet
Рисунок 2. Преобразование данных в ReCoNet

ReCoNet состоит из трех модулей:

  1. Энкодер преобразует кадры входного изображения в карты признаков с извлеченной информацией о восприятии (perceptual information). Энкодер содержит три сверточных слоя и четыре остаточных блока (residual blocks).
  2. Декодер генерирует стилизованные изображения по картам признаков. Чтобы уменьшить артефакты вида “шахматная доска”, декодер включает в себя два сверточных слоя сэмплирования (up-sampling, он же unpooling) с последним сверточным слоем (вместо одного традиционного деконволюционного слоя).
  3. Сеть потерь VGG-16 вычисляет ошибки восприятия. Предварительно обучена на датасете ImageNet.

таблица 1

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

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

Функция потери
Функция потери

где α, 𝛽, 𝛾, 𝜆𝑓  и 𝜆𝜊 — это гиперпараметры при обучении.

Результаты, полученные с помощью ReCoNet

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

результаты

Результаты изменения стиля видео с использованием ReCoNet
Рисунок 3. Результаты изменения стиля видео с использованием ReCoNet

Затем исследователи провели количественное сравнение эффективности ReCoNet с тремя другими методами. В приведенной ниже таблице показаны временные ошибки четырех моделей преобразования видео в пяти разных сценах. Модель Ruder et al демонстрирует самые маленькие ошибки, но значения FPS не позволяют использовать ее в режиме real-time из-за малой скорости вывода. У модели Huang et al более низкие временные ошибки, чем у ReCoNet; но сможет ли эта модель захватить штрихи и мелкие текстуры аналогично ReCoNet? Обратимся к качественному анализу.

таблица 2

Как видно из верхней строки на рисунке 4, модель Huang et al плохо справляется с штрихами и узорами. Это может быть связано с тем, что она использует малое отношение веса между потерями восприятия и временными потерями для поддержания когерентности. Кроме того, модель использует карты признаков из более глубокого слоя relu4_2 в loss-сети для вычисления потери содержимого, что затрудняет обработку низкоуровневых признаков, таких как границы.

Качественное сравнение с другими методами стилизации
Рисунок 4. Качественное сравнение с другими методами стилизации

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

таблица 3

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

  • (Q1) Какая модель передает стиль лучше, особенно цвет, штрихи, текстуры и другие визуальные шаблоны?
  • (Q2) Какая модель лучше согласована по времени (т. е. где меньше мерцающих артефактов и цвет и стиль одного и того же объекта более стабилен)?
  • (Q3) Какая модель предпочтительнее в целом?

Результаты этого исследования, как показано в таблице 3, подтверждают выводы, сделанные из качественного анализа: ReCoNet достигает гораздо лучшей когерентности, чем модель Chen et al, сохраняя при этом одинаково хорошее восприятие стилей; модель Huang et al превосходит ReCoNet, когда дело доходит до временной согласованности, но визуально воспринимается результат гораздо хуже.

Итоги

Этот новый подход к переносу стиля на видео отлично подходит для создания согласованных стилизованных видеороликов в режиме обработки real-time, генерируя при этом действительно приятную для восприятия картинку. Авторы предложили использовать ограничение искажения яркости в временных потерях на уровне выходных данных и временную потерю уровня карты признаков для повышения стабильности при различных эффектах освещения, а также для лучшей временной согласованности. Когда речь заходит про когерентность, то ReCoNet оказывается среди новейших методов. Учитывая высокую скорость обработки и выдающиеся результаты в захвате информации о содержимом и стилистике, этот подход, безусловно, находится на “передовой” в стилистической обработке видео.

Перевод — Эдуард Поконечный

Неконтролируемое преобразование изображений с механизмом внимания

30 июля 2018
Unsupervised Attention-Guided Image-to-Image Translation

Неконтролируемое преобразование изображений с механизмом внимания

Преобразование «image-to-image» – метод отображения фото из исходного домена в целевой. Метод включают в себя раскраску изображений, восстановление со сверхвысоким разрешением, перенос стиля, адаптацию домена и увеличение плотности данных. Для…

Преобразование «image-to-image» – метод отображения фото из исходного домена в целевой. Метод включают в себя раскраску изображений, восстановление со сверхвысоким разрешением, перенос стиля, адаптацию домена и увеличение плотности данных. Для большинства подходов требуется, чтобы данные доменов были спарены или согласованы друг с другом, как, например, при переносе спутниковых снимков на топографические карты. Как следствие, возникают сложности с применением алгоритма, вплоть до невозможности решения некоторых задач.

Неконтролируемые методы, такие как DiscoGAN и CycleGAN, преодолевают проблему путем вычисления циклических потерь, наличие которых побуждает целевой домен точно восстанавливаться в исходный при выполнении обратного преобразования. Входное изображение подается в архитектуру нейронной сети, подобную связке «кодер-декодер», называемую генератором, которая выполняет преобразование изображения. Затем выходной результат подается на дискриминатор, который пытается определить, правильно ли было отображено исходное изображение. Однако эти подходы ограничены неспособностью системы действовать только на определенные участки изображения. В неконтролируемом случае, когда домены не сопряжены или не согласованы, сеть должна дополнительно определить, какие области изображений предназначены для преобразования.

Сравнение различных подходов.
Рис. 1. Сравнение различных подходов преобразования лошади в зебру и льва в тигра

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

Архитектура

data flow diagram

Целью преобразования изображения является приближенное вычисление отображения F(S→T) из домена исходного изображения S в домен целевого изображения Т, основанное на независимых выборках X(S) и X(T), таких, что распределение отображенных точек F(S→T) (XS) совпадает с распределением вероятности P(T) целевого изображения. Для обучения передаточной сети F(S→T) требуется наличие дискриминатора D(T), который пытается обнаружить в образцах X(T) преобразованные изображения. Для согласованности циклов обратное отображение F(T→S) и соответствующий дискриминатор D(S) обучаются одновременно. Для этого требуется решение двух одинаково важных задач:

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

Для этого были разработаны две сети внимания A(S) и A(T), которые осуществляют выбор областей для преобразования путем максимизации вероятности того, что дискриминатор совершает ошибку.

Генератор механизма внимания

Исходные изображения подаются в сеть внимания A(s) для выполнения отображения s(a)=AS(s). Получаемое изображение s’ имеет вид:

attention guided generator

«Приоритетный» объект s(f) формируется путем поэлементного умножения в каждом канале RGB: s(f)=s(a)⊙s. Затем s(f) подается в генератор F(S→T), который отображает его в целевой домен Т. Затем к полученному результату добавляется фоновое изображение s(b) =(1-s(a))⊙s.

Функция потерь. Потери определяются состязательной частью энергии:

attention guided generator

Дискриминатор механизма внимания

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

Полная энергия вычисляется путем комбинирования состязательных и циклических потерь как для исходного, так и для целевого доменов:

При непрерывном отображении внимания дискриминатор может получать на вход «дробные» значения пикселей, которые могут быть близки к нулю в начале обучения. В то время как генератор выигрывает от возможности смешивания пикселей на границах объектов, умножение реальных изображений на эти дробные значения приводит к тому, что дискриминатор начинает считать, что серый цвет является «реальным» (т. е. мы сдвигаем результат в точку 0 нормированной области значений яркости пикселя [-1 , 1]). Обученное отображение внимания для дискриминатора имеет вид:

Таким образом, улучшенное выражение для состязательной части энергии L(adv) имеет вид:

Результат

Для оценки качества работы предложенного метода преобразования изображений использовался принцип Fréchet Inception Distance (FID). FID вычисляет расстояние Фреше между функциями, которые сопоставляются реальному и сгенерированному изображениям. Такие функции извлекаются из последнего скрытого уровня архитектуры FID. Наш метод позволяет достичь наименьшего значения FID во всех случаях, кроме одного. Следующим по эффективности, после нашего, является метод CycleGAN. UNIT достигает второго наименьшего значения FID, что означает, что предположение о скрытых параметрах в данном случае является уместным. Код доступен по ссылке.

FID для различных алгоритмов

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

image-to-image translation

Превращение яблок в апельсины и наоборот

Превращение яблок в апельсины и наоборот

Бонус: результаты эксперимента по удалению текстур

Используя только дискриминатор всего изображения сразу («Ours-D»), сети внимания начинают изменять помимо «приоритетного» объекта также и его фон, как показано в нижнем ряду:

результаты эксперимента по удалению текстур

Оригинал – Muneeb Ul Hassan

Как работает нейронная сеть: алгоритмы, обучение, функции активации и потери

25 июля 2018

Как работает нейронная сеть: алгоритмы, обучение, функции активации и потери

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

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

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

Обозначим предложения как на X, а метки – как Y. Некоторая функция определяет связь между ними. В случае анализа тональности текста это будут признаки (слова, фразы, структура предложения), которые дают предложению негативную или позитивную окраску. Раньше люди генерировали эти признаки вручную, этот процесс называется Feature Engineering или создание признаков. Нейронная сеть автоматизировала этот процесс.

neuronnaya-set

Искусственная нейронная сеть состоит из трех компонентов:

  • Входной слой;
  • Скрытые (вычислительные) слои;
  • Выходной слой.

простая нейронная сеть изображение

Обучение нейросетей происходит в два этапа:

  • Прямое распространение ошибки;
  • Обратное распространение ошибки.

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

Прямое распространение

Прямое распространение
Прямое распространение

Зададим начальные веса случайным образом:

  • w1
  • w2
  • w3

Умножим входные данные на веса для формирования скрытого слоя:

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

Выходные данные из скрытого слоя передается через нелинейную функцию (функцию активации), для получения выхода сети:

  • y_ = fn( h1 , h2, h3 )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

нейронные сети частная производная

Гиперпараметры

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

Скорость обучения (learning rate)

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

функция потери

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

результаты

Функция активации (activation function)

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

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

функции активации нейронной сети

Функция потери (loss function)

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

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

Функция потерь одномерна и не является вектором, поскольку она оценивает, насколько хорошо нейронная сеть работает в целом.

Некоторые известные функции потерь:

  • Квадратичная (среднеквадратичное отклонение);
  • Кросс-энтропия;
  • Экспоненциальная (AdaBoost);
  • Расстояние Кульбака — Лейблера или прирост информации.

Cреднеквадратичное отклонение – самая простая фукция потерь и наиболее часто используемая. Она задается следующим образом:

среднеквадратическое отклонение

Функция потерь в нейронной сети должна удовлетворять двум условиям:

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

Глубокие нейронные сети

Глубокое обучение (deep learning) – это класс алгоритмов машинного обучения, которые учатся глубже (более абстрактно) понимать данные. Популярные алгоритмы нейронных сетей глубокого обучения представлены на схеме ниже.

Популярные алгоритмы нейронных сетей
Популярные алгоритмы нейронных сетей (http://www.asimovinstitute.org/neural-network-zoo)

Более формально в deep learning:

  • Используется каскад (пайплайн, как последовательно передаваемый поток) из множества обрабатывающих слоев (нелинейных) для извлечения и преобразования признаков;
  • Основывается на изучении признаков (представлении информации) в данных без обучения с учителем. Функции более высокого уровня (которые находятся в последних слоях) получаются из функций нижнего уровня (которые находятся в слоях начальных слоях);
  • Изучает многоуровневые представления, которые соответствуют разным уровням абстракции; уровни образуют иерархию представления.

Пример

Рассмотрим однослойную нейронную сеть:

простая нейросеть

Здесь, обучается первый слой (зеленые нейроны), он просто передается на выход.

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

двухслойная нейронная сеть

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

нейросеть

Не следует путать с широкой нейронной сетью.

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

Пример:

Изучая английскую грамматику, требуется знать огромное число понятий. В этом случае однослойная широкая нейронная сеть работает намного лучше, чем глубокая нейронная сеть, которая значительно меньше.

Но

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

Главное — баланс

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

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

Проклятье размерности

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

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

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

Компромисс

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

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

Действительно,

переобучение, недообучение

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

Следовательно, как правило, невозможно иметь маленькое смещение и маленькую дисперсию одновременно.

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

Генеративную нейросеть научили распознавать лица в малом масштабе

5 июня 2018
Finding Tiny Faces in the Wild with GAN

Генеративную нейросеть научили распознавать лица в малом масштабе

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

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

Современные техники распознавания лиц достигли впечатляющих результатов при работе с изображениями лиц среднего и большого размера, однако эффективность работы с малыми изображениями неудовлетворительна. Главная трудность в распознавании лиц малого размера (к примеру, размером 10х10 пикселей) состоит в недостатке деталей лица, отличающих его от заднего плана. Другая проблема заключается в том, что современные методы распознавания лиц строятся на основе свёрточных нейросетей и используют для представления лица свёрточные карты особенностей с малой частотой дискретизации и большим шагом (8, 16, 32), которые теряют информацию и слишком неточны для описания изображений небольшого размера.

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

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

Для восстановления недостающих деталей на получаемых изображениях и создания точных изображений высокого разрешения для задач классификации была использована “улучшающая” нейросеть RN (refinement network). Конечные и реальные изображения пропускаются через дискриминатор, который определяет, являются оба изображения реальными или созданными, изображены ли на них лица или нет. Обратная связь заставляет генератор создавать изображения с более точными чертами лиц.

Архитектура нейросети

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

Network Architecture
Архитектура генератора и дискриминатора

Генератор

Улучшающая нейросеть генератора имеет архитектуру свёрточной нейросети. После каждого свёрточного слоя, за исключением последнего, производилась нормализация (batch normalization) и активация ReLU.

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

Дискриминатор

В качестве основной нейросети в дискриминаторе используется нейросеть VGG19, из которой удалён слой субдискретизации для исключения различных операций уменьшения разрешения. Более того, все полностью соединённые слои (т.е. f c6, f c7, f c8) заменены на два параллельных полностью соединённых слоя fcGAN и fcclc. На вход подаётся изображение увеличенного разрешения. Ветвь fcGAN выдаёт вероятность того, что входное изображение — реальное, а ветвь fcclc выдаёт вероятность того, что на входном изображении присутствует лицо.

Функция потерь

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

Loss Function

где ILR и IHR обозначают небольшие размытые фрагменты (low resolution) и изображения с высоким разрешением (high resolution) соответственно, G1 — SNR нейросеть, G2 — улучшающая нейросеть, w — параметры Генератора.

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

Adversarial loss

Состязательные потери заставляют нейросеть генерировать более чёткие высокочастотные детали для того, чтобы ”обмануть” Дискриминатор.

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

Classification loss

Классификационные потери используются по двум причинам. Во-первых, они позволяют Дискриминатору определить, присутствуют ли на реальном и созданном изображениях лица или нет. И во-вторых, они стимулируют Генератор создавать более детальные изображения.

Целевая функция: состязательные и классификационные потери входят в попиксельные среднеквадратичные потери. Генеративно-состязательная нейросеть может быть обучена с помощью целевой функции. Для лучшего поведения градиента функции потерь Генератора G и дискриминатора D были изменены следующим образом:

Objective function Objective function 2

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

Результаты

Результаты предложенной модели лучше, чем у более ранних нейросетей.

Baseline
Сравнение модели Baseline и предложенного подхода на примере датасета WIDER FACE.

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

Finding faces

Качественные результаты предлагаемого метода. Зелёными рамками отмечены все лица на изображениях, а красными — результаты распознавания предложенного метода:

Finding Tiny Faces
Перевод — Борис Румянцев, оригинал — Muneeb Ul Hassan