主要内容

trainCascadeObjectDetector

级联对象探测器模型训练

描述

例子

trainCascadeObjectDetector (outputXMLFilename,positiveInstances,negativeImages)写一个训练有素的级联探测器XML文件命名,outputXMLFilename。文件名必须包含一个XML扩展。更详细的解释在这个函数是如何工作的,请参考开始使用级联对象探测器

trainCascadeObjectDetector (outputXMLFilename“恢复”)简历一个打断了训练。的outputXMLFilename输入必须匹配输出文件名的打断会话。所有参数自动保存从先前的会话重用。

例子

trainCascadeObjectDetector (___,名称=值)指定选项使用一个或多个名称参数除了参数从以前的语法的任意组合。例如,ObjectTrainingSize = [100100]在训练集对象的高度和宽度。

例子

全部折叠

加载正从垫样品数据文件。文件包含地面真理,指定为表边框几个对象的类别。grount真相是标签和出口图片标志应用程序。

负载(“stopSignsAndCars.mat”);

前缀的fullpath停车标志图像。

stopSigns = fullfile (toolboxdir (“愿景”),“visiondata”stopSignsAndCars {: 1});

创建数据存储负载的地面实况数据停止的迹象。

imd = imageDatastore (stopSigns);建筑物= boxLabelDatastore (stopSignsAndCars (:, 2));

结合图片和盒子标签数据存储。

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

添加图片文件夹路径到MATLAB路径。

imDir = fullfile (matlabroot,“工具箱”,“愿景”,“visiondata”,“stopSignImages”);目录(imDir);

指定一个文件夹为负面形象。

negativeFolder = fullfile (matlabroot,“工具箱”,“愿景”,“visiondata”,“nonStopSigns”);

创建一个imageDatastore对象包含负面形象。

negativeImages = imageDatastore (negativeFolder);

火车一个级联对象探测器“stopSignDetector.xml”使用猪的特性。注意:命令可以花费几分钟。

trainCascadeObjectDetector (“stopSignDetector.xml”,negativeFolder positiveInstances FalseAlarmRate = 0.01, NumCascadeStages = 3);
自动设置ObjectTrainingSize(35岁,32)使用最多42 42积极的样品每阶段使用最多84负样本的第1阶段——cascadeParams训练阶段3 [........................................................................)使用42积极和84 -样品时间训练阶段1:1秒培训第二阶段3 [........................................................................)使用42积极和84 -样品时间训练阶段2:0秒3的3[........................................................................训练阶段)使用42积极和84 -样品时间训练阶段3:2秒培训完成

使用新训练的分类器来检测一个停车标志形象。

探测器= vision.CascadeObjectDetector (“stopSignDetector.xml”);

阅读测试图像。

img = imread (“stopSignTest.jpg”);

检测到一个停车标志在测试图像。

bbox =步骤(检测器,img);

插入边界框的矩形,并返回标记图像。

detectedImg = insertObjectAnnotation (img,“矩形”bbox,“停车标志”);

显示检测到停车标志。

图;imshow (detectedImg);
警告:MATLAB禁用一些高级图形渲染功能,切换到软件OpenGL。的更多信息,请点击< a href = " matlab: opengl(问题)" > < / >。

删除的图像文件夹路径。

rmpath (imDir);

输入参数

全部折叠

正样本,指定为一个数据存储或一个两列的表。

  • 如果你使用一个数据存储,数据必须设置,以便调用的数据存储readall函数返回一个单元阵列或表至少有两列。表描述了数据中包含的列:

    图片 盒子 标签(可选)

    细胞灰度矢量或RGB图像。

    4矩阵边界框的形式x,y,宽度,高度),(x, y)代表边界框的左上角的坐标。

    包含一个单元阵列元分类向量包含对象类的名字。所有分类数据存储返回的数据必须包含相同的类别。

    当你提供这些数据,函数使用类标签来填补ClassificationModel财产的训练有素的探测器,指定为一个vision.CascadeObjectDetector对象。否则,类标签不需要培训,因为级联对象探测器是一个类探测器。

  • 如果你使用一个表,表中必须有两个或两个以上的列。第一列的表必须包含图像文件的名称和路径。图像必须灰度或真彩(RGB),他们可以在任何支持的格式金宝appimread。剩余的每个列必须包含一个细胞向量4矩阵代表一个对象类,如车辆,,或停车标志。列包含第4单元阵列的两倍边界框的格式(x,y,宽度,高度]。格式指定边界框的左上角位置和大小在相应的形象。创建一个地面真值表,您可以使用图片标志应用程序或贴标签机视频应用。创建一个表的训练数据生成的地面实况,使用objectDetectorTrainingData函数。

