参考:利用Hog特征和SVM分类器进行行人检测:http://blog.csdn.net/carson2005/article/details/7841443
HOG+SVM由于其特性,对行人检测有非常好的效果,但是对其他目标检测也有好效果。这里就把范围扩大些。
carson2005的博文中介绍了利用opencv实现样本训练和目标检测。利用Libsvm也可以进行处理。
1.使用libsvm求取权重
http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=9146
--------使用libsvm求取权重,即OpenCv中的detector[]----------
直接使用libsvm,需要按它的格式构造数据,下面简述在matlab下使用libsvm
下载libsvm-mat-2.9-1
方法1:
切换到libsvm-mat-2.9-1所在的目录下,打开MATLAB键入:
mex -setup
方法2:matlab菜单 File-->set path 将libsvm-mat-2.9-1所在路径添加进来。
----------------------
下面以libsvm-mat-2.9-1自带的heart_scale为例进行介绍
-----------kernel_type为线性----------------------------------
load heart_scale.mat
train_data = heart_scale_inst(1:150,:);
train_label = heart_scale_label(1:150,:);
test_data = heart_scale_inst(151:270,:);
test_label = heart_scale_label(151:270,:);
model_linear = svmtrain(train_label, train_data, '-t 0');
[predict_label_L, accuracy_L, dec_values_L] = svmpredict(test_label, test_data,model_linear);
----------训练后得到模型-------
model_linear =
Parameters: [5x1 double]
nr_class: 2
totalSV: 58
rho: -1.1848
Label: [2x1 double]
ProbA: []
ProbB: []
nSV: [2x1 double]
sv_coef: [58x1 double]
SVs: [58x13 double]
-----------如何从模型中求取权重系数----
参考以下网站,可知
http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f804
对于2类问题,可如下求解线性问题(y=wx+b)的权重系数w和b
w = model_linear.SVs' * model_linear.sv_coef;
b = -model_linear.rho;
---------
求出的w即是OpenCv中的detector[]
下面直接把carson2005的文章贴过来吧。
2.OpenCV求detector
之前介绍过Hog特征(http://blog.csdn.net/carson2005/article/details/7782726),也介绍过SVM分类器(http://blog.csdn.net/carson2005/article/details/6453502 );而本文的目的在于介绍利用Hog特征和SVM分类器来进行行人检测。
在2005年CVPR上,来自法国的研究人员