evaluateImageRetrieval

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

Синтаксис

averagePrecision = evaluateImageRetrieval(queryImage,imageIndex,expectedIDs)
[averagePrecision,imageIDs,scores] = evaluateImageRetrieval(queryImage,imageIndex,expectedIDs)
[averagePrecision,imageIDs,scores] = evaluateImageRetrieval(___,Name,Value)

Описание

пример

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);

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

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.64 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)

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

expectedID = 3;

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

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

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

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

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

figure
imshowpair(query,bestImage,'montage')

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

  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 = 0.8333

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

свернуть все

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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