Отобразите классификацию с мешком визуальных слов

Используйте функции 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: создайте набор признаков

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

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

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

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

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

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

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

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

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

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

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

Ссылки

[1] Csurka, G. C. R. Танцуйте, Л. Фэн, Й. Вилламовский и C. Рев. Визуальная классификация с мешками Keypoints. Семинар по статистическому изучению в компьютерном зрении. ECCV 1 (1–22), 1–2.

Похожие темы