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识别结果完全不对),参数完全相同时结果差距也很大,不知道要怎样解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值