opencv中机器学习svm和贝叶斯的比较自动驾驶识别地头
opencv 3.2 提供贝叶斯的api比较简单,不像svm那么多。贝叶斯只有三行就可以
Ptr<NormalBayesClassifier> nBayes = NormalBayesClassifier::create(); cout<<"Starting training..."<<endl; nBayes->train(sampleFeatureMat, ROW_SAMPLE, sampleLabelMat); cout<<"Finishing training..."<<endl; //储存 分类器 const std::string save_file{ "/home/lid/share/samplesOfCorn/Pictures/farmlandBound_bayes/bayes_model.xml" }; // .xml, .yaml, .jsons nBayes->save(save_file);
在而分类中实现如图的地头识别二分类中进行对比,在样本少的情况下,用同样的hog特征训练预测,svm的精确度要高些。
如图在自动驾驶中实现识别。
仅仅正负样本为50:50的情况下,svm+hog 生成的的模型文件有2.98M ,训练时间1秒钟。准确率为100%
bayes+hog的模型文件有415M,训练时间有6分钟,识别准确率为60%。
也许hog特征不太适合bayes的训练,先做记录。
样本是公司的,暂不上传。