主要内容

balanceBoxLabels

平衡包围盒标签用于对象检测

描述

例子

locationSet= balanceBoxLabels (boxLabelsblockedImagesblockSizenumObservations平衡边界盒标签,boxLabels,通过对包含较少频繁类的图像块进行过采样,这些类包含在块图像对象集合中blockedImagesnumObservations是否要求街区位置的数量,和blockSize指定块大小。

locationSet= balanceBoxLabels (boxLabelsblockedImagesblockSizenumObservations名称,值使用名称-值参数指定所选块的其他方面。

例子

全部折叠

加载包含一个图像的框和标签的框标签数据。每个盒子的高度和宽度为[20,20]。

d =负载(“balanceBoxLabelsData.mat”);boxLabels = d.BoxLabels;

创建大小块的图像[500500]

blockedImages = blockedImage (0 ([500500]));

选择每个观测的图像大小。

blockSize = (50,50);

使用直方图可视化,以识别框标签中的任何类不平衡。

建筑物= boxLabelDatastore (boxLabels);datasetCount = countEachLabel(建筑物);图;h1 =直方图(“类别”, datasetCount。标签,“BinCounts”datasetCount.Count)
h1 = Histogram with properties: Data: [0x0 category] Values: [1 11 11 11 11 11 11 11 1 11] NumDisplayBins: 12 Categories: {1x12 cell} DisplayOrder: 'manual' Normalization: 'count' DisplayStyle: 'bar' FaceColor: 'auto' EdgeColor:[0 0 0]显示所有属性

测量盒子标签的分布。如果变异系数大于1,则存在阶级不平衡。

cvBefore =性病(datasetCount.Count) /意味着(datasetCount.Count)
cvBefore = 1.5746

通过寻找每个类的计数的平均值乘以类的数量,选择观察数量的启发式值。

numClasses =身高(datasetCount);nummobations = mean(datasetCount.Count) * numClasses;

控制一个盒子的数量可以削减使用OverlapThreshold.使用较低的阈值将在块的边界切割更多的对象。增加此值可以减少对象在边框上的剪切量,但会牺牲不均衡的框标签。

ThresholdValue = 0.5;

平衡boxLabels使用balanceBoxLabels函数。

locationSet = balanceBoxLabels (boxLabels blockedImages blockSize,...numObservations,“OverlapThreshold”, ThresholdValue);
平衡箱标签为1的图像  [==================================================] 100年 % [==================================================] 100%平衡箱标签完成。

计算包含在图像块中的标签。

bldsBalanced = boxLabelDatastore (boxLabels locationSet);balancedDatasetCount = countEachLabel (bldsBalanced);

叠加另一个直方图对原始标签计数,看看盒子标签是否平衡。如果通过查看直方图显示标签不平衡,则增加值numObservations

持有;balancedLabels = balancedDatasetCount.Label;balancedCount = balancedDatasetCount.Count;h2 =直方图(“类别”balancedLabels,“BinCounts”, balancedCount);标题(h2。父母,“平衡类标签(重叠阈值:”+ ThresholdValue +“)”);传奇(h2。家长,{“之前”“后”});

图中包含一个坐标轴。标题为平衡类标签的轴(OverlapThreshold: 0.5)包含2个类别直方图对象。这些对象表示Before和After。

测量新的平衡盒标签的分布。

cvAfter =性病(balancedCount) /意味着(balancedCount)
cvAfter = 0.4588

输入参数

全部折叠

标记为边界框数据,指定为具有两列的表。

  • 第一列包含包围框,并且必须是单元格向量。单元格向量中的每个元素包含- × 4矩阵的格式[xy宽度高度]盒子。

  • 第二列必须是包含对应于每个边界框的标签名称的单元格向量。单元格向量中的每个元素必须是-by-1分类向量或字符串向量。

要从ground truth数据创建一个盒标签表,

  1. 使用图片标志贴标签机视频应用程序标签你的地面真相。导出标记的地面真实数据到您的工作空间。

  2. 控件创建边界框标签数据存储objectDetectorTrainingData函数。

  3. 你可以获得boxLabelsLabelData返回的框标签数据存储的属性objectDetectorTrainingData, (建筑物。LabelData).

标记的块图像,指定为blockedImage包含像素标签图像的对象。

读取数据的块大小,指定为正整数的双元素行向量,[numrowsnumcols].第一个元素指定块中的行数。第二个元素指定列的数目。

要返回的块位置的数目,指定为正整数。

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:OverlapThreshold”,' 1 '

数组中每个图像的分辨率级别blockedImage对象,指定为正整数标量或B-乘1的正整数向量,其中B数组的长度是blockedImage对象。

重叠阈值,指定为范围[0,1]内的正标量。当边界框和裁剪窗口之间的重叠大于阈值时,在boxLabels输入剪辑到图像块窗口边界。当重叠小于阈值时,盒将被丢弃。当您降低阈值时,对象的一部分可能会被丢弃。若要减少对象可在边界处剪切的数量,请增加阈值。增加阈值也会导致盒标不平衡。

边界框和裁剪窗口之间的重叠量定义为。

一个 r e 一个 b b o x 一个 w n d o w / 一个 r e 一个 b b o x 一个

显示以数字或逻辑方式指定的进度信息1真正的)或0).将此属性设置为真正的显示信息。

输出参数

全部折叠

平衡的盒子标签,返回作为blockLocationSet对象。对象包含numObservations平衡块的位置数,每个大小相同blockSize

算法

全部折叠

平衡箱标签

为了平衡框标签,该函数在块图像或大图像中表示较少的样例类上。框标签在整个数据集上进行计数,并根据每个类计数进行排序。每个图像大小被分割成几个象限,基于blockSize输入值。该算法在每个象限内随机选取几个类较少的块。没有任何对象的块将被丢弃。一旦选择了指定数量的块,平衡就停止了。

检查平衡

您可以通过比较平衡前后的标签计数直方图来检查平衡是否成功。你也可以检查变异系数的值。为了获得最佳结果,该值应该小于原始值。欲了解更多信息,请浏览美国国家标准与技术研究所(NIST)网站变异系数为更多的信息。

兼容性的考虑

全部展开

不建议从R2021a开始

介绍了R2020a