Используйте функции 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-средних-значений, кластеризирующих (Statistics and Machine Learning Toolbox) алгоритм на дескрипторах функции, извлеченных от trainingSets
. Алгоритм итеративно группирует дескрипторы в k взаимоисключающие кластеры. Получившиеся кластеры компактны и разделяются подобными характеристиками. Каждый кластерный центр представляет функцию или визуальное слово.
Можно извлечь функции на основе анализатора, или можно задать сетку, чтобы извлечь дескрипторы функции. Метод сетки может потерять мелкомодульную информацию о шкале. Поэтому используйте сетку для изображений, которые не содержат отличные функции, такие как изображение, содержащее пейзаж, как пляж. Используя ускоренные устойчивые функции (или SURF) детектор обеспечивает большую масштабную инвариантность. По умолчанию алгоритм запускает метод 'grid'
.
Этот рабочий процесс алгоритма анализирует изображения в их полноте. Изображения должны иметь соответствующие метки, описывающие класс, который они представляют. Например, набор автомобильных изображений мог быть маркирован автомобили. Рабочий процесс не полагается на пространственную информацию, ни при маркировке конкретных объектов в изображении. Мешок визуального метода слов полагается на обнаружение без локализации.
Функция trainImageCategoryClassifier
возвращает классификатор изображений. Функция обучает классификатор мультикласса с помощью среды выходных кодов с коррекцией ошибок (ECOC) с бинарными классификаторами машины вектора поддержки (SVM). Функция trainImageCategoryClassfier
использует мешок визуальных слов, возвращенных объектом bagOfFeatures
закодировать изображения в наборе изображений в гистограмму визуальных слов. Гистограмма визуальных слов затем используется в качестве положительных и отрицательных выборок, чтобы обучить классификатор.
Используйте метод encode
bagOfFeatures
, чтобы закодировать каждое изображение от набора обучающих данных. Эта функция обнаруживает и извлекает функции от изображения и затем использует аппроксимированный самый близкий соседний алгоритм, чтобы создать гистограмму функции для каждого изображения. Функция затем постепенно увеличивает интервалы гистограммы на основе близости дескриптора к конкретному кластерному центру. Длина гистограммы соответствует количеству визуальных слов, которые создал объект bagOfFeatures
. Гистограмма становится характеристическим вектором для изображения.
Повторите шаг 1 для каждого изображения в наборе обучающих данных, чтобы создать данные тренировки.
Оцените качество классификатора. Используйте метод evaluate
imageCategoryClassifier
, чтобы протестировать классификатор против набора валидации изображений. Выходная матрица беспорядка представляет анализ прогноза. Совершенная классификация приводит к нормированной матрице, содержащей 1 с на диагонали. Неправильная классификация заканчивается дробные значения.
Используйте метод predict
imageCategoryClassifier
на новом изображении, чтобы определить его категорию.
[1] Csurka, G. C. R. Танцуйте, Л. Фэн, Й. Вилламовский и C. Рев. Визуальная классификация с мешками Keypoints. Семинар по статистическому изучению в компьютерном зрении. ECCV 1 (1–22), 1–2.