Классификация изображений: резюме CS231n Winter 2016, лекция 2, часть 1

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

Предположим, что есть набор дискретных меток: {кошка, собака, шляпа, кружка}. Теперь нам нужно назначить одно изображение любой из этих 4 меток. Изображение представляется компьютеру в виде трехмерного массива, и каждое целое число этого массива находится между [0, 255].

Проблемы

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

#1) Изменение точки обзора.Разные проекции камеры представляют один и тот же экземпляр по-разному.

#2) Изменение масштаба. В реальном мире, а также в контексте изображения размер класса варьируется.

#3) Деформация. Многие объекты можно легко деформировать, поэтому будет деформированное изображение одного и того же объекта в том же классе.

#4) Затенение. Иногда бывает так, что видна только часть объекта.

#5) Условия освещения. Освещение резко влияет на пиксели.

#6) Фоновый беспорядок. Иногда из-за того, что фон ассимилируется в этом, его нелегко распознать.

#7) Внутриклассовая вариация. Часто случается, что внутри класса есть вариация. Например, существует n номеров пород кошек.

Подход, основанный на данных

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

Как мы это делаем?

#1) Запомните все тренировочные изображения и их метки.

#2) Предсказать метку и наиболее похожие обучающие изображения.

Классификатор ближайших соседей

Первым используемым подходом является классификатор ближайших соседей.

Мы возьмем в качестве примера набор данных CIFAR-10. Этот набор данных состоит из 60 000 крошечных изображений размером 32 пикселя в высоту и ширину. Каждое изображение помечено одним из 10 классов (например, «самолет, автомобиль, птица и т. д.»). Эти 60 000 изображений разделены на обучающий набор из 50 000 изображений и тестовый набор из 10 000 изображений.

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

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

k — Классификатор ближайших соседей

Мы можем получить лучшие результаты, если будем использовать K-NN. K также является гиперпараметром. Значение K зависит от проблемы. Идея очень проста: вместо поиска единственного ближайшего изображения в обучающем наборе мы найдем k самых близких изображений и попросим их проголосовать за метку тестового изображения.

Настройка гиперпараметров

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

Проверка

«На практике сплиты, которые люди обычно используют, составляют от 50% до 90% тренировочных данных для тренировки и отдыха для проверки. Однако это зависит от нескольких факторов: например, если количество гиперпараметров велико, вы можете предпочесть использовать большее разделение проверки. Если количество примеров в наборе проверки невелико (возможно, всего несколько сотен или около того), безопаснее использовать перекрестную проверку. Типичное количество сгибов, которое вы можете увидеть на практике, — это 3-кратная, 5-кратная или 10-кратная перекрестная проверка».

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

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

ДОПОЛНИТЕЛЬНО ПОСЕТИТЕ НАШ КАНАЛ ТЕЛЕГРАММА