opencv-ios开发笔记7 神经网络 分类器

本文介绍了在iOS 9环境下使用OpenCV 2.4.13进行神经网络训练,通过ANN_MLP实现颜色分类。开发者首先在ANNTrain()中训练神经网络并保存模型到bpModel.xml,接着在ANNTest()中加载模型文件进行图像颜色判断。实践中遇到的问题包括OpenCV错误提示,指出训练数据和标签的结构不匹配。
摘要由CSDN通过智能技术生成

参考:http://blog.csdn.net/qq_15947787/article/details/51385861 和 http://www.cnblogs.com/denny402/p/5032232.html

上面两文都是opencv2 在vc环境下的例子,下面是我在 ios9中,用opencv2.4.13版做的练习,并且运用了xml特征文件的存取。

效果如下:


(ps:这次练习的目的判断图片上每个像素应该是红色还是蓝色,离黑点近就是红色,离白点近就是蓝色)

首先是在ANNTrain()中用测试点训练神经网络,把训练结果保存bpModel.xml,然后在ANNTest()中加载特征文件bpModel.xml,判断图片上的颜色。

@property NSString* recordFilePath;
- (void)viewDidLoad {
 _recordFilePath= [ [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"bpModel.xml"];
  //第一步 训练
    [self ANNTrain];
    //第二步 测试
     //[self ANNTest];
}



//训练神经网络
-(void)ANNTrain{
     // Set up training data
    float labels[10][2] = {
  {0.9,0.1},{0.1,0.9},{0.9,0.1},{0.1,0.9},{0.9,0.1},{0.9,0.1},{0.1,0.9},{0.1,0.9},{0.9,0.1},{0.9,0.1}};
    //这里对于样本标记为0.1和0.9而非0和1,主要是考虑到sigmoid函数的输出为一般为0和1之间的数,只有在输入趋近于-∞和+∞才逐渐趋近于0和1,而不可能达到。
    Mat labelsMat(10, 2, CV_32FC1, labels);
    
    float trainingData[10][2] = { {11,12},{111,112}, {21,22}, {211,212},{51,32}, {71,42}, {441,412},{311,312}, {41,62}, {81,52} };
    Mat trainingDataMat(10, 2, CV_32FC1, trainingData);
    
    Mat layerSizes=(Mat_<int>(1,5) << 2, 2, 2, 2, 2); //5层&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值