Понять основы фильтрации в компьютерном зрении

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

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

Фильтрация сигналов

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

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

Разбивая предыдущий сигнал на более простые, мы получаем следующие компоненты:

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

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

Фильтрация нижних частот и фильтрация верхних частот

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

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

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

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

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

Фильтрация изображений

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

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

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

При этом одним из основных недостатков любой модели нейронной сети является интерпретируемость. Если в сверточной модели есть 4096 фильтров, вы не знаете, что они означают и какие функции извлекают. Все, что вы знаете, это то, что они извлекают очень хорошие функции и являются наиболее значимыми для этой конкретной проблемы. Хотя этот метод отлично работает для решения огромного количества реальных проблем, если вы когда-либо хотите, чтобы ваше решение было принято правительством, организациями здравоохранения и многими другими важными областями, ваша модель должна быть способной для объяснения своих решений. Люди предпочли бы модель с точностью 70%, объясняющую каждое принимаемое решение, чем модель с точностью 99%, которая не дает никаких объяснений.

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

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

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

Заключение

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

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

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