如何将训练好的 SVM 输出保存到文件中?(OpenCV / SimpleCV)



使用 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]]]

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

我在这里可能是错的,因为我知道C++而不是 Python,但看看这个,它应该只是沿着以下几行:

要保存:

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

以后重复使用:

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

相关内容

  • 没有找到相关文章

最新更新