主要内容

evaluateDetectionPrecision

评估对象检测的精度度量

描述

平均专制= evaluateDetectionPrecision (检测结果groundTruthData的平均精度检测结果相比groundTruthData。您可以使用平均精度来测量对象检测器的性能。对于多字母检测器,函数返回平均专制作为每个对象类的得分向量,其顺序为groundTruthData

例子

[平均专制回忆精度] =评估预设(___返回数据点,用于使用前一个语法中的输入参数绘制精度召回曲线。

[___] =评估预设(___阈值指定用于将检测分配给地面真实框的重叠阈值。

例子

全部折叠

此示例显示了如何评估备用yolo v2对象检测器。

加载车辆地面真实数据

加载一个包含车辆训练数据的表。第一列包含训练图像,其余列包含已标记的边界框。

data = load(“vehicleTrainingData.mat”);trainingData = data.vehicleTrainingData;

将fullpath添加到本地车辆数据文件夹。

dataDir = fullfile (toolboxdir ('想象'),'VisionData');trainingData。imageFilename = fullfile(dataDir, trainingData.imageFilename);

使用表中的文件创建一个imageDatastore。

imd = imageDatastore (trainingData.imageFilename);

使用表中的标签列创建BoxLabeldAtastore。

BLDS = BoxLabeldAtastore(TrainingData(:,2:结束));

加载YOLOv2检测器进行检测

装载包含图层图的探测器以进行训练。

vehicleDetector =负载(“yolov2VehicleDetector.mat”);探测器=车辆levicetector.detector;

评估并绘制结果

使用imageageataStore运行探测器。

结果=检测(探测器,IMDS);

评估对实际数据的结果。

[AP,召回,精度] =评估recion(结果,BLD);

绘制精度/召回率曲线。

图;情节(记得,精度);网格标题(Sprintf('平均精度= %.1f',ap))

使用预装的地面真实信息训练基于ACF的探测器。在训练图像上运行检测器。评估检测器并显示精密召回曲线。

加载地面真值表。

加载('stopsignsandcars.mat')stopsigns = stopsignsandcars(:,1:2);stopsigns.imageFilename = fullfile(toolboxdir('想象'),'VisionData'......stopsigns.imagefilename);

训练基于acf的检测器。

探测器= trainACFObjectDetector (stopSigns,“NegativeSamplesFactor”2);
ACF对象检测器训练训练分为4个阶段。模型尺寸为34x31。(~100% Completed)计算近似系数…计算聚合通道功能…已完成。-------------------------------------------- 阶段1:样本的负面例子(~ 100%)完成计算聚合通道特性…完成。用42个正面例子和84个负面例子训练分类器…经过训练的分类器有19个弱学习者。-------------------------------------------- 阶段2:样本负面例子(~ 100%完成)发现了84个新的负面例子进行训练。计算聚合通道功能…已完成。用42个正面例子和84个负面例子训练分类器… The trained classifier has 20 weak learners. -------------------------------------------- Stage 3: Sample negative examples(~100% Completed) Found 84 new negative examples for training. Compute aggregated channel features...Completed. Train classifier with 42 positive examples and 84 negative examples...Completed. The trained classifier has 54 weak learners. -------------------------------------------- Stage 4: Sample negative examples(~100% Completed) Found 84 new negative examples for training. Compute aggregated channel features...Completed. Train classifier with 42 positive examples and 84 negative examples...Completed. The trained classifier has 61 weak learners. -------------------------------------------- ACF object detector training is completed. Elapsed time is 62.5408 seconds.

创建一个表来存储结果。

numimages =高度(stopsigns);结果=表(“大小”[numImages 2],......“VariableTypes”,{“细胞”“细胞”},......'variablenames',{'盒子''分数'});

在训练图像上运行检测器。将结果存储为一个表。

为了i = 1:numimages i = imread(stopsigns.imagefilename {i});[bboxes,scores] =检测(探测器,i);结果.Boxes {i} = bboxes;结果。{i} =分数;结尾

评估对实际数据的结果。获得精确统计。

[据美联社、召回、精密]= evaluateDetectionPrecision(结果,stopSigns (:, 2));

绘制精密召回曲线。

图绘图(召回,精度)网格标题(Sprintf('平均精度=%.1f'据美联社)),

图包含轴。标题平均精度= 0.7的轴包含类型线的对象。

输入参数

全部折叠

对象位置和分数,指定为包含每个检测到的对象的边界框和分数的双列表。对于多字母检测,第三列包含每个检测的预测标签。边界框必须存储在一个m-By-4单元阵列。分数必须存储在一个m- 1个单元格阵列,标签必须作为分类向量存储。

在检测对象时,可以通过使用创建检测结果表imageDatastore

ds = imageDatastore (stopSigns.imageFilename);detectionResults =检测(检测器,ds);

数据类型:表格

标记为ground truth,指定为数据存储或表。

每个边界框的格式为[Xy宽度高度].

  • 数据存储—一个数据存储读物函数返回一个单元格数组或包含至少两列边界框和标签单元格向量的表。的单元格数组中m格式为[的-by-4矩阵Xy宽度高度].数据存储的读物函数必须返回其中一种格式:

    • {盒子标签} - - -boxlabeldatastore.创建这种类型的数据存储。

    • {图片盒子标签} - 一个组合的数据存储。例如,使用结合IMDS.BLDS.).

    boxlabeldatastore.

  • 表 - 一个或多个列。所有列包含边界框。每列必须是包含的单元格向量m表示单个对象类的-by-4矩阵,例如停止标志carRear, 或者carFront。列包含4元件双数组m格式为[Xy宽度高度].该格式指定相应图像中边界框的左上角位置和大小。

将检测指定为数值标量的地面真值盒的重叠阈值。重叠比计算为并并的交点。

输出参数

全部折叠

在所有检测结果上的平均精度,作为数字标量或向量返回。精度是真正实例与检测器中所有正实例的比率,基于地面真值。对于多类检测器,平均精度是每个对象类的平均精度分数的向量。

从每个检测中收回作为m-1个数字标量或作为单元数组的1向量。长度m等于1 +分配给类的检测次数。例如,如果您的检测结果包含4个带有类标签的检测“汽车”, 然后回忆包含5个元素。召回的第一个值总是0.

记起是探测器中真阳性实例与真阳性和假阴性之和的比率,基于地面真值。对于一个多类检测器,回忆精度是单元格数组,其中每个单元格包含每个对象类的数据点。

每次检测的精度值,返回为m-1个数字标量或作为单元数组的1向量。长度m等于1 +分配给类的检测次数。例如,如果您的检测结果包含4个带有类标签的检测“汽车”, 然后精度包含5个元素。第一个值精度总是1

精度是真正实例与检测器中所有正实例的比率,基于地面真值。对于多级探测器,回忆精度是单元格数组,其中每个单元格包含每个对象类的数据点。

在R2017A介绍