主要内容

trainCascadeObjectDetector

训练级联对象检测器模型

描述

例子

trainCascadeObjectDetector (outputXMLFilenamepositiveInstancesnegativeImages编写一个经过训练的级联检测器XML文件,outputXMLFilename.文件名必须包含XML扩展名。有关该函数如何工作的更详细说明,请参阅开始使用级联对象检测器

trainCascadeObjectDetector (outputXMLFilename“恢复”)恢复中断的训练课程。的outputXMLFilename输入必须与中断会话的输出文件名匹配。从早期会话中保存的所有参数将被自动重用。

例子

trainCascadeObjectDetector (___名称,值使用一个或多个指定的附加选项名称,值对参数。

例子

全部折叠

从MAT文件加载正样本数据。该文件包含一个表,指定了几个对象类别的边界框。表从图片标志应用程序。

负载阳性样本。

负载(“stopSignsAndCars.mat”);

从表格中选择停止符号的边界框。

positiveInstances = stopSignsAndCars (:, 1:2);

将图像文件夹添加到MATLAB路径中。

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

指定底片的文件夹。

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

创建一个imageDatastore包含负映像的对象。

negativeImages = imageDatastore (negativeFolder);

使用HOG特性训练一个名为“stopSignDetector.xml”的级联对象检测器。注意:该命令可能需要几分钟的时间来运行。

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

使用新训练的分类器检测图像中的停止标志。

探测器=愿景。CascadeObjectDetector (“stopSignDetector.xml”);

阅读测试图像。

img = imread (“stopSignTest.jpg”);

发现停车标志。

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

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

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

显示检测到的停止标志。

图;imshow (detectedImg);

从路径中删除映像目录。

rmpath (imDir);

输入参数

全部折叠

正样本,指定为两列表或两字段结构。

第一个表列或结构字段包含图像文件名称,指定为字符向量或字符串标量。所支持的任何格式中,每个图像都可以是真彩色、灰度或索引的万博1manbetximread

第二个表列或结构字段包含4矩阵边界框。每个边界框的格式为[xy宽度高度并指定对象在对应图像中的位置。

你可以使用图片标志贴标签机视频应用程序标签的对象与边界框感兴趣。应用程序返回groundTruth对象。使用objectDetectorTrainingData函数从要使用的对象获取表positiveInstances.该函数自动确定在每个级联阶段使用的正样本的数量。这个值是基于阶段数和真实阳性率。真实阳性率指的是有多少阳性样本可能被误分类。

数据类型:表格|结构体

负映像,指定为ImageDatastore对象中包含图像的文件夹的路径,或作为图像文件名的单元格数组。因为图像是用来生成负样本的,所以它们不能包含任何感兴趣的对象。相反,它们应该包含与对象相关的背景。

经过训练的级联检测器文件名,指定为具有XML扩展名的字符向量或字符串标量。例如,“stopSignDetector.xml'.

数据类型:字符

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“FeatureType”“哈雾”指定要使用的特性类型的Haar。

训练对象大小,指定为逗号分隔对。这一对包含'ObjectTrainingSize'和两个元素[高度宽度向量,或作为“汽车”.在训练之前,函数将正样本和负样本的大小调整为ObjectTrainingSize以像素为单位。如果您选择“汽车”,该函数根据正实例的中值宽高比自动确定大小。为了获得最佳的检测精度,指定一个接近图像中目标的预期大小的目标训练大小。但是,为了更快的训练和检测,将目标训练大小设置为小于图像中目标的预期大小。

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

负样本因子,指定为逗号分隔对,由'NegativeSamplesFactor和实值标量。在每个阶段使用的负样本数等于

NegativeSamplesFactor×[在每个阶段使用的阳性样本的数量].

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

要训练的级联级数,指定为逗号分隔对,由'NumCascadeStages和一个正整数。增加阶数可以得到更精确的检测器,但也会增加训练时间。更多的阶段可能需要更多的训练图像,因为在每个阶段,都有一定数量的正样本和负样本被消除。这个值取决于FalseAlarmRateTruePositiveRate.更多的阶段也可以让你增加FalseAlarmRate.看到开始使用级联对象检测器教程了解更多细节。

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

每个阶段的可接受误报率,指定为逗号分隔对,由'FalseAlarmRate'和范围(0 1)中的值。虚警率是负训练样本被错误分类为正样本的比例。

总体误报率使用FalseAlarmRate每级和级联的数量,NumCascadeStages

FalseAlarmRateNumCascadeStages

较低的值FalseAlarmRate增加每个阶段的复杂性。增加的复杂性可以实现更少的错误检测,但会导致更长的训练和检测时间。更高的值FalseAlarmRate可以要求更大数量的级联来实现合理的检测精度。

数据类型:|

每个阶段所需的最低真阳性率,指定为逗号分隔对,由'TruePositiveRate'和范围(0 1)中的值。真阳性率是正确分类的正训练样本的比例。

总体目标阳性率是用TruePositiveRate每级和级联的数量,NumCascadeStages

TruePositiveRateNumCascadeStages

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

数据类型:|

特征类型,指定为逗号分隔对,由'FeatureType,以及下列其中之一:

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

该函数分配了大量的内存,特别是Haar特性。为了避免耗尽内存,请在具有足够RAM的64位操作系统上使用此函数。

数据类型:字符

提示

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

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

    • Numbins:9

    • CellSize =[8]

    • BlockSize =(4 - 4)

    • BlockOverlap =(2 - 2)

    • UseSignedOrientation =

参考文献

P.维奥拉和M. J.琼斯。"使用简单特征的增强级联快速目标检测"2001年IEEE计算机学会会议论文集.第一卷,2001年4月15日,第I-511-I-518页。

[2] Ojala, T., M. Pietikainen和T. Maenpaa。基于局部二值模式的多分辨率灰度和旋转不变纹理分类。模式分析与机器智能学报.第24卷,第7期,2002年7月,971-987页。

N. Dalal和B. Triggs。《面向人类检测的梯度直方图》计算机视觉与模式识别学术会议.2005年第1卷,第886-893页。

介绍了R2013a