balancePixelLabels

通过对大图像中的块位置进行过采样来平衡像素标签

描述

实例

封锁地点=平衡像素标签(bigLabeledImages,水平,块大小,numObservations)创建块位置的列表,封锁地点,在大标签图片中,bigLabeledImages,这将产生一个类平衡的数据集。这个封锁地点返回的值基于块的分辨率级别数,水平,具有指定的块大小,块大小

这个balancePixelLabels函数通过对包含不太常见标签的图像区域进行过采样来平衡大图像数据集。当用于培训工作流(如深度学习中的语义分割)时,平衡的数据集可以产生更好的结果。

封锁地点= (___“UseParallel”,必然的)另外指定是使用新的并行池还是现有的并行池。在前面语法的输入参数之外指定此参数。

此语法需要并行计算工具箱™.

例子

全部崩溃

加载带标签的图像数据集。

dataDir = fullfile (toolboxdir (“愿景”),“视觉数据”);imDir=fullfile(dataDir,“建筑”);labelDir=fullfile(dataDir,“构建像素标签”);imageFileList=dir(imDir);labelFileList=dir(labelDir);imageFileList=imageFileList(3:end);labelFileList=labelFileList(3:end);pixelLabelID=[1 2 3 4];类名=[“天空”“草”“建筑”“人行道”];

计算已标记图像中的像素标签出现次数。

对于idx = 1:numel(labelFileList) bigImages(idx) = bigimage(imread([imDir filesep imageFileList(idx).name]));bigLabeledImages(idx) = bigimage(imread([labelDir filesep labelFileList(idx).name]),“类”一会,“像素标签”, pixelLabelID);终止

设置图像的分辨率级别和块大小。

bigimageLevel = 1;blockSize = [20 15];

创建一个bigimageDatastore从图像数据集。

blabelds=bigimageDatastore(BigLabeledImage、bigimageLevel、,“块大小”,块大小);

检查每个类的像素标签出现情况。像素标签图像中的类不均衡。

labelCounts = countEachLabel (blabelds);

指定块位置的数量。

numObservations=2000;

从标记的图像中选择块位置以实现类平衡。

locationSet=平衡像素标签(BigLabeledImage、bigimageLevel、blockSize、numObservations);

创建一个bigimageDatastore使用块位置。

bimdsBalanced=bigimageDatastore(bigLabeledImages,“BlockLocationSet”, locationSet);

重新计算每个类的像素标签出现次数。

labelCountsBalanced = countEachLabel (bimdsBalanced);

对比原始不均衡标签和新均衡标签。

图;h1=直方图(“类别”,labelCounts.Name,“垃圾计数”,labelCounts.PixelCount);标题(h1.Parent,“原始数据集标签”);

图形h2=直方图(“类别”,labelCountsBalanced.Name,“垃圾计数”,labelCountsBalanced.PixelCount);标题(h2.Parent,“采样块集标签”);

输入参数

全部崩溃

标记为大图像,指定为大图对象或向量大图包含像素标签图像的对象。

图像中每个大图像的块的分辨率级别bigLabeledImages对象,指定为正整数或等于bigLabeledImages输入向量。如果您指定一个标量值,那么所有大标签图像将提供相同分辨率级别的块。

数据类型:双重的

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

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

使用新的或现有的池,指定为数字池或逻辑池1.真正的0错误的。如果未指定此输入,则函数将使用错误的.如果没有激活的并行池,将根据默认的并行设置打开一个新的池。这个数据来源所有输入属性大图对象必须是每个并行辅助对象上的有效路径。

输出参数

全部崩溃

中的块位置bigLabeledImages输入,作为块定位集对象。

算法

为了平衡像素标签,该函数对输入图像中的少数类进行过采样。少数类通过计算完整数据集的总体像素标签计数来确定。该算法遵循以下步骤。

  1. 输入图像数组中的图像被划分为宏块,宏块是块大小输入值。

  2. 该函数计算每个宏块中所有类的像素标签。然后,采用加权随机选择的方法选择少数类出现次数最多的宏块。

  3. 该算法在选定的宏块内使用一个随机块位置来执行过采样。块位置的原点必须始终完全在宏块的限制之内。

  4. 该函数基于为选定宏块找到的类的像素标签计数更新总体标签计数。

  5. 该函数包括新的(过采样)类,以计算新的少数类。

  6. 该过程重复进行,直到处理的块位置数等于numObservations输入值。

在R2020a中引入