Оцените классификатор изображений по набору подборки изображений
возвращает нормированную матрицу неточностей, confMat
= evaluate(categoryClassifier
,imds
)confMat
.
[
дополнительно возвращает соответствующие индексы меток и счет.confMat
,knownLabelIdx
,predictedLabelIdx
,score
] =
evaluate(categoryClassifier
,imds
)
Загрузите две категории изображений.
setDir = fullfile(toolboxdir('vision'),'visiondata','imageSets'); imds = imageDatastore(setDir,'IncludeSubfolders',true,'LabelSource',... 'foldernames');
Разделите набор данных на обучающие и тестовые данные. Выберите 30% изображений из каждого набора для обучающих данных и оставшиеся 70% для тестовых данных.
[trainingSet,testSet] = splitEachLabel(imds,0.3,'randomize');
Создайте сумку визуальных слов.
bag = bagOfFeatures(trainingSet);
Creating Bag-Of-Features. ------------------------- * Image category 1: books * Image category 2: cups * Selecting feature point locations using the Grid method. * Extracting SURF features from the selected feature point locations. ** The GridStep is [8 8] and the BlockWidth is [32 64 96 128]. * Extracting features from 4 images...done. Extracted 76800 features. * Keeping 80 percent of the strongest features from each category. * Using K-Means clustering to create a 500 word visual vocabulary. * Number of features : 61440 * Number of clusters (K) : 500 * Initializing cluster centers...100.00%. * Clustering...completed 25/100 iterations (~0.22 seconds/iteration)...converged in 25 iterations. * Finished creating Bag-Of-Features
Обучите классификатор с наборами обучающих данных.
categoryClassifier = trainImageCategoryClassifier(trainingSet,bag);
Training an image category classifier for 2 categories. -------------------------------------------------------- * Category 1: books * Category 2: cups * Encoding features for 4 images...done. * Finished training the category classifier. Use evaluate to test the classifier on a test set.
Оцените классификатор с помощью тестовых изображений. Отобразите матрицу неточностей.
confMatrix = evaluate(categoryClassifier,testSet)
Evaluating image category classifier for 2 categories. ------------------------------------------------------- * Category 1: books * Category 2: cups * Evaluating 8 images...done. * Finished evaluating all the test sets. * The confusion matrix for this test set is: PREDICTED KNOWN | books cups -------------------------- books | 0.75 0.25 cups | 0.25 0.75 * Average Accuracy is 0.75.
confMatrix = 2×2
0.7500 0.2500
0.2500 0.7500
Найдите среднюю точность классификации.
mean(diag(confMatrix))
ans = 0.7500
Примените недавно обученный классификатор для классификации новых изображений.
img = imread(fullfile(setDir,'cups','bigMug.jpg')); [labelIdx, score] = predict(categoryClassifier,img);
Отобразите классификационную метку.
categoryClassifier.Labels(labelIdx)
ans = 1x1 cell array
{'cups'}
imds
- Объект хранения данных изображенийImageDatastore
объектИзображения, заданные в ImageDatastore
объект.
categoryClassifier
- Классификатор категорий изображенийimageCategoryClassifier
объектКлассификатор категорий изображений, заданный как imageCategoryClassifier
объект.
confMat
- Матрица неточностейМатрица неточностей, возвращенная как матрица. Индексы строк соответствуют известным меткам, а столбцы соответствуют предсказанным меткам.
knownLabelIdx
- Индекс метки для набора изображенийПометьте индекс для набора изображений, возвращенный как вектор M-на-1 для M изображений. The knownLabelIdx
выходное значение соответствует индексу набора изображений, используемого для обучения набора признаков.
predictedLabelIdx
- Предсказанный индекс меткиПредсказанная метка, возвращенный как вектор M -by-1 для M изображений. The predictedLabelIdx
выходное значение соответствует индексу набора изображений, используемого для обучения набора признаков. Предсказанный индекс соответствует классу с самым большим значением в score
выход.
score
- счет предсказанияСчет предсказания, заданная как M -by- N матрица. N представляет количество классов. M представляет количество изображений в imageSet
входной объект, imgSet
. Этот счет обеспечивает отрицательные средние значения двоичные потери по классам. Каждый класс является классификатором машины опорных векторов (SVM) мультикласса, который использует подход кодов выхода с исправлением ошибок (ECOC).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.