Используйте функции Computer Vision Toolbox™ для классификации категорий изображений путем создания пакета визуальных слов. Процесс генерирует гистограмму визуальных вхождений слов, которые представляют изображение. Эти гистограммы используются для обучения классификатора категорий изображений. На шагах ниже описывается, как настроить изображения, создать пакет визуальных слов, а затем обучить и применить классификатор категорий изображений.
Организуйте и разделите изображения на обучающие и тестовые подмножества. Используйте imageDatastore
функция для хранения изображений, используемых для настройки классификатора изображений. Организация изображений в категории значительно облегчает обработку больших наборов изображений. Вы можете использовать splitEachLabel
функция для разделения изображений на обучающие и тестовые данные.
Чтение изображений категорий и создание наборов изображений.
setDir = fullfile(toolboxdir('vision'),'visiondata','imageSets'); imds = imageDatastore(setDir,'IncludeSubfolders',true,'LabelSource',... 'foldernames');
Разделите наборы на подмножества обучающих и тестовых изображений. В этом примере 30% изображений разделены для обучения, а остальная часть - для проверки.
[trainingSet,testSet] = splitEachLabel(imds,0.3,'randomize');
Создайте визуальный словарь, или набор признаков, путем извлечения дескрипторов функций из репрезентативных изображений каждой категории.
The bagOfFeatures
объект определяет функции или визуальные слова при помощи алгоритма k-means кластеризации (Statistics and Machine Learning Toolbox) на дескрипторах признаков, извлеченных из trainingSets
. Алгоритм итерационно группирует дескрипторы во k взаимоисключающих кластеров. Получившиеся кластеры компактны и разделены аналогичными характеристиками. Каждый центр кластера представляет функцию или визуальное слово.
Можно извлечь функции на основе детектора функций или задать сетку для извлечения дескрипторов функций. Метод сетки может потерять мелкозернистую информацию о шкале. Поэтому используйте сетку для изображений, которые не содержат различных функций, таких как изображение, содержащее пейзажи, например пляж. Использование детектора ускоренных устойчивых функций (или SURF) обеспечивает большую инвариантность шкалы. По умолчанию алгоритм запускает 'grid'
способ.
Рабочий процесс этого алгоритма анализирует изображения полностью. Изображения должны иметь соответствующие метки, описывающие класс, который они представляют. Для примера набор изображений автомобилей мог быть маркирован автомобилями. Рабочий процесс не полагается ни на пространственную информацию, ни на маркировку конкретных объектов в изображении. Метод «мешок визуальных слов» полагается на обнаружение без локализации.
trainImageCategoryClassifier
функция возвращает классификатор изображений. Функция обучает классификатор мультикласса с помощью среды выхода кодов с исправлением ошибок (ECOC) с помощью классификаторов двоичных машин опорных векторов (SVM). The trainImageCategoryClassfier
функция использует сумку визуальных слов, возвращаемую bagOfFeatures
объект для кодирования изображений в наборе изображений в гистограмму визуальных слов. Гистограмма визуальных слов затем используется в качестве положительных и отрицательных выборок для обучения классификатора.
Используйте bagOfFeatures
encode
метод кодирования каждого изображения из набора обучающих данных. Эта функция обнаруживает и извлекает функции из изображения, а затем использует приблизительный алгоритм ближайшего соседа, чтобы создать гистограмму признаков для каждого изображения. Затем функция увеличивает интервалы гистограммы на основе близости дескриптора к конкретному центру кластера. Длина гистограммы соответствует количеству визуальных слов, которые bagOfFeatures
построенный объект. Гистограмма становится вектором функции для изображения.
Повторите шаг 1 для каждого изображения в наборе обучающих данных, чтобы создать обучающие данные.
Оцените качество классификатора. Используйте imageCategoryClassifier
evaluate
метод для проверки классификатора на соответствие набору изображений для валидации. Матрица неточностей выхода представляет анализ предсказания. Совершенная классификация приводит к нормированной матрице, содержащей 1с на диагонали. Неправильная классификация приводит к дробным значениям.
Используйте imageCategoryClassifier
predict
метод на новом изображении для определения его категории.
[1] Csurka, G., C. R. Dance, L. Fan, J. Willamowski и C. Bray. Визуальная категоризация с помощью пакетов точек ключа. Практикум по статистическому обучению в области компьютерного зрения. ECCV 1 (1-22), 1-2.