文档帮助中心文档
用于深度学习对象探测器的锚箱
anchorBoxes = estimateAnchorBoxes (trainingData numAnchors)
[anchorboxes,meaniou] = extimateanchorboxes(TrainingData,Numanchors)
例子
anchorBoxes= estimateAnchorBoxes (TrainingData.,numAnchors)使用培训数据估计指定的锚框。
anchorBoxes= estimateAnchorBoxes (TrainingData.,numAnchors)
anchorBoxes
TrainingData.
numAnchors
[anchorBoxes,meanIoU] = extimateanchorboxes(TrainingData.,numAnchors)另外返回每个集群中锚框的平均交于并(IoU)值。
[anchorBoxes,meanIoU] = extimateanchorboxes(TrainingData.,numAnchors)
meanIoU
全部收缩
此示例使用:
此示例显示如何使用包含培训数据的表来估算锚框。第一列包含训练图像,剩余列包含标记的边界框。
data =负载('vevicletrainingdata.mat');trainingData = data.vehicletRainingData;
创建一个boxLabelDatastore对象使用来自培训数据的标记边界框。
boxLabelDatastore
建筑物= boxLabelDatastore (trainingData(:, 2:结束));
估计锚盒使用boxLabelDatastore目的。
numanchors = 5;anchorboxes = extimateanchorboxes(BLD,Numanchors);
指定图像大小。
InputImagesize = [128,228,3];
指定要检测的类的数量。
numclasses = 1;
使用预先使用的Reset-50网络作为YOLO V2网络的基础网络。
网络= resnet50 ();
指定要用于特征提取的网络层。你可以使用分析函数查看网络中的所有图层名称。
分析
FeatureLayer =.'activation_49_relu';
创建YOLO V2对象检测网络。
Lgraph = Yolov2Layers(InputImagesize,Numcrasses,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)
锚盒是深度学习对象探测器的重要参数,如更快的R-CNN和YOLO V2。锚箱的形状,缩放和数量会影响探测器的效率和准确性。
有关更多信息,请参阅用于对象检测的锚盒.
负载培训数据
加载车辆数据集,其中包含295个图像和关联的框标签。
data =负载('vevicletrainingdata.mat');vehicleDataset = data.vehicleTrainingData;
将完整路径添加到本地车辆数据文件夹中。
datadir = fullfile(toolboxdir(“愿景”),“visiondata”);vevicledataset.imagefilename = fullfile(datadir,vevicledataset.imagefilename);
显示数据集摘要。
摘要(车辆题目)
变量:imagefilename:295×1个字符向量阵列车辆:295×1个细胞
可视化地面真相盒分布
可视化标记框,以便更好地理解数据集中显示的对象大小范围。
将所有的地面真值框合并到一个数组中。
Allboxes = VertCAT(车辆ledledataset.vehicle {:});
绘制盒子面积和盒子长宽比。
Aspectratio = Allboxes(:,3)./ Allboxes(:,4);区域= Prod(Allboxes(:,3:4),2);图分散(区域,aspectratio)xlabel(“箱区”)ylabel(”“纵横比(宽/高));标题(“框面积与纵横比”)
该图显示了几组具有相似尺寸和形状的物体,因为该组被展开,手动选择锚箱是困难的。估算锚框的更好方法是使用群集算法,可以使用有意义的指标将类似的框分组。
估算锚箱
估算锚箱,从训练数据使用estimateAnchorBoxes函数,该函数使用IoU距离度量。
estimateAnchorBoxes
基于IoU的距离度量不受盒子大小的影响,不像欧几里得距离度量,当盒子大小增加[1]时,欧几里得距离度量会产生更大的误差。此外,使用IoU距离度量可以将长宽比和大小相似的框聚在一起,从而得到适合数据的锚框估计值。
创建一个boxLabelDatastore在车辆数据集中使用地面真相框。如果用于训练对象检测器的预处理步骤涉及调整图像的大小,请使用转变和bboxresize.调整边界框中的大小boxLabelDatastore在估计锚盒之前。
转变
bboxresize.
trainingData = boxLabelDatastore (vehicleDataset(:, 2:结束));
选择锚点的数量并估计锚盒使用estimateAnchorBoxes函数。
Numanchors =.5;[anchorboxes,meaniou] = extimateanchorboxes(TrainingData,Numanchors);anchorBoxes
anchorBoxes =5×221 27 87 116 67 92 43 61 86 105
选择锚的数量是另一个训练超参数,需要使用经验分析仔细选择。判断估计锚盒的一个质量度量是每个聚类中锚盒的平均IoU。的estimateAnchorBoxes函数使用一个k-表示使用IoU距离度量来计算重叠的聚类算法,1 -bboxoverlapratio(allBoxes boxInCluster).
1 -
bboxoverlapratio
(allBoxes boxInCluster)
meanIoU = 0.8411
大于0.5的平均值可确保锚盒在训练数据中的框中重叠。增加锚点的数量可以改善平均iou测量。然而,在物体检测器中使用更多锚盒也可以增加计算成本并导致过度拟合,这导致差的检测器性能差。
浏览一系列值并绘制平均IoU与锚框数量的对比图,以衡量锚框数量与平均IoU之间的权衡。
Maxnumanchors = 15;Meaniou = Zeros([Maxnumanchors,1]);锚盒=细胞(Maxnumanchors,1);为k = 1: maxNumAnchors%估计锚和平均值。[anchorBoxes {k}, meanIoU (k)] = estimateAnchorBoxes (trainingData k);结束图绘图(1:Maxnumanchors,Meaniou,“o”)ylabel(“意思是借据”)xlabel(“锚”) 标题(“锚点数目与平均欠条数目”)
使用两个锚箱会导致平均IoU值大于0.65,而使用超过7个锚箱只会对平均IoU值产生边际改善。考虑到这些结果,下一步是使用2到6之间的值来训练和评估多个目标探测器。这种经验分析有助于确定满足应用程序性能需求(如检测速度或准确性)所需的锚盒数量。
培训数据,指定为数据存储,返回具有两个或多个列的单元格数组或表。边界框必须是单元格数组米-4格式的矩阵[x,y,宽度,高度]。
数据存储必须是以下之一:
一个boxLabelDatastore格式[盒子,标签]
{图片,盒子,标签} -一个组合的数据存储。例如,使用结合(洛桑国际管理发展学院,建筑物)。
结合
洛桑国际管理发展学院
建筑物
函数返回的锚框数量,指定为整数。
锚盒,作为一个返回N2矩阵,N是锚框的数量,每个条目都有格式[高度,宽度]。用numAnchors指定锚盒的数量。
距离度量,作为标量值返回。距离度量提供每个群集中的锚框的平均交叉联合(iou)值。确保锚盒在培训数据中的盒子中均匀地重叠,meanIoU值必须大于0.5。的k- 模拟算法使用iou距离度量来计算使用等式的重叠1-bboxoverlapratio(box1,box2.)。
1
box1,box2.
fasterRCNNObjectDetector
yolov2Layers
您有此示例的修改版本。您是否希望使用您的编辑打开此示例?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系您当地的办公室