这一篇将介绍级联分类器训练的matlab函数
函数/Functions
函数名称:trainCascadeObjectDetector
功能:训练级联分类器
语法:trainCascadeObjectDetector(outputXMLFilename,positiveInstance,negativeImage);
trainCascadeObjectDetector(outputXMLFilename,'resume');
trainCascadeObjectDetector(_,Name,Value);
其中,outputXMLFilename为训练获得的级联识别器XML文件名称,该文件名称必须以.xml作为格式扩展名;positiveInstance为正例,NegativeImages为包含“背景图像”的路径或包含图像文件名的cell数组,Name为用一对单引号包含的字符串,Value为对应Name的值。
Name | Value |
---|---|
'ObjectTrainingSize' | 默认值为’Auto',或者取值为[height,width],表示训练样本所用正例图像的大小 |
‘NegativeSamplesFactor' | 默认值为2,范围为正实数,取用确定用于每一级识别器所用的反例的数目,计算方式如下: NegativeSamplesFactor * [每一级识别器训练所用的正例的个数] |
‘NumCascadeStages' | 默认值为20,取值为正整数,取值与FalseAlarmRate和TruePositiveRate相关,当取值较大时,出现过拟合问题,即虚警率较高 |
’FalseAlarmRate' | 默认值为0.5,范围为(0,1],表示反例识别为正例的虚警率 |
‘TruePositiveRate' | 默认值为0.995,范围为(0,1],表示正例识别为正例的比例 |
’FeatureType' | 默认值为‘HOG',表示梯度方向直方图特征;’Haar'表示Harr-like特征;‘LBP'表示Local Binary Patterns |
close all;
clear all;
clc;
load('stopSigns.mat');
imDir = fullfile(matlabroot,'toolbox','vision','visiondemos','stopSignImages');
addpath(imDir);
negativeFolder = fullfile(matlabroot,'toolbox','vision','visiondemos','non_stop_signs');
trainCascadeObjectDetector('stopSignDetector.xml',data,negativeFolder,'FalseAlarmRate',0.2,'NumCascadeStages',5);
detector = vision.CascadeObjectDetector('stopSignDetector.xml');
img = imread('stopSignTest.jpg');
bbox = step(detector,img);
detectedImg = insertObjectAnnotation(img,'rectangle',bbox,'stop sign');
figure;
imshow(detectedImg);