def train_svm(svm_save_path, descriptors, labels):
# train_data = convert_to_ml(descriptors)
train_data = np.array(descriptors)
responses = np.array(labels, dtype=np.int32)
print "Start training..."
svm = cv2.ml.SVM_create()
# Default values to train SVM
svm.setCoef0(0.0)
svm.setDegree(3)
# svm.setTermCriteria(TermCriteria(cv2.TERMCRIT_ITER + cv2.TERMCRIT_EPS, 1000, 1e-3))
svm.setTermCriteria((cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS, 1000, 1e-3))
svm.setGamma(0)
svm.setKernel(cv2.ml.SVM_LINEAR)
svm.setNu(0.5)
svm.setP(0.1) # for EPSILON_SVR, epsilon in loss function?
svm.setC(0.01) # From paper, soft classifier
svm.setType(cv2.ml.SVM_EPS_SVR) # C_SVC; # EPSILON_SVR; # may be also NU_SVR; # do regression task
svm.train(train_data, cv2.ml.ROW_SAMPLE, responses)
print "...[done]"
svm.save(svm_save_path)
# def test_classifier(svm_file_path, window_dims):
# # Set the trained svm to my_hog
# hog_detector = get_svm_detector(svm_file_path)
# hog = get_hog_object(window_dims)
# hog.setSVMDetector(hog_detector)
#
# locations = hog.detectMultiScale(img)
评论列表
文章目录