【乐客源码】【wearos 源码】【保姆源码】libsvm 源码

来源:ea源码的作用

1.如何利用python使用libsvm
2.LBP特征和LPQ特征

libsvm 源码

如何利用python使用libsvm

       ä¸€ï¼šlibsvm包下载与使用:

       LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进.

       æŠŠåŒ…解压在C盘之中,如:C:\libsvm-3.

       2.

       å› ä¸ºè¦ç”¨libsvm自带的脚本grid.py和easy.py,源码需要去官网下载绘图工具gnuplot,解压到c盘

       3.

       è¿›å…¥c:\libsvm\tools目录下,用文本编辑器(记事本,edit都可以)修改grid.py和easy.py两个文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存

       4python与libsvm的连接(参考SVM学习笔记(2)LIBSVM在python下的使用 )

       a.打开IDLE(python GUI),输入

       >>>import sys

       >>>sys.version

       å¦‚果你的python是位,将出现如下字符:

       â€˜2.7.3 (default, Apr , ::) [MSC v. bit (Intel)]’

       è¿™ä¸ªæ—¶å€™LIBSVM的python接口设置将非常简单。在libsvm-3.文件夹下的windows文件夹中找到动态链接库libsvm.dll,将其添加到系统目录,如`C:\WINDOWS\system\’,即可在python中使用libsvm

       b.如果你是位的请参考文献,请参考上述连接。

       5.执行一个小例子

       import os

       os.chdir('C:\libsvm-3.\python')#请根据实际路径修改

       from svmutil import

*

       y, x = svm_read_problem('../heart_scale')#读取自带数据

       m = svm_train(y[:], x[:], '-c 4')

       p_label, p_acc, p_val = svm_predict(y[:], x[:], m)

       ##出现如下结果,应该是正确安装了

       optimization finished, #iter =

       nu = 0.

       obj = -., rho = 0.

       nSV = , nBSV =

       Total nSV =

       Accuracy = .% (/) (classification)

       äºŒå‡ ä¸ªç®€å•çš„例子

       ä»Žä¸‹è½½å®žéªŒæ•°æ®é›†ã€‚并且将数据集拷贝到C:\libsvm-3.\windows下(因为之后我们需要利用该文件夹下的其他文件,这样比较方便,当然之后你用绝对地址也可以了)

       å»ºç«‹ä¸€ä¸ªpy文件,写下如下代码:

       ä¾‹1:

       import os

       os.chdir('C:\libsvm-3.\windows')#设定路径

       from svmutil import

*

       y, x = svm_read_problem('train.1.txt')#读入训练数据

       yt, xt = svm_read_problem('test.1.txt')#训练测试数据

       m = svm_train(y, x )#训练

       svm_predict(yt,xt,m)#测试

       æ‰§è¡Œä¸Šè¿°ä»£ç ï¼Œç²¾åº¦ä¸ºï¼šAccuracy = .% (/) (classification)

       å¸¸ç”¨æŽ¥å£

       svm_train() : train an SVM model#训练

       svm_predict() : predict testing data#预测

       svm_read_problem() : read the data from a LIBSVM-format file.#读取libsvm格式的数据

       svm_load_model() : load a LIBSVM model.

       svm_save_model() : save model to a file.

       evaluations() : evaluate prediction results.

       - Function: svm_train#三种训练写法

       There are three ways to call svm_train()

       >>> model = svm_train(y, x [, 'training_options'])

       >>> model = svm_train(prob [, 'training_options'])

       >>> model = svm_train(prob, param)

       æœ‰å…³å‚数的设置(read me 文件夹中有详细说明):

       Usage: svm-train [options] training_set_file [model_file]

       options:

       -s svm_type : set type of SVM (default 0)#选择哪一种svm

       0 -- C-SVC (multi-class classification)

       1 -- nu-SVC (multi-class classification)

       2 -- one-class SVM

       3 -- epsilon-SVR (regression)

       4 -- nu-SVR (regression)

       -t kernel_type : set type of kernel function (default 2)#是否用kernel trick

       0 -- linear: u'*v

       1 -- polynomial: (gamma*u'*v + coef0)^degree

       2 -- radial basis function: exp(-gamma*|u-v|^2)

       3 -- sigmoid: tanh(gamma*u'*v + coef0)

       4 -- precomputed kernel (kernel values in training_set_file)

       -d degree : set degree in kernel function (default 3)

       -g gamma : set gamma in kernel function (default 1/num_features)

       -r coef0 : set coef0 in kernel function (default 0)

       -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)

       -n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)

       -p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)

       -m cachesize : set cache memory size in MB (default )

       -e epsilon : set tolerance of termination criterion (default 0.)

       -h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)

       -b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)

       -wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)

       -v n: n-fold cross validation mode

       -q : quiet mode (no outputs)

       ä¸‰æé«˜é¢„测的准确率:

       é€šè¿‡ä¸€å®šçš„过程,可以提高预测的准确率(在文献2中有详细介绍):

       a.转换数据为libsvm可用形式.(可以通过下载的数据了解格式)

       b.进行一个简单的尺度变换

       c.利用RBF kernel,利用cross-validation来查找最佳的参数 C 和 r

       d.利用最佳参数C 和 r ,来训练整个数据集

       e.测试

       å†çœ‹ä¾‹å­1:

       1.进入cmd模式下,输入如下代码,将现有数据进行适度变换,生成变换后的数据文件train.1.scale.txt

       å‚数说明:

       -l 变换后的下限

       -u 变换后的上限

       -s 参考上文

       2执行以下代码

       import os

       os.chdir('C:\libsvm-3.\windows')#设定路径

       from svmutil import

*

       y, x = svm_read_problem('train.1.scale.txt')#读入训练数据

       yt, xt = svm_read_problem('test.1.scale.txt')#训练测试数据

       m = svm_train(y, x )#训练

       svm_predict(yt,xt,m)#测试

       ç²¾ç¡®åº¦ä¸ºAccuracy = .6% (/) (classification)。

       å¯è§æˆ‘们只是做了简单的尺度变换后,预测的正确率大大提升了。

       3通过选择最优参数,再次提高预测的准确率:(需要把tools文件下的grid.py拷贝到'C:\libsvm-3.\windows'下)

       import os

       os.chdir('C:\libsvm-3.\windows')#设定路径

       from svmutil import

*

       from grid import

*

       rate, param = find_parameters('train.1.scale.txt', '-log2c -3,3,1 -log2g -3,3,1')

       y, x = svm_read_problem('train.1.scale.txt')#读入训练数据

       yt, xt = svm_read_problem('test.1.scale.txt')#训练测试数据

       m = svm_train(y, x ,'-c 2 -g 4')#训练

       p_label,p_acc,p_vals=svm_predict(yt,xt,m)#测试

       æ‰§è¡Œä¸Šé¢çš„程序,find_parmaters函数,可以找到对应训练数据较好的参数。后面的log2c,log2g分别设置C和r的搜索范围。搜索机制是以2为底指数搜索,如 –log2c –3 , 3,1 就是参数C,从2^-3,2^-2,2^-1…搜索到2^3.

       æœç´¢åˆ°è¾ƒå¥½å‚数后,在训练的时候加上参数的设置。

       å¦å¤–,读者可以自己试试数据集2,3.

LBP特征和LPQ特征

       探索LBP特征与LPQ特征:深度纹理信息的捕捉与应用

       在计算机视觉领域,纹理信息的源码捕捉是关键一步,其中两种常用的源码特征描述方法——LBP(Local Binary Pattern)和LPQ(Local Phase Quantization)各具特色。让我们首先深入了解LBP的源码乐客源码原始概念。

       1. 原始LBP特征的源码基石

       LBP算子以3x3的邻域为中心,通过比较像素值与中心像素值的源码关系,生成二进制编码。源码每个像素周围的源码8个像素点,若其灰度值大于中心,源码对应位置标记为1,源码否则为0。源码wearos 源码这样,源码每个像素点产生一个8位二进制数,源码总计种可能的源码LBP值,每一种都独特地反映了周围像素的源码纹理结构。重要的保姆源码是,处理图像时必须保证是灰度图,彩色图需先转为灰度。

       2. LBP的匹配与实用价值

       LBP特征在目标检测中崭露头角。以人脸检测为例,虽然Haar+Adaboost是李连杰源码常见方法,但LBP+Adaboost因其更快的训练速度和更好的检测性能备受青睐。在OpenCV的TrainCascade中,LBP特征通常采用DLBP(可能的改进版本)作为输入,提供更为精确的纹理特征。然而,$Ajax 源码具体实现细节需要查阅源码,如MB-LBP就是一种常见的LBP变体。

       对于OpenCV级联检测的深度理解,可以参考外文资料,但在此之前,尝试过训练分类器并应用LBP特征是不可或缺的预备知识。链接中的LIBSVM库提供了支持向量机的实现,为深度学习和纹理特征分析提供了强大支持。

       转向LPQ特征:超越LBP的纹理捕捉

       相比之下,LPQ特征更侧重于捕捉局部图像的相位信息,它通过量化局部相位梯度来描述纹理,这使得它在某些情况下优于LBP,尤其在处理复杂纹理和旋转不变性方面。LPQ特征在人脸识别和纹理分类中展示了其优势,但其计算复杂度相对较高,适合对精度有更高要求的应用场景。

       综上所述,LBP和LPQ特征都是纹理特征提取的重要手段,各有优劣,选择哪种方法取决于具体的应用需求和性能要求。通过深入理解和实践,我们可以更好地利用这些特征在计算机视觉任务中实现精准的图像分析。

文章所属分类:百科频道,点击进入>>