python hog+svm 工具箱调用

1、导入数据包,包括 scikit-learn 和 scikit-image 两个

可以查看官网pip安装

也可以直接在pycharm的setting里面直接安装


2、导包

from sklearn import svm #svm
from skimage import feature as ft #hog
import pickle #svm save

3、hog特征提取

features = ft.hog(image,  # input image
                  orientations=ori,  # number of bins
                  pixels_per_cell=ppc, # pixel per cell
                  cells_per_block=cpb, # cells per blcok
                  block_norm = 'L1', #  block norm : str {‘L1’, ‘L1-sqrt’, ‘L2’, ‘L2-Hys’}
                  transform_sqrt = True, # power law compression (also known as gamma correction)
                  feature_vector=True, # flatten the final vectors
                  visualise=False) # return HOG map image
  • image: input image, 输入图像

  • orientation: 指定bin的个数. 方向直方图中分的方向的个数. 比如你选定的orientation= 9, 则bin一共有9个, 每20°一个: 
    [0°~20°, 20°~40°, 40°~60° 60°~80° 80°~100°, 100°~120°, 120°~140°, 140°~160°, 160°~180°]。该值越大,特征分的越细,特征数量越多。

  • pixels_per_cell : 每个cell的像素数, 是一个tuple类型数据,例如(8,8),按cell计算梯度方向,得到一次直方图特征,cell越小整张图得到的特特征越详细,数据量越大

  • cell_per_block : 每个BLOCK内有多少个cell, tuple类型, 例如(2,2), 以block为单位对直方图进行nornal。如果cell*block需要的像素点边长大于实际图片的边长,特征就会无法获取。block越大,特征量越大。

  • block_norm: block 内部采用的norm类型.

  • transform_sqrt: 是否进行 power law compression, 也就是gamma correction. 是一种图像预处理操作, 可以将较暗的区域变亮, 减少阴影和光照变化对图片的影响.

  • feature_vector: 将输出转换为一维向量.

  • visualise: 是否输出HOG image, (应该是梯度图)

  • 时间:9,(8,8),(2,2)--> 0.022;    9,(20,20),(2,2)-->0.0158

  • 数据格式:ndarray类型,1*n大小


3、保存特征数据/读取特征数据

np.savetxt('train.txt',X)
np.savetxt('trainlab.txt',Y)
X=np.loadtxt('train.txt');
Y=np.loadtxt('trainlab.txt');

3、训练

clf = svm.SVC()
clf.fit(X,y)
  • X:所有特征数据,每行一个样本,X是一个list数据类型,每行是一个ndarray
  • y:每个样本的标签,list类


4、保存模型/读取模型

with open('clf.pickle', 'wb') as f:
    pickle.dump(clf, f)
with open('save/clf.pickle', 'rb') as f:
    clf = pickle.load(f)

5、测试,输出测试结果标签

lab = clf.predict(x_test)

  • x_test需要输入list数据类型,输入ndarray的矩阵或者行向量会报错
  • 8-->0.025
  • 20-->0.016

参考:

1、SVM使用实例

https://www.cnblogs.com/luyaoblog/p/6775342.html

2、scikit-learn安装

http://scikit-learn.org/stable/install.html

3、scikit-learn使用手册

http://scikit-learn.org/stable/modules/classes.html#module-sklearn.svm

(在使用手册中点击具体方法可以查看系统用例代码)

4、cikit-image安装

http://scikit-image.org/download.html

5、hog在scikit-image的使用简介

https://blog.csdn.net/vola9527/article/details/70144811

6、保存模型

https://morvanzhou.github.io/tutorials/machine-learning/sklearn/3-5-save/



没有更多推荐了,返回首页