主要内容

trainACFObjectDetector

训练ACF对象检测器

描述

探测器= trainACFObjectDetector (trainingData返回一个经过训练的聚合通道特征(ACF)对象检测器。该函数使用存储在表或数据存储中的图像中的对象的正实例,并由trainingData。该函数在训练过程中自动从图像中收集负实例。创建一个基本真值表,使用图片标志贴标签机视频应用程序。

例子

探测器= trainACFObjectDetector (trainingData名称=值返回一个探测器除了使用先前语法中的任何参数组合外,还使用一个或多个名称-值参数指定选项。例如,ObjectTrainingSize = [100100]设置训练期间对象的高度和宽度。

例子

全部折叠

使用trainACFObjectDetector用训练图像创建一个可以检测停车标志的ACF对象检测器。用单独的图像测试检测器。

加载训练数据。

负载(“stopSignsAndCars.mat”

在停止标志图像的完整路径前加上前缀。

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

创建数据存储来加载停止标志的真实数据。

imds = imageDatastore(stopSigns);blds = boxLabelDatastore(stopSignsAndCars(:,2));

合并映像和框标签数据存储。

Ds = combine(imds,blds);

训练ACF检测器。设置每个阶段使用的负样本数量为2。可以通过指定关闭训练进度输出Verbose = false,作为一个名称-值论点。

acfDetector = trainACFObjectDetector(ds,NegativeSamplesFactor=2);
ACF目标检测器培训培训将分为4个阶段。模型尺寸为34x31。样本正例(~100%完成)计算近似系数…计算聚合通道特性…-------------------------------------------- 阶段1:样本的负面例子(~ 100%)完成计算聚合通道特性…完成。用42个正例和84个反例训练分类器…训练好的分类器有19个弱学习器。-------------------------------------------- 阶段2:样本负面例子(~ 100%完成)发现了84个新的负面例子进行训练。计算聚合通道特性…用42个正例和84个反例训练分类器… The trained classifier has 20 weak learners. -------------------------------------------- Stage 3: Sample negative examples(~100% Completed) Found 84 new negative examples for training. Compute aggregated channel features...Completed. Train classifier with 42 positive examples and 84 negative examples...Completed. The trained classifier has 54 weak learners. -------------------------------------------- Stage 4: Sample negative examples(~100% Completed) Found 84 new negative examples for training. Compute aggregated channel features...Completed. Train classifier with 42 positive examples and 84 negative examples...Completed. The trained classifier has 61 weak learners. -------------------------------------------- ACF object detector training is completed. Elapsed time is 34.2692 seconds.

在测试图像上测试ACF检测器。

Img = Img“stopSignTest.jpg”);[bboxes,scores] = detect(acfDetector,img);

显示检测结果,并将对象的边界框插入图像中。

I = 1:length(scores) annotation = sprintf(“信心= %.1f”分数(i));img = insertobjectnotation (img,“矩形”bboxes(我:),注释);结束图imshow (img)

图包含一个轴对象。axes对象包含一个image类型的对象。

输入参数

全部折叠

标记的基本事实,指定为数据存储或表。

  • 如果使用数据存储,则必须对数据进行设置,以便使用readall函数返回至少有两列的单元格数组或表。该表描述了列中包含的数据:

    图片 盒子 标签(可选)

    灰度或RGB图像的单元向量。

    形式为[的边界框矩阵xy宽度高度],其中[x,y]表示边界框的左上角坐标。

    单元格数组,包含包含对象类名的element分类向量。数据存储返回的所有分类数据必须包含相同的类别。

    当您提供此数据时,该函数使用类标签来填充ModelName训练检测器的属性,指定为acfObjectDetector对象。否则,训练不需要类标签,因为ACF对象检测器是单个类检测器。

  • 如果使用表,则该表必须有两个或更多列。表的第一列必须包含带有路径的映像文件名。图像必须是灰度或真彩色(RGB),它们可以是由万博1manbetximread。其余每个列必须是单元格向量,其中包含表示单个对象类的矩阵,例如车辆,或停车标志。列包含4元素的双数组格式为[xy宽度高度]。该格式指定了相应图像中边界框的左上角位置和大小。要创建基本真值表,可以使用图片标志应用程序或贴标签机视频要从生成的地面真值创建训练数据表,请使用objectDetectorTrainingData函数。

名称-值参数

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

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。

例子:ObjectTrainingSize = [100100]设置训练期间对象的高度和宽度。

训练过程中对象的大小,指定为形式为[的2元素向量高度宽度[像素]。最小训练规模为[8]。在训练过程中,对象的高度和宽度将被调整为“ObjectTrainingSize”。增大尺寸可以提高检测精度,但也增加了训练和检测次数。

当你指定“汽车”,则根据正实例的中位数宽高比设置大小。

例子:[100100]

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

迭代训练过程的训练阶段数,指定为正整数。增加这个数字可以提高检测器并减少训练错误,但代价是增加训练时间。

数据类型:

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

NegativeSamplesFactor×每个阶段使用的阳性样本数量

数据类型:

最后阶段弱学习器的最大数量,指定为正整数标量或正整数向量。如果输入是一个标量,MaxWeakLearners指定最后阶段的最大数目。如果输入是一个向量,MaxWeakLearners指定每个阶段的最大数量,长度必须等于'NumStages”。这些值通常在整个阶段中增加。ACF对象检测器使用增强算法创建弱学习器的集合。可以使用较高的值来提高检测精度,但代价是降低检测性能速度。建议取值范围为300 ~ 5000。

数据类型:

选项显示培训过程的进度信息,指定为真正的

数据类型:逻辑

输出参数

全部折叠

经过训练的基于acf的对象检测器,返回为acfObjectDetector对象。

版本历史

在R2017a中引入