evaluateImageRetrieval

Оцените результаты поиска изображений

Описание

пример

averagePrecision = evaluateImageRetrieval(queryImage,imageIndex,expectedIDs) возвращает среднюю метрику точности для измерения точности результатов поиска изображений для queryImage. expectedIDs введите содержит индексы изображений в imageIndex это, как известно, похоже на изображение запроса.

[averagePrecision,imageIDs,scores] = evaluateImageRetrieval(queryImage,imageIndex,expectedIDs) опционально возвращает индексы, соответствующие изображениям в imageIndex это визуально похоже на изображение запроса. Это также возвращает соответствующие баллы подобия.

[averagePrecision,imageIDs,scores] = evaluateImageRetrieval(___,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы, с помощью любого из предыдущих синтаксисов.

Примеры

свернуть все

Задайте набор изображений.

dataDir = fullfile(toolboxdir('vision'),'visiondata','bookCovers');
bookCovers = imageDatastore(dataDir);

Отобразите набор изображений.

thumbnailGallery = [];
for i = 1:length(bookCovers.Files)
    img = readimage(bookCovers,i); 
    thumbnail = imresize(img,[300 300]);
    thumbnailGallery = cat(4,thumbnailGallery,thumbnail);
end
figure
montage(thumbnailGallery);

Figure contains an axes. The axes contains an object of type image.

Индексируйте изображения. Это займет несколько минут.

imageIndex = indexImages(bookCovers);
Creating an inverted image index using Bag-Of-Features.
-------------------------------------------------------

Creating Bag-Of-Features.
-------------------------

* Selecting feature point locations using the Detector method.
* Extracting SURF features from the selected feature point locations.
** detectSURFFeatures is used to detect key points for feature extraction.

* Extracting features from 58 images...done. Extracted 29216 features.

* Keeping 80 percent of the strongest features from each category.

* Balancing the number of features across all image categories to improve clustering.
** Image category 1 has the least number of strongest features: 23373.
** Using the strongest 23373 features from each of the other image categories.

* Using K-Means clustering to create a 20000 word visual vocabulary.
* Number of features          : 23373
* Number of clusters (K)      : 20000

* Initializing cluster centers...100.00%.
* Clustering...completed 7/100 iterations (~0.45 seconds/iteration)...converged in 7 iterations.

* Finished creating Bag-Of-Features


Encoding images using Bag-Of-Features.
--------------------------------------

* Encoding 58 images...done.
Finished creating the image index.

Выберите и отобразите изображение запроса.

queryDir = fullfile(dataDir,'queries',filesep);
query = imread([queryDir 'query2.jpg']);

figure
imshow(query)

Figure contains an axes. The axes contains an object of type image.

Оценка требует знания ожидаемых результатов. Здесь, изображение запроса, как известно, является 3-й книгой в imageIndex.

expectedID = 3;

Найдите и сообщите о среднем счете точности.

[averagePrecision,actualIDs] = evaluateImageRetrieval(query,...
    imageIndex,expectedID);

fprintf('Average Precision: %f\n\n',averagePrecision)
Average Precision: 0.100000

Покажите запрос и лучше всего соответствуйте рядом друг с другом.

bestMatch = actualIDs(1);
bestImage = imread(imageIndex.ImageLocation{bestMatch});

figure
imshowpair(query,bestImage,'montage')

Figure contains an axes. The axes contains an object of type image.

Создайте набор изображений обложек книги.

  dataDir = fullfile(toolboxdir('vision'),'visiondata','bookCovers');
  bookCovers = imageDatastore(dataDir);

Индексируйте набор изображений. Индексация может занять несколько минут.

  imageIndex = indexImages(bookCovers,'Verbose',false);

Создайте набор изображений запроса.

  queryDir = fullfile(dataDir,'queries',filesep);
  querySet = imageDatastore(queryDir);

Задайте ожидаемые результаты поиска для каждого изображения запроса.

  expectedIDs = [1 2 3];

Оцените каждое изображение запроса и соберите средние баллы точности.

  for i = 1:numel(querySet.Files)
      query = readimage(querySet,i);
      averagePrecision(i) = evaluateImageRetrieval(query, imageIndex, expectedIDs(i));
  end

Вычислите среднюю среднюю точность (MAP).

  map = mean(averagePrecision)
map = 1

Входные параметры

свернуть все

Введите изображение запроса или в виде M-by-N-by-3 изображение истинного цвета или в виде M-by-N 2D полутоновое изображение.

Типы данных: single | double | int16 | uint8 | uint16 | logical

Отобразите поисковый индекс в виде invertedImageIndex объект. indexImages функция создает invertedImageIndex объект, который хранит данные, используемые для поиска изображений.

Отобразите индексы в виде строки или вектор-столбца. Индексы соответствуют изображениям в imageIndex это, как известно, похоже на изображение запроса.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'NumResults',25

Максимальное количество результатов поиска оценить в виде разделенной запятой пары, состоящей из 'NumResults'и положительное целочисленное значение. Функция оценивает главный NumResults и возвращает среднюю точность в NumResults метрика.

Прямоугольная поисковая область в запросе отображает в виде разделенной запятой пары, состоящей из 'ROI'и [x y width height] отформатированный вектор.

Выходные аргументы

свернуть все

Средняя метрика точности, возвращенная как скалярное значение в области значений [0 1]. Средняя метрика точности представляет точность результатов поиска изображений для изображения запроса.

Оцениваемый индекс полученных изображений, возвращенных как M-by-1 вектор. Идентификаторы изображений возвращены в оцениваемом порядке от большинства до наименее подобного совпадающего изображения.

Метрика подобия, возвращенная как N-by-1 вектор. Этот выход содержит оценки, которые соответствуют полученным изображениям в imageIDs вывод . Баллы вычисляются с помощью подобия косинуса и диапазона от 0 до 1.

Представленный в R2015a