主要内容

boxLabelDatastore

边界框标签数据的数据存储

自从R2019b

描述

boxLabelDatastore对象为边界框标签创建一个数据存储数据。使用这个对象读取标记边界框对象检测数据。

读取数据从一个边界框标签boxLabelDatastore对象,使用函数。这个目标函数返回一个单元阵列和两个或三个列。您可以创建一个数据存储,结合了boxLabelDatastore对象与一个ImageDatastore对象使用结合对象的功能。使用数据存储相结合训练对象探测器使用培训等功能trainYOLOv2ObjectDetectortrainFasterRCNNObjectDetector。你可以访问和管理数据存储中的数据使用对象的功能。修改ReadSize属性,您可以使用点符号。

创建

描述

例子

建筑物= boxLabelDatastore (tbl1,…, tbln)创建一个boxLabelDatastore对象包含标记边界框数据从一个或多个表。

建筑物= boxLabelDatastore (tbl1、……tbln,bSet)创建一个boxLabelDatastore对象从一个bigimage数据通过使用分辨率级别、块大小和块位置指定的块位置bSet

输入参数

全部展开

标记边界框数据,指定为一个表与一个或多个列。每个表对应一组标签。边界框可以axis-aligned矩形,旋转矩形或长方体。下表描述了边界框的格式。

边界框 描述
Axis-aligned矩形

作为一个定义在空间坐标4数字矩阵形式的行(xywh),地点:

  • 是axis-aligned矩形的数量。

  • xy指定矩形的左上角。

  • w指定矩形的宽度,也就是沿其长度x设在。

  • h指定矩形的高,这是它的长度沿y设在。

旋转的矩形

作为一个定义在空间坐标5数字矩阵形式的行(xctryctrxlenylen偏航),地点:

  • 是旋转的数量的矩形。

  • xctryctr指定矩形的中心。

  • xlen指定矩形的宽度,也就是沿其长度x设在前旋转。

  • ylen指定矩形的高,这是它的长度沿y设在前旋转。

  • 偏航指定的旋转角度。旋转是clockwise-positive边界框的中心。

方矩形旋转-30度。

长方体

作为一个定义在空间坐标9数字矩阵形式的行(xctryctrzctrxlenylenzlenxrotyrotzrot),地点:

  • 长方体的数量。

  • xctr,yctr,zctr指定长方体的中心。

  • xlen,ylen,zlen指定的长方体的长度x设在,y设在,z分别设在前旋转。

  • xrot,yrot,zrot指定的长方体的旋转角度x设在,y设在,z分别设在。的xrot,yrot,zrot旋转角度对立方体的中心度。每个旋转clockwise-positive对相关的空间轴的正方向。函数计算旋转矩阵的假设ZYX股票阶欧拉角(xrotyrotzrot]。

图中显示这些值如何确定一个长方体的位置。

预计长方体

8向量的形式(x1, y1, w1, h1, x2, y2, w2, h2),地点:

  • 是标签的帧数。

  • (x1, y1)指定了x,y正面的左上角位置的坐标投影长方体

  • w1指定宽度的正面投影长方体。

  • h1指定高度的正面投影长方体。

  • x2, y2指定了x,y左上角的坐标位置的背面投影长方体。

  • w2指定宽度的背面投影长方体。

  • h2指定高度的背面投影长方体。

图中显示这些值如何确定一个长方体的位置。

标签预计长方体

  • 一个表与一个或多个列:

    所有列包含边界框。每一列必须包含一个细胞向量——- - - - - -N矩阵。的图片和数量吗N代表一个对象类,如stopSign,carRear,或carFront

  • 一个表有两列。

    第一列包含边界框。第二列必须是一个细胞向量包含标签名称对应于每一个边界框。每个元素必须是在细胞中向量1分类或字符串向量,代表的数量标签。

创建一个地面真值表,使用图片标志贴标签机视频应用。创建一个表的训练数据生成的地面实况,使用objectDetectorTrainingData函数。

数据类型:

块位置,指定为一个blockLocationSet对象。您可以创建这个对象使用balanceBoxLabels函数。

属性

全部展开

这个属性是只读的。

标记边界框数据,指定为一个N2细胞矩阵N图像。第一列必须是一个细胞包含边界框的向量。细胞中的每个元素包含一个向量代表一个axis-aligned矩形,矩形旋转,或一个长方体。第二列必须是一个细胞向量包含标签名称对应于每一个边界框。一个1分类向量代表每个标签名称。

