主要内容

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 = imread(“stopSignTest.jpg”);[bboxes,scores] = detect(acfDetector,img);

显示检测结果,并在图像中插入对象的包围框。

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

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

输入参数

全部折叠

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

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

    图片 盒子 标签(可选)

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

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

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

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

  • 如果使用表,则表必须有两个或多个列。表的第一列必须包含带有路径的映像文件名。图像必须是灰度或真彩色(RGB),它们可以是任何格式支持金宝appimread.其余每一列都必须是单元格向量,包含-by-4表示单个对象类的矩阵,例如车辆,或停车标志.列包含的4元双数组格式为[的包围框xy宽度高度].该格式指定了相应图像中左上角的位置和包围框的大小。要创建基本真值表,可以使用图片标志应用程序或贴标签机视频要根据生成的ground truth创建训练数据表,请使用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中引入