负面形象,作为一个指定ImageDatastore对象,路径包含图片的文件夹,或作为一个单元阵列图像文件的名字。因为图片是用于生成负样本,他们必须不包含任何感兴趣的对象。相反,他们应该包含背景与对象相关。

训练有素的级联探测器文件名,指定为一个特征向量或与一个XML字符串标量扩展。例如,“stopSignDetector.xml”。

数据类型:字符

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:FeatureType =“哈尔”使用指定哈雾的特性。

培训对象的大小,指定为一个双元素(高度,宽度)向量或“汽车”。在培训之前,函数调整正负样本的大小ObjectTrainingSize以像素为单位。如果您选择“汽车”,函数决定的大小自动基于中位数的宽高比的正面实例。最优检测准确性,指定一个对象培训对象的大小接近预期大小的图像。然而,对于更快的训练和检测,设置对象培训规模小于预期的图像中对象的大小。

数据类型:字符|||int8|int16|int32|int64|uint8|uint16|uint32|uint64

负样本的因素,指定为一个实值标量。负样本的数量等于每个阶段使用

NegativeSamplesFactor×[正样本的数量在每个阶段使用]。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

级联阶段培训,指定为一个正整数。增加阶段的数量可能会导致更准确的探测器也增加训练时间。更多的阶段需要更多的图片,因为在每一个阶段,一些数量的正负样本消除。这个值取决于的值FalseAlarmRateTruePositiveRate。还可以让你增加更多的阶段FalseAlarmRate。看到开始使用级联对象探测器教程为更多的细节。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

可接受的误警率在每个阶段,指定为一个值的范围(0 1]。假警报率是负的部分训练样本正确分类为阳性样本。

整个假警报率计算使用FalseAlarmRate每阶段和级联阶段,NumCascadeStages:

FalseAlarmRateNumCascadeStages

较低的值FalseAlarmRate增加每个阶段的复杂性。增加了复杂性可以获得更少的错误检测,但会导致更长的培训和检测时间。更高的值FalseAlarmRate可能需要更多的级联阶段实现合理的检测精度。

数据类型:|

最低真阳性率要求在每个阶段,指定为一个值的范围(0 1]。真正的积极率是积极训练样本正确分类的一部分。

总体目标积极率计算使用TruePositiveRate每阶段和级联阶段,NumCascadeStages:

TruePositiveRateNumCascadeStages

更高的值TruePositiveRate增加每个阶段的复杂性。增加了复杂性可以获得更多的正确的检测,但会导致更长的培训和检测时间。

数据类型:|

功能类型,指定为以下之一:

“哈雾”[1]——Haar-like特性
“腰痛”[2]——局部二进制模式
“猪”[3]——面向梯度的柱状图

函数分配大量内存,尤其是哈雾功能。为了避免耗尽内存,使用这个函数在64位操作系统有足够的内存。

数据类型:字符

提示

  • 训练一个好的探测器需要成千上万的训练样本。处理大量数据的时间各不相同,但它可能需要数小时甚至数天。在培训过程中,函数显示时间训练MATLAB中的每个阶段®命令窗口。

  • OpenCV猪参数中使用这个函数是:

    • Numbins:9

    • CellSize =[8]

    • BlockSize =(4 - 4)

    • BlockOverlap =(2 - 2)

    • UseSignedOrientation =

引用

[1]Viola, P。,和米。J. Jones. "Rapid Object Detection using a Boosted Cascade of Simple Features."2001年IEEE计算机学会学报会议。卷1,2001年4月15日,我- 511 - 518页。

[2]Ojala, T。,米。Pietikainen, and T. Maenpaa. “Multiresolution Gray-scale and Rotation Invariant Texture Classification With Local Binary Patterns.”IEEE模式分析与机器智能。卷24,2002年7月7号,第971 - 987页。

[3]中间人,N。,和B. Triggs. “Histograms of Oriented Gradients for Human Detection.”国际工程师协会下属的计算机协会的会议上计算机视觉和模式识别。卷1,2005,页886 - 893。

版本历史

介绍了R2013a