- •Актуальность
- •Азы работы с изображениями
- •1. Азы работы с изображениями
- •1.1. Попиксельная обработка изображений
- •1.2. Задача маттинга и морфология
- •1.3. Свертки
- •2. Базовые алгоритмы над изображениями
- •2.1. Интерполяция
- •2.2. Фильтрация
- •2.3. Гистограммы
- •Границы и признаки
- •3. Границы
- •3.1. Оператор Собеля
- •3.2. Оператор Лапласа
- •4. Пирамиды и признаки
- •4.1. Пирамиды
- •Задача классификации для нейронных сетей
- •5. Задача классификации
- •5.1. Классификация изображений и ImageNet
- •5.2. Базовые слои и оптимизация
- •6. Архитектуры
- •6.2. Модели ResNet
- •7. Практическая методология
- •7.1. Что делать если плохо учится?
- •7.2. Аугметация и Псевдо-разметка
- •Задачи переноса стиля и поиска изображений по содержанию
- •9. Стаил Трансфер
- •10.1. Поиск изображений по содержанию
- •10.2. Функции схожести и потерь часть 1
- •10.3. Функции схожести и потерь часть 2
- •10.4. Ранжирование
1.2. Задача маттинга и морфология
Время на реальном примере попробовать приобретенные навыки. Рассмотрим задачу Маттинга. Она формулируется довольно абстрактно – у нас есть изображение, на котором есть какой-то основной объект и фон. Нам необходимо построить маску, которая отражала бы, где на изображении находится этот основной объект. Сразу же можно обратить внимание, что маска не абсолютно-белого цвета – у нас имеются промежуточные значения в волосах, т.к. волосы принадлежат одновременно и объекту, и фону. Задача Маттинга как раз и решает проблему поиска маски.
Рассмотрим более тривиальный случай задачи Маттинга – задачу зеленого экрана. Мы попробуем построить какой-то алгоритм, который не будет идеальным, но будет работать. Наша задача – взять из изображения и выделить все пиксели, где цвет зеленый. Для этого построим гистограмму Hue-значений в HSV формате. Мы увидим, что на гистограмме будет огромный всплеск среди значений. Этот всплеск как раз и относится к зеленому цвету. Если его обрезать, то мы получим:
Все пиксели, где Hue меньше определенного и больше определенного значений это человек, а между ними – зеленый цвет. Мы получили маску. Она сделала то, что нужно – выделила человека, но в ней есть куча дыр. Эти дыру нужно как-то исправить и тут нам на помощь приходит морфология:
Морфология – это работа с бинарными изображениями. Бинарное изображение – такое изображение, где есть только 2 значения 0 или 1. Наша маска являлась бинарным изображением – пиксель либо принадлежал диапазону, либо нет. Бинарные изображения практически никогда не используются для реального отображения чего-либо, а используются в промежуточных вычислениях, как раз для таких моментов, когда в алгоритме возникает задача профильтровать пиксели по какому-нибудь критерию.
Первая операция – это эрозия. Эрозия формирует из одного изображения новое, записывая в значения пикселя в новом изображении минимум из значений соседей этого же пикселя на предыдущем изображении. Сосед – это параметр, например в текущем примере это тот, кто граничит ребром.
Применим эрозию на реальной картинке. Видно, что наша буква уменьшилась. Отсюда и названия эрозии – если наш объект белый, то эрозия его сожмет.
Следующая операция аналогична и называется наращиванием. Теперь мы берем не минимум, а максимум. В этом случае расширяются не черные области, а белые.
На примере той же буквы мы видим, что наращивание называется наращиванием, потому что если наш объект белый, то применение этой операции его увеличит.
Теперь рассмотрим более сложную операцию – бинарное открытие. Это просто последовательное применение двух операций – эрозии и наращивания. Вначале мы уменьшим изображение, а затем увеличим. В результате мы удалим тонкие элементы на изображении. Например, в данном случае удалилась палка буквы.
Аналогичная операция – бинарное закрытие, только теперь мы сначала применяем наращивание, а потом эрозию. Это нужно, чтобы закрыть черные дыры.
Эта именно та операция, которая нам нужна. Если применить бинарное закрытие к той маске, которую мы получили, то уйдут все дыры.
Теперь поговорим про RGBA. А – отвечает за альфа канал, то есть за прозрачность. В целом его можно добавить не только к цветовой схеме RGB, а вообще к любой и таким образом хранить информацию, где на изображении находится фон, а где находится объект. По зеленому экрану мы нашли, где находится человек, а где фон. Мы можем записать человека в альфа канал, таким образом добавив прозрачности к нашему изображению. Что у нас получится в итоге?
В итоге у нас получится изображение без фона. В целом альфа канал можно использовать и для смешивания изображений, например взять и заменить фон, что часто используется для монтажа видео.
