balanceBoxLabels
平衡包围框标签用于对象检测
语法
描述
平衡边界框标签,locationSet
= balanceBoxLabels (boxLabels
,blockedImages
,blockSize
,numObservations
)boxLabels
,通过对包含较少频繁类的图像块进行过采样,包含在被阻塞图像对象的集合中blockedImages
.numObservations
是所需的街区位置的数目,和blockSize
指定块大小。
使用名称-值参数指定所选块的其他方面。locationSet
= balanceBoxLabels (boxLabels
,blockedImages
,blockSize
,numObservations
,名称,值
)
例子
在阻塞图像对象检测中使用的样本块集
加载包含一个图像的框和标签的框标签数据。每个盒子的高度和宽度为[20,20]。
D =负载(“balanceBoxLabelsData.mat”);boxLabels = d.BoxLabels;
创建大小的块映像[500500]
.
blockedImages = blockedImage(零([500,500]));
选择每个观察的图像大小。
blockSize = [50,50];
可视化地使用直方图来识别框标签中的任何类不平衡。
blds = boxLabelDatastore(boxLabels);datasetCount = countEachLabel(blds);图;H1 =直方图(“类别”, datasetCount。标签,“BinCounts”datasetCount.Count)
h1 =带有属性的直方图:数据:[0x0 categorical]值:[1 11 11 11 11 11 1 11]NumDisplayBins: 12类别:{1x12 cell} DisplayOrder: 'manual'归一化:'count' DisplayStyle: 'bar' FaceColor: 'auto' EdgeColor:[0 0 0 0]显示所有属性
测量箱标的分布情况。如果变异系数大于1,则存在阶级不平衡。
cvBefore = std(datasetCount.Count)/mean(datasetCount.Count)
cvBefore = 1.5746
通过找到每个类的计数的平均值,乘以类的数量,选择一个观察数的启发式值。
numClasses = height(datasetCount);numObservations = mean(datasetCount.Count) * numClasses;
控制一个盒子可以切割使用的数量OverlapThreshold
.使用较低的阈值将在块的边界上切割更多的对象。增加这个值可以减少对象可以在边界处被剪切的数量,代价是不平衡的框标签。
ThresholdValue = 0.5;
平衡boxLabels
使用balanceBoxLabels
函数。
locationSet = balanceBoxLabels(boxLabels,blockedImages,blockSize,...numObservations,“OverlapThreshold”, ThresholdValue);
[==================================================] 100%厉螨 [==================================================] 100%的运行时间:就是估计剩余时间:就是平衡箱标签完成。
计算图像块中包含的标签。
bldsBalanced = boxLabelDatastore(boxLabels,locationSet);balancedDatasetCount = countEachLabel(bldsBalanced);
将另一个直方图覆盖在原始标签计数上,以查看框标签是否平衡。如果通过查看直方图,标签似乎不平衡,则增加的值numObservations
.
持有在;balancedLabels = balancedDatasetCount.Label;balancedCount = balancedDatasetCount.Count;H2 =直方图(“类别”balancedLabels,“BinCounts”, balancedCount);标题(h2。父母,平衡类标签(OverlapThreshold:+ ThresholdValue +“)”);传奇(h2。家长,{“之前”,“后”});
测量新平衡的盒标的分布情况。
cvAfter = std(balancedCount)/mean(balancedCount)
cvAfter = 0.4588
输入参数
boxLabels
- - - - - -标记包围框数据
有两列的表
标记的包围框数据,指定为具有两列的表。
第一列包含边界框,必须是单元格向量。单元格向量中的每个元素包含米-by-4矩阵,格式为[x,y,宽度,高度]米盒子。
第二列必须是单元格向量,其中包含与每个包围框对应的标签名称。单元格向量中的每个元素必须是米-by-1分类向量或字符串向量。
为了从真实数据中创建一个盒子标签表,
属性创建边界框标签数据存储
objectDetectorTrainingData
函数。您可以获取
boxLabels
从LabelData
属性返回的框标签数据存储objectDetectorTrainingData
, (建筑物。LabelData
).
blockedImages
- - - - - -标记的阻塞图像
的数组blockedImage
对象
的数组指定的标记块图像blockedImage
包含像素标签图像的对象。
blockSize
- - - - - -块大小
正整数的两元行向量
读取数据的块大小,指定为正整数的两元素行向量,[numrows,numcols].第一个元素指定块中的行数。第二个元素指定列数。
numObservations
- - - - - -块状位置数目
正整数
要返回的块位置数,指定为正整数。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:'OverlapThreshold
',' 1 '
水平
- - - - - -每个图像的分辨率级别
1
(默认)|正整数标量|B正整数的-by-1向量
数组中每个图像的分辨率级别blockedImage
对象,指定为正整数标量或B-by-1的正整数向量,其中B数组的长度是blockedImage
对象。
OverlapThreshold
- - - - - -重叠的阈值
1
(默认)|范围[0,1]中的标量
重叠阈值,指定为范围[0,1]中的正标量。当边界框和裁剪窗口之间的重叠大于阈值时,控件中的框boxLabels
输入的图像被剪切到窗口边框的块上。当重叠量小于阈值时,丢弃盒。当您降低阈值时,对象的一部分可能会被丢弃。若要减少可以在边界处剪切对象的数量,请增加阈值。增加阈值还会导致框标签不平衡。
边界框和裁剪窗口之间的重叠量定义为。
详细的
- - - - - -显示进度信息
真正的
或1
(默认)|假
或0
显示以数字或逻辑形式指定的进度信息1
(真正的
)或0
(假
).将此属性设置为真正的
显示信息。
输出参数
locationSet
-平衡盒标签
blockLocationSet
对象
平衡框标签,返回为blockLocationSet
对象。对象包含numObservations
平衡块的位置数量,每个大小blockSize
.
算法
版本历史
R2020a中引入R2021a:bigLabeledImages
参数不建议使用。
的bigLabeledImages
参数,该参数支持金宝appbigimage
对象,不推荐使用。使用blockedImages
参数代替,它支持金宝appblockedImage
对象。的blockedImage
对象提供了几个优点,包括对N-D处理的扩展、更简单的接口以及对读写非标准图像格式的自定义支持。金宝app
尽管目前还没有计划移除bigLabeledImages
参数此时切换到blockedImages
参数来利用额外的功能和灵活性。
要更新代码,请遵循以下步骤:
取代
bigimage
对象的输入blockedImage
此函数的第二个参数的对象输入。如果你想选择任何一个分辨率不是1的图像块,然后指定'
水平
的名称-值参数。当您希望从分辨率级别为1的所有被阻塞图像中选择块时,可以省略此参数。
下表给出了如何更新代码的示例。
不使用 | 建议更换 |
---|---|
下面的示例从a中选择分辨率级别为1的块 boxLabels = load(“balanceBoxLabelsData.mat”) .BoxLabels;Bim = bigimage(0 ([500,500]));blockSize = [50 50];numObservations = 20;locationSet = balanceBoxLabels(boxLabels,bim,1,...blockSize numObservations); |
这里是等价的代码,替换输入 boxLabels = load(“balanceBoxLabelsData.mat”) .BoxLabels;bim = blockedImage(0 ([500,500]));blockSize = [50 50];numObservations = 20;locationSet = balanceBoxLabels(boxLabels,bim,...blockSize numObservations); |
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。