本文介绍了尝试计算图像分割结果的准确性时,为什么输出为0?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用.

该函数的第三个输入(默认值为0.5)指定2个框之间的最小重叠,以将其视为匹配".您的盒子尺寸如此之大,以致于该方法假定它们根本不匹配,即没有看到相同的东西.您可以更改此值以改变输出.

例如:

  [precision,recall] = bboxPrecisionRecall(bb1,groundTruthBoxes,0)精度=1个召回=1个 

  [precision,recall] = bboxPrecisionRecall(bb1,groundTruthBoxes,0.1)精度=0.6667召回=0.6667 

I checked the accuracy of a segmentation method using the bboxPrecisionRecall function in Matlab version '9.4.0.857798 (R2018a) Update 2' and test result of an algorithm using IESK-ArDB dataset. The database is freely available here. Samples of database images and . I get 0s as output when trying to calculate the accuracy. What shall I do to get real results for my segmented algorithm?

The Code is below:

%% 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)
解决方案

It's because of the detection ratio treshold.

The third input to the function (default 0.5) specifies the minimum overlap between 2 boxes to consider them "matching". Your boxes are so different in size that the method assumes they are simply not matching, i.e. not looking at the same thing. You can change this value to vary the output.

For example:

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

     1


recall =

     1

or

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

    0.6667


recall =

    0.6667

这篇关于尝试计算图像分割结果的准确性时,为什么输出为0?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 11:31
查看更多