新手上路之opencv神经网络有监督学习分类
来源:互联网 发布:淘宝雨晴家有假货吗 编辑:程序博客网 时间:2024/05/02 04:23
水平有限难免错误,批判性观看。
神经网络的理论太多了,下面给个链接大家可以去看下:
http://blog.csdn.net/byxdaz/article/details/534855
原理能懂当然好了,其实不懂也不影响使用,只要明白神经网络的基础结构就行了。下面来说说opencv里面使用神经网络需要注意的地方。
第一步是训练
神经网络和svm的不同是需要在调用train方法之前创建结构。即有多少层,每层有多少神经元。创建方法如下:
int classLableCount=5;
Mat layerSizes=(Mat_<int>(1,3) <<feature_vec_mat.cols,300,classLableCount);
其中feature_vec_mat是Mat结构,他的rows表示总共的训练样本,cols表示训练样本的维度,classLableCount表示需要分类数量,上面方法表示神经网络有三层,输入层有feature_vec_mat.cols维,隐藏层有300个神经元,输出层有5个维度。这样训练好的神经网络的参数大有feature_vec_mat.cols*300这么多个。上面如果写成
Mat layerSizes=(Mat_<int>(1,3) <<2000,1000,1000,5);
这样表示有4层,输入层,隐藏层,隐藏层,输出层。需要维护的权值就有2000*1000*1000这么多。不过不用担心,有个模型叫做卷积神经网络,它的共享权值可以解决这些问题。遗憾的是opencv还没有引入,对于新手来说需要等等再研究。
神经网在训练的时候不是像一般的方法在train方法的时候给标签,在predict返回标签。神经网络在训练的时候是给的向量,返回的也是向量。
CvANN_MLP mlp;
mlp.train(feature_vec_mat,label_mat,Mat(),Mat(),params);
这里的label_mat不是n*1而是n*classcout维度的,例如feature_vec_mat第一行的向量对应的是标签为3的类,一共有5类,label_mat第一行就应该是0 0 1 0 0。
params一般使用opencv文档中推荐的参数
CvANN_MLP_TrainParams params;
params.term_crit=cvTermCriteria( CV_TERMCRIT_ITER + CV_TERMCRIT_EPS, 1000, 0.01 );
params.train_method=CvANN_MLP_TrainParams::RPROP;
params.bp_dw_scale = 0.1;
params.bp_moment_scale = 0.1;
params.rp_dw0 = 0.1;
params.rp_dw_plus = 1.2;
params.rp_dw_minus = 0.5;
params.rp_dw_min = FLT_EPSILON;
params.rp_dw_max = 50.;
第二步是检测
mlp.predict(sample,res);
两个参数都是Mat,其中res返回的是一个1*classcout维度的Mat,找到中间最大的数,就代表分类结果。
- 新手上路之opencv神经网络有监督学习分类
- 机器学习:有监督算法之分类
- 机器学习:有监督算法之分类
- 神经网络学习——有监督vs无监督
- 机器学习模型的基本分类--有监督、无监督
- 有监督学习(分类、回归)
- Jakarta Struts学习之新手上路
- Jakarta Struts学习之新手上路
- 机器学习之监督学习-分类
- 神经网络学习笔记2:有监督的Hebb学习
- GIS学习笔记之Arcgis监督分类
- 监督学习之分类和逻辑回归
- driver之新手上路
- 监督学习三 神经网络
- 机器学习有监督学习之--回归
- python 机器学习之有监督学习
- 机器学习之有监督和无监督
- 【Scikit-Learn 中文文档】十八:神经网络模块(有监督)- 监督学习
- 使用段错误产生的核心转储文件进行调试
- mysql 数据库导出 导入
- JavaScript:undefined!=false之解 及==比较的规则
- SICP题解----第1.1节练习
- 信号屏蔽字
- 新手上路之opencv神经网络有监督学习分类
- 学好编程的捷径??
- [hdu 5032]2014北京网络赛Always Cook Mushroom 离线线段树/树状数组
- JFreeChart 实现各种数据统计图(柱形图,饼状图,折线图)
- android frameworks的按钮监听
- hadoop节点故障解决一例
- android坐标
- 国密SM3杂凑算法与实现
- CoreData线程安全