countEachLabel

计数像素或盒标签的发生

描述

计数= countEachLabel(DS返回有关像素或盒标签的含表信息和计数用于输入数据存储,DS

例子

全部收缩

加载包含带有标签的车辆边界框的表。

加载('vehicleTrainingData.mat');

加载包含有标签停车标志和汽车边框的表格。

加载('stopSignsAndCars.mat');

结合地面实况盒和标签,但不包括在1列的图像文件名。

vehiclesTbl = vehicleTrainingData(:,2:结束);stopSignsTbl = stopSignsAndCars(:,2:结束);

创建使用2个表,一个与车辆的标签数据和其他与停车标志标注数据的boxLabelDatastore。

BLDS = boxLabelDatastore(vehiclesTbl,stopSignsTbl);TBL = countEachLabel(BLDS)
TBL =4×3表标签计数ImageCount ________ _____ __________车辆336 295 stopSign 42 41 10 carRear 9 carFront 9 8

创建使用标签和相应的标签计数一个直方图。

直方图(“类别”,tbl.Label,'BinCounts',tbl.Count);

创建另一个直方图覆盖相应的图像计数。

保持;直方图(“类别”,tbl.Label,'BinCounts',tbl.ImageCount);

设置图像和像素标签数据的位置。

DATADIR =完整文件(toolboxdir('视力''visiondata');imDir =完整文件(DATADIR,'建造');pxDir =完整文件(DATADIR,'buildingPixelLabels');

利用地面实况图像创建像素标签图像数据存储IMDS和像素标记的图像在pxds

IMDS = imageDatastore(imDir);类名= [“天空”“草”“建造”“人行道”]。pixelLabelID = [1 2 3 4];pxds = pixelLabelDatastore(pxDir,类名,pixelLabelID);pximds = pixelLabelImageDatastore(IMDS,pxds);

在数据集制表像素标签计数。

TBL = countEachLabel(pximds)
TBL =4×3表名称PixelCount ImagePixelCount ____________ __________ _______________ { '天空'} 3.1485e + 05 1.536e + 06 { '草'} 1.5979e + 05 1.536e + 06 { '建设'} 1.0312e + 06 1.536e + 06 { '人行道'}25313 9.216e + 05

使用均匀的现有加权平衡类。

现有= 1 / numel(类名);uniformClassWeights = prior./tbl.PixelCount
uniformClassWeights =4×110-5×0.0794 0.1565 0.0242 0.9876

平衡使用逆频率加权类。

totalNumberOfPixels =总和(tbl.PixelCount);频率= tbl.PixelCount / totalNumberOfPixels;invFreqClassWeights = 1./frequency
invFreqClassWeights =4×14.8632 9.5827 1.4848 60.4900

平衡使用中值频率加权类。

FREQ = tbl.PixelCount ./ tbl.ImagePixelCount
频率=4×10.2050 0.1040 0.6714 0.0275
medFreqClassWeights =中间值(频率)./频率
medFreqClassWeights =4×10.7538 1.4852 0.2301 5.6252

通过使用中值频率加权的像素分类层中的类的权重。

层= pixelClassificationLayer(“类”,tbl.Name,...'ClassWeights',medFreqClassWeights)
层= PixelClassificationLayer与属性:名称: '' 类:[天空草构建人行道] ClassWeights:[4X1双] OutputSize: '自动' 超参数LossFunction: 'crossentropyex'

输入参数

全部收缩

数据存储区具有用于训练语义分割网络或对象检测网络标记数据,指定为pixelLabelDatastorepixelLabelImageDatastore, 要么boxLabelDatastore宾语。

输出参数

全部收缩

标签信息,返回一个表。标记的数据表中包含三个变量。

对于pixelLabelDatastorepixelLabelImageDatastore输入,计数输出包含:

像素数变量 描述
名称 像素标签类名
PixelCount 在课堂上的像素数
ImagePixelCount 图像中的像素总数是有类的一个实例

对于boxLabelDatastore输入,计数输出表包含:

箱计数变量 描述
标签 包装盒标签的类名
计数 所有图像之类的标签总数
ImageCount 包含该类的一个或多个实例的图像总数

提示

输出countEachLabel可用于计算类权重类平衡。例如,对于在标记像素数据信息TBL

  • 均匀类平衡配重的每个类,使得每个包含一个均匀的先验概率:

    numClasses =高度(TBL)之前= 1 / numClasses;classWeights = prior./tbl.PixelCount

  • 逆频率平衡配重的每个类,使得未被充分代表的类被给予更高的权重:

    totalNumberOfPixels =总和(tbl.PixelCount)频率= tbl.PixelCount / totalNumberOfPixels;classWeights = 1./frequency

  • 中频配重的每个类使用中频。用于每个类别的权重被定义为中位数(imageFreq)/imageFreq(c)中,在那里imageFreq(c)表示由像素的总数在有级等级(c)的一个实例的图像分割的类的像素的数目:

    imageFreq = tbl.PixelCount ./ tbl.ImagePixelCount classWeights =中间值(imageFreq)./ imageFreq
    在计算权重类可以传递到pixelClassificationLayer

介绍了在R2017b