Используйте функции 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');

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

Этот алгоритм анализирует изображения целиком. Изображения должны иметь соответствующие метки, описывающие класс, который они представляют. Например, набор изображений автомобилей может быть помечен как автомобили. Рабочий процесс не опирается ни на пространственную информацию, ни на маркировку конкретных объектов в изображении. Метод «мешок визуальных слов» основан на обнаружении без локализации.
trainImageCategoryClassifier функция возвращает классификатор изображений. Функция обучает мультиклассовый классификатор, используя структуру выходных кодов с исправлением ошибок (ECOC) с двоичными векторными классификаторами поддержки (SVM). trainImageCategoryClassfier функция использует пакет визуальных слов, возвращаемых bagOfFeatures объект кодирования изображений в наборе изображений в гистограмму визуальных слов. Гистограмма визуальных слов затем используется в качестве положительных и отрицательных выборок для обучения классификатора.
Используйте bagOfFeatures encode способ кодирования каждого изображения из обучающего набора. Эта функция обнаруживает и извлекает элементы из изображения, а затем использует алгоритм приближенного ближайшего соседа для построения гистограммы элемента для каждого изображения. Затем функция увеличивает ячейки гистограммы на основе близости дескриптора к конкретному центру кластера. Длина гистограммы соответствует количеству визуальных слов, bagOfFeatures создание объекта. Гистограмма становится вектором признаков для изображения.

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

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

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