1.å¦ä½å©ç¨python使ç¨libsvm
2.LBP特征和LPQ特征
å¦ä½å©ç¨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。源码十五连线游戏源码这样,源码每个像素点产生一个8位二进制数,源码总计种可能的源码LBP值,每一种都独特地反映了周围像素的源码纹理结构。重要的比特币 网站源码是,处理图像时必须保证是灰度图,彩色图需先转为灰度。 2. LBP的匹配与实用价值 LBP特征在目标检测中崭露头角。以人脸检测为例,虽然Haar+Adaboost是棋牌源码组件网站常见方法,但LBP+Adaboost因其更快的训练速度和更好的检测性能备受青睐。在OpenCV的TrainCascade中,LBP特征通常采用DLBP(可能的改进版本)作为输入,提供更为精确的纹理特征。然而,游网平台源码具体实现细节需要查阅源码,如MB-LBP就是一种常见的LBP变体。 对于OpenCV级联检测的深度理解,可以参考外文资料,但在此之前,尝试过训练分类器并应用LBP特征是不可或缺的预备知识。链接中的LIBSVM库提供了支持向量机的实现,为深度学习和纹理特征分析提供了强大支持。 转向LPQ特征:超越LBP的纹理捕捉 相比之下,LPQ特征更侧重于捕捉局部图像的相位信息,它通过量化局部相位梯度来描述纹理,这使得它在某些情况下优于LBP,尤其在处理复杂纹理和旋转不变性方面。LPQ特征在人脸识别和纹理分类中展示了其优势,但其计算复杂度相对较高,适合对精度有更高要求的应用场景。 综上所述,LBP和LPQ特征都是纹理特征提取的重要手段,各有优劣,选择哪种方法取决于具体的应用需求和性能要求。通过深入理解和实践,我们可以更好地利用这些特征在计算机视觉任务中实现精准的图像分析。