, если вы уже используете OpenCV, Я предлагаю вам использовать встроенную реализацию svm, обучение/сохранение/загрузка в python. C++ имеет соответствующий api, чтобы сделать то же самое примерно в том же количестве кода. он также имеет «train_auto», чтобы найти лучшие параметры
import numpy as np
import cv2
samples = np.array(np.random.random((4,5)), dtype = np.float32)
labels = np.array(np.random.randint(0,2,4), dtype = np.float32)
svm = cv2.SVM()
svmparams = dict(kernel_type = cv2.SVM_LINEAR,
svm_type = cv2.SVM_C_SVC,
C = 1)
svm.train(samples, labels, params = svmparams)
testresult = np.float32([svm.predict(s) for s in samples])
print samples
print labels
print testresult
svm.save('model.xml')
loaded=svm.load('model.xml')
и выходные
#print samples
[[ 0.24686454 0.07454421 0.90043277 0.37529686 0.34437731]
[ 0.41088378 0.79261768 0.46119651 0.50203663 0.64999193]
[ 0.11879266 0.6869216 0.4808321 0.6477254 0.16334397]
[ 0.02145131 0.51843268 0.74307418 0.90667248 0.07163303]]
#print labels
[ 0. 1. 1. 0.]
#print testresult
[ 0. 1. 1. 0.]
так вы обеспечиваете п сплющенные модели формы в качестве образцов и п меток, и вы хорошо идти. вам, вероятно, даже не нужна часть asm, просто примените некоторые фильтры, чувствительные к ориентации, такие как sobel или gabor, и соедините матрицы и сгладьте их, а затем передайте их непосредственно в svm. вы, вероятно, можете получить точность 70-90%.
как кто-то сказал cnn - альтернатива svms.here есть некоторые ссылки, которые реализуют lenet5. до сих пор я нахожу svms намного проще, чтобы начать.
https://github.com/lisa-lab/DeepLearningTutorials/
http://www.codeproject.com/Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi
-edit-
достопримечательности просто п (х, у) векторов не так ли? так почему бы вам не попробовать поместить их в массив размером 2n и просто передать их прямо в код выше?
, например, 3 учебные образцы 4 земельных марок (0,0),(10,10),(50,50),(70,70)
samples = [[0,0,10,10,50,50,70,70],
[0,0,10,10,50,50,70,70],
[0,0,10,10,50,50,70,70]]
labels=[0.,1.,2.]
0 = счастливый
1 = сердится
2 = брезгливость
Deep нейронной сети всегда лучше, чем SVM. – usamec
из-за времени я должен работать с SVM, любая помощь !! – TIBOU
@usamec, ваше утверждение не всегда верно. Зависит от определения «лучше» для начала. – Bull