边界框的描述

边界框 细胞向量 格式
Axis-aligned矩形 4对边界框 (x,y,宽度,高度]
旋转的矩形 5对边界框 (xcenter,ycenter,宽度,高度,偏航]
长方体 9的边界框 (xcenter,ycenter,zcenter,宽度,高度,深度,处方,变化中,rz]
预计长方体 8向量为边界框 (x1,日元,w1,h1,x2,y2,w2,h2]

最大数量的行标签数据的读每个调用函数,指定为一个正整数。

对象的功能

结合 合并来自多个数据存储的数据
countEachLabel 数出现的像素或盒标签
hasdata 确定数据是否可以读取数据存储
numpartitions 数据存储的分区数量
分区 分区一个标签数据存储
预览 读第一行数据存储的数据
进步 百分比的数据从数据存储中读取
从数据存储中读取数据
readall 读取所有数据存储中的数据
重置 数据存储重置为初始状态
洗牌 返回版本的数据存储
子集 创建数据存储或文件集的子集
变换 变换数据存储
isPartitionable 确定是否可分区的数据存储
isShuffleable 确定是否shuffleable数据存储

例子

全部折叠

这个例子展示了如何使用一个表包含估计锚箱的训练数据。第一列包含训练图像和其余列包含标记的边界框。

data =负载(“vehicleTrainingData.mat”);trainingData = data.vehicleTrainingData;

创建一个boxLabelDatastore对象使用训练数据的标记的边界框。

建筑物= boxLabelDatastore (trainingData(:, 2:结束));

估计锚箱使用boxLabelDatastore对象。

numAnchors = 5;anchorBoxes = estimateAnchorBoxes(建筑物、numAnchors);

指定图像大小。

inputImageSize = (128228 3);

指定类的数量来检测。

numClasses = 1;

使用pretrained YOLO v2意思ResNet-50网络作为基础网络的网络。

网络= resnet50 ();

指定要使用的网络层特征提取。您可以使用analyzeNetwork函数名称在网络看到所有的层。

featureLayer =“activation_49_relu”;

创建YOLO v2意思对象检测网络。

lgraph = yolov2Layers (inputImageSize numClasses anchorBoxes,网络,featureLayer)
lgraph = LayerGraph属性:层:[182×1 nnet.cnn.layer.Layer]连接:[197×2表]InputNames: {“input_1”} OutputNames: {“yolov2OutputLayer”}

可视化网络使用网络分析仪。

analyzeNetwork (lgraph)

加载一个汽车类训练数据表,其中包含边界盒子和标签。

data =负载(“vehicleTrainingData.mat”);trainingData = data.vehicleTrainingData;

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

dataDir = fullfile (toolboxdir (“愿景”),“visiondata”);trainingData。imageFilename = fullfile (dataDir trainingData.imageFilename);

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

imd = imageDatastore (trainingData.imageFilename);

创建一个boxLabelDatastore使用与标签数据表对象。

建筑物= boxLabelDatastore (trainingData(:, 2:结束));

结合imageDatastoreboxLabelDatastore对象。

cd =结合(imd,建筑物);

读取数据进行训练。使用目标函数返回图像边界框和标签。

读(cds)
ans =1×3单元阵列{128 x228x3 uint8}{【126 78 20 16】}{[汽车]}

加载一个汽车类训练数据表,其中包含边界盒子和标签。

负载(“vehicleTrainingData.mat”);

加载一个停车标志和汽车类训练数据表包含边界框和标签。

负载(“stopSignsAndCars.mat”);

从训练数据创建地面真值表。

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

创建一个boxLabelDatastore与车辆对象使用两个表:一个标签数据和其他汽车停车标志和标签数据。

建筑物= boxLabelDatastore (vehiclesTbl stopSignsTbl);

创建一个imageDatastore对象使用训练数据表的文件名。

dataDir = fullfile (toolboxdir (“愿景”),“visiondata”);vehicleFiles = fullfile (dataDir vehicleTrainingData.imageFilename);stopSignFiles = fullfile (dataDir stopSignsAndCars.imageFilename);imd = imageDatastore ([vehicleFiles; stopSignFiles]);

结合imageDatastoreboxLabelDatastore对象。

cd =结合(imd,建筑物);

读取数据进行训练。使用目标函数返回图像边界框和标签。

读(cds)
ans =1×3单元阵列{128 x228x3 uint8}{【126 78 20 16】}{[汽车]}

版本历史

介绍了R2019b

全部展开