opencv3——ANN算法的使用


最近剛轉用opencv3,使用ANN算法時遇到了一些問題,記錄下來。

訓練神經網絡的代碼如下:

 

//創建ANN
Ptr<ANN_MLP> bp = ANN_MLP::create();

設置層數時,要注意:例子的數量要和標簽的數量相同

第一項為圖片的像素數,最后一項為訓練的種類數

//設置層數
 Mat layerSizes = (Mat_<int>(1, 4) << image_rows*image_cols, int(image_rows*image_cols / 2), int(image_rows*image_cols / 2), class_num);
 bp->setLayerSizes(layerSizes);

 

bp->setActivationFunction(ANN_MLP::SIGMOID_SYM, 1, 1);

void setActivationFunction(int _activ_func, double _f_param1, double _f_param2 );

 


bp->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 300, FLT_EPSILON));
 bp->setTrainMethod(ANN_MLP::BACKPROP, 0.001);
 Ptr<TrainData> tData = TrainData::create(DataMat, ROW_SAMPLE, labelsMat);
 bp->train(tData);
float response = ann->predict(testMat);

 

 

 

 

 

//加載分類器時,使用以下任意一個即可
Ptr<ANN_MLP> bp = StatModel::load<ANN_MLP>("*.xml");
Ptr<ANN_MLP> bp = ANN_MLP::load<ANN_MLP>("*.xml");
Ptr<ANN_MLP> bp = Algorithm::load<ANN_MLP>("*.xml");

 

不知道為什么,我使用opencv3的ANN算法 跟opencv2中的算法識別結果差距很大(2識別結果大致正確,3識別結果完全不對),參數完全相同時結果差距也很大,不知道要怎樣解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM