主要内容

boxLabelDatastore

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

描述

boxLabelDatastore对象为边界框标签数据创建数据存储。使用此对象读取带有标签的边界框数据以进行对象检测。

从。中读取边界框标签数据boxLabelDatastore对象,使用函数。这个对象函数返回一个有两列或三列的单元格数组。的组合可以创建数据存储boxLabelDatastore对象与一个ImageDatastore对象使用结合对象的功能。使用组合数据存储来训练对象检测器,使用诸如trainYOLOv2ObjectDetectortrainFasterRCNNObjectDetector.您可以使用对象函数访问和管理数据存储中的数据。修改ReadSize属性,则可以使用点表示法。

创建

描述

例子

建筑物= boxLabelDatastore (tbl1,…,tbln创建一个boxLabelDatastore对象,该对象来自一个或多个包含带标签的边界框数据的表。

建筑物= boxLabelDatastore (tbl1、……tblnbSet创建一个boxLabelDatastore对象从一个bigimage中块位置指定的分辨率级别、块大小和块位置bSet

输入参数

全部展开

标记为边界框数据,指定为具有一个或多个列的表。每个表对应一组标签。包围框可以是轴对齐的矩形、旋转的矩形或长方体。下表描述了包围框的格式。

边界框 描述
Axis-aligned矩形

在像素坐标中定义为-乘4的数字矩阵,列的形式[xywh),地点:

  • 为轴对齐矩形的数目。

  • xy指定矩形的左上角。

  • w指定矩形的宽度,即矩形沿边框的长度x设在。

  • h指定矩形的高度,即矩形沿边框的长度y设在。

旋转的矩形

在空间坐标中定义为-乘5的数字矩阵,其行形式为[xctryctrxlenylen偏航),地点:

  • 为旋转矩形的数目。

  • xctryctr指定矩形的中心。

  • xlen指定矩形的宽度,即矩形沿边框的长度x设在前旋转。

  • ylen指定矩形的高度,即矩形沿边框的长度y设在前旋转。

  • 偏航指定旋转角度(以度为单位)。围绕包围盒的中心旋转是顺时针方向的。

正方形矩形旋转-30度。

长方体

在空间坐标中定义为-乘9的数字矩阵,其行形式为[xctryctrzctrxlenylenzlenxrotyrotzrot),地点:

  • 为长方体的个数。

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

  • xlenylen,zlen指定长方体的长度沿x设在,y设在,z-axis,分别在旋转前。

  • xrotyrot,zrot的周围指定长方体的旋转角度x设在,y设在,z分别设在。的xrotyrot,zrot旋转角是围绕长方体中心的度数。每一个旋转相对于相关空间轴的正方向是顺时针方向。这个函数计算旋转矩阵ZYX股票阶欧拉角[xrotyrotzrot].

该图显示了这些值如何确定长方体的位置。

  • 包含一个或多个列的表:

    所有列都包含边框。每一列必须包含一个单元格向量——- - - - - -N矩阵。图像的数量是和吗N表示单个对象类,例如stopSigncarRear,或carFront

  • 有两列的表。

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

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

数据类型:表格

块位置,指定为blockLocationSet对象。控件可以创建此对象balanceBoxLabels函数。

属性

全部展开

此属性是只读的。

标记的边界框数据,指定为N的- × 2单元矩阵N图像。第一列必须是包含包围框的单元格向量。单元格中的每个元素都包含一个向量,表示轴对齐的矩形、旋转的矩形或长方体。第二列必须是包含对应于每个边界框的标签名称的单元格向量。一个-by-1分类向量表示每个标签名。

边界框的描述

边界框 细胞向量 格式
Axis-aligned矩形 4对边界框 xy宽度高度
旋转的矩形 5对边界框 xcenterycenter宽度高度偏航
长方体 9的边界框 xcenterycenterzcenter宽度高度深度处方变化中rz

的每次调用中读取的标签数据的最大行数函数,指定为正整数。

对象的功能

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

例子

全部折叠

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

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

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

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

估计锚盒使用boxLabelDatastore对象。

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

指定图像大小。

inputImageSize = (128228 3);

指定要检测的类的数量。

numClasses = 1;

YOLO v2网络使用预培训的ResNet-50网络作为基础网络。

网络= resnet50 ();

指定用于特征提取的网络层。你可以使用analyzeNetwork函数查看网络中所有层的名称。

featureLayer =“activation_49_relu”

创建YOLO v2对象检测网络

lgraph = yolov2Layers(inputImageSize,numClasses,anchorBoxes,network, featureLayer)
lgraph = LayerGraph with properties: Layers: [182×1 nnet.cnn.layer.Layer] Connections: [197×2 table] 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单元阵列{128x228x3 uint8} {[126 78 20 16]} {[vehicle]}

加载包含带有标签的边界框的车辆类别训练数据表。

负载(“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单元阵列{128x228x3 uint8} {[126 78 20 16]} {[vehicle]}
介绍了R2019b