Классификация изображений с сумкой визуальных слов

Используйте функции Computer Vision Toolbox™ для классификации категорий изображений путем создания пакета визуальных слов. Процесс генерирует гистограмму визуальных вхождений слов, которые представляют изображение. Эти гистограммы используются для обучения классификатора категорий изображений. На шагах ниже описывается, как настроить изображения, создать пакет визуальных слов, а затем обучить и применить классификатор категорий изображений.

Шаг 1: Настройка наборов категорий изображений

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

Чтение изображений категорий и создание наборов изображений.

setDir  = fullfile(toolboxdir('vision'),'visiondata','imageSets');
imds = imageDatastore(setDir,'IncludeSubfolders',true,'LabelSource',...
    'foldernames');

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

[trainingSet,testSet] = splitEachLabel(imds,0.3,'randomize');

Шаг 2: Создайте сумку особенностей

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

The bagOfFeatures объект определяет функции или визуальные слова при помощи алгоритма k-means кластеризации (Statistics and Machine Learning Toolbox) на дескрипторах признаков, извлеченных из trainingSets. Алгоритм итерационно группирует дескрипторы во k взаимоисключающих кластеров. Получившиеся кластеры компактны и разделены аналогичными характеристиками. Каждый центр кластера представляет функцию или визуальное слово.

Можно извлечь функции на основе детектора функций или задать сетку для извлечения дескрипторов функций. Метод сетки может потерять мелкозернистую информацию о шкале. Поэтому используйте сетку для изображений, которые не содержат различных функций, таких как изображение, содержащее пейзажи, например пляж. Использование детектора ускоренных устойчивых функций (или SURF) обеспечивает большую инвариантность шкалы. По умолчанию алгоритм запускает 'grid' способ.

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

Шаг 3: Обучите классификатор изображений с сумкой визуальных слов

trainImageCategoryClassifier функция возвращает классификатор изображений. Функция обучает классификатор мультикласса с помощью среды выхода кодов с исправлением ошибок (ECOC) с помощью классификаторов двоичных машин опорных векторов (SVM). The trainImageCategoryClassfier функция использует сумку визуальных слов, возвращаемую bagOfFeatures объект для кодирования изображений в наборе изображений в гистограмму визуальных слов. Гистограмма визуальных слов затем используется в качестве положительных и отрицательных выборок для обучения классификатора.

  1. Используйте bagOfFeatures encode метод кодирования каждого изображения из набора обучающих данных. Эта функция обнаруживает и извлекает функции из изображения, а затем использует приблизительный алгоритм ближайшего соседа, чтобы создать гистограмму признаков для каждого изображения. Затем функция увеличивает интервалы гистограммы на основе близости дескриптора к конкретному центру кластера. Длина гистограммы соответствует количеству визуальных слов, которые bagOfFeatures построенный объект. Гистограмма становится вектором функции для изображения.

  2. Повторите шаг 1 для каждого изображения в наборе обучающих данных, чтобы создать обучающие данные.

  3. Оцените качество классификатора. Используйте imageCategoryClassifier evaluate метод для проверки классификатора на соответствие набору изображений для валидации. Матрица неточностей выхода представляет анализ предсказания. Совершенная классификация приводит к нормированной матрице, содержащей 1с на диагонали. Неправильная классификация приводит к дробным значениям.

Шаг 4: Классификация изображения или набора изображений

Используйте imageCategoryClassifier predict метод на новом изображении для определения его категории.

Ссылки

[1] Csurka, G., C. R. Dance, L. Fan, J. Willamowski и C. Bray. Визуальная категоризация с помощью пакетов точек ключа. Практикум по статистическому обучению в области компьютерного зрения. ECCV 1 (1-22), 1-2.

Похожие темы