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的精确度要高些。

如图在自动驾驶中实现识别。

20200508101440.jpeg



仅仅正负样本为50:50的情况下,svm+hog 生成的的模型文件有2.98M ,训练时间1秒钟。准确率为100%

bayes+hog的模型文件有415M,训练时间有6分钟,识别准确率为60%。

也许hog特征不太适合bayes的训练,先做记录。

样本是公司的,暂不上传。

sitemap