【问题标题】:How do you Save Trained SVM Output to a File? (OpenCV / SimpleCV)如何将经过训练的 SVM 输出保存到文件中? (OpenCV / SimpleCV)
【发布时间】:2015-06-17 08:06:31
【问题描述】:

使用 OpenCV / SimpleCV 的 Python 2.7 绑定我编写了一些代码,用于在三个类上训练 SVM 分类器。

我正在使用 HueHistogramFeatureExtractor()、EdgeHistogramFeatureExtractor() 和 HaarLikeFeatureExtractor() 提取函数进行训练。

我将所有这些提取器放入我的 SVM 分类器中:

hhfe = HueHistogramFeatureExtractor(10)
ehfe = EdgeHistogramFeatureExtractor(10)
haarfe = HaarLikeFeatureExtractor(fname="haar.txt")  
extractors = [hhfe,ehfe,haarfe]
svm = SVMClassifier(extractors)

然后我使用我的数据集和类进行训练。

trainPaths = ['./data/train/bike','./data/train/plane','../data/train/car']
classes = ['bike','plane','car'] 
print svm.train(trainPaths,classes,verbose=False)  

所有这些都有效并且相当准确。但是每次我想重新运行代码时,我都必须重新训练我的分类器。

我运行这段代码时得到的输出(记住:verbose 已关闭。)是这样的:

[100.0, 0.0, [[17.0, 0.0, 0.0], [0.0, 17.0, 0.0], [0.0, 0.0, 0.0]]]

feature5x1_11 (<17.000, 17.000, 0.000>) 
: <=2194135.000 --> plane (<0.000, 15.000, 0.000>) 

: >2194135.000 
   Angle_feature5x3_8 (<17.000, 2.000, 0.000>) 
   : <=2937533.000 --> bike (<14.000, 0.000, 0.000>) 

   : >2937533.000 --> bike (<3.000, 2.000, 0.000>) 
[94.11764705882352, 5.88235294117647, [[17.0, 0.0, 0.0], [2.0, 15.0, 0.0], [0.0, 0.0, 0.0]]]

如何保存我训练的分类器以便以后使用?

【问题讨论】:

    标签: python opencv machine-learning computer-vision simplecv


    【解决方案1】:

    我在这里可能错了,因为我知道 C++ 而不是 Python,但 looking at this 它应该是这样的:

    保存:

    svm.train(trainPaths,classes,verbose=False)
    svm.save("your_svm.xml")
    

    以后重复使用:

    svm.load("your_svm.xml")
    svm.predict(...)
    

    【讨论】:

    • 我会试试这个。保存似乎有效,但我如何传递 .predict() 图像? (即使你能给我一个 C++ 的例子,我应该能够适应它。)
    • 你不传递 svm.predict() 一个 image,你从图像中提取相同的 N 个色调、边缘和 haar 特征,将它们存储在一个数组中,然后通过它来预测。
    猜你喜欢
    • 2017-07-18
    • 2016-09-03
    • 2015-06-14
    • 2013-05-25
    • 2015-05-04
    • 2015-07-25
    • 2015-12-24
    • 1970-01-01
    • 2017-09-15
    相关资源
    最近更新 更多