Почему я получаю 0 в качестве вывода, когда я пытаюсь вычислить точность для сегментированного изображения? - PullRequest
2 голосов
/ 08 июля 2019

Я проверил точность метода сегментации с использованием функции bboxPrecisionRecall в версии Matlab '9.4.0.857798 (R2018a) Обновление 2' и результат теста алгоритма с использованием IESK-ArDB набор данных. База данных находится в свободном доступе здесь . Образцы базы данных изображений here и here. Я получаю 0s как вывод при попытке вычислить точность. Что мне делать, чтобы получить реальные результаты для моего сегментированного алгоритма?

Код ниже:

%% clean Workspace
clear;
clc;
%% my segmented bounding box cell
propied = {[48.5,84.5,102,59];[169.5,71.5,96,77];[251.5,114.5,47,51]}
%% Read Image
im = imread('t_A01_010.bmp');
imshow(im)
hold on
%% Ground truth standerd boxes.
%[GTruth,txt,raw] = xlsread('demo.xlsx');
groundTruthBoxes = [235 102 301 170;164 66 267 153 ;43 80 153 148]
%Convert bounding boxes from struct to cell.
boundingBoxes = propied;

% Convert cell to Matrix
bb = cell2mat(boundingBoxes(:));
% Move rows up down and fix matrix numbers
bb1 = fix(flipud(bb))
% Draw rectangle boxes for segmented Algorithm
for i=1:3
    rectangle('Position',bb1(i,:),'EdgeColor','y');
end
% Draw rectangle boxes for Standerd Ground Truth
for i=1:3
    rectangle('Position',groundTruthBoxes(i,:),'EdgeColor','g');
end    
%Evaluate the overlap accuracy against the ground truth data.
[precision,recall] = bboxPrecisionRecall(bb1,groundTruthBoxes)

segmented image Result on Command window

1 Ответ

2 голосов
/ 08 июля 2019

Это из-за коэффициента обнаружения treshold.

Третий вход в функцию (по умолчанию 0,5) определяет минимальное перекрытие между 2 полями, чтобы считать их «совпадающими».Ваши ящики настолько различаются по размеру, что метод предполагает, что они просто не совпадают, т.е. не смотрят на одно и то же.Вы можете изменить это значение для изменения выходного сигнала.

Например:

[precision,recall] = bboxPrecisionRecall(bb1,groundTruthBoxes,0)
precision =

     1


recall =

     1

или

[precision,recall] = bboxPrecisionRecall(bb1,groundTruthBoxes,0.1)
precision =

    0.6667


recall =

    0.6667
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...