Оценить классификатор изображений по набору подборки изображений
возвращает нормированную матрицу беспорядка, 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-by-1 вектор для изображений M. knownLabelIdx
выходное значение соответствует индексу набора изображений, используемого, чтобы обучить набор признаков.
predictedLabelIdx
— Индекс предсказанной меткиИндекс предсказанной метки, возвращенный как M-by-1 вектор для изображений M. predictedLabelIdx
выходное значение соответствует индексу набора изображений, используемого, чтобы обучить набор признаков. Предсказанный индекс соответствует классу с самым большим значением в score
вывод .
score
— Счет предсказанияСчет предсказания в виде M-by-N матрица. N представляет количество классов. M представляет количество изображений в imageSet
входной объект, imgSet
. Счет предоставляет отрицаемую среднюю бинарную потерю в классе. Каждый класс является классификатором мультикласса машины опорных векторов (SVM), который использует подход выходных кодов с коррекцией ошибок (ECOC).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.