基于opencv的神经网络算法实现两类分类问题的可视化演示
来源:互联网 发布:ise女装官网淘宝网 编辑:程序博客网 时间:2024/05/18 18:16
代码由opencv文档中的SVM例程修改得到:两者的略有结果有差距
基于opencv的神经网络两类分类算法的二维空间可视化demon,希望可以帮到大家
int width = 512, height = 512; Mat image = Mat::zeros(height,width,CV_8UC3); // Set up training data float labels[4] = {1.0, -1.0, -1.0, -1.0}; Mat labelsMat(4, 1, CV_32FC1, labels); float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} }; Mat trainingDataMat(4, 2, CV_32FC1, trainingData); // Set up BPNetwork's parameters CvANN_MLP_TrainParams params; params.train_method=CvANN_MLP_TrainParams::BACKPROP; params.bp_dw_scale=0.1; params.bp_moment_scale=0.1; params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,10000,0.000001); //设置结束条件 //params.train_method=CvANN_MLP_TrainParams::RPROP; //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.; //Setup the BPNetwork CvANN_MLP bp; Mat layerSizes=(Mat_<int>(1,5) << 2,2,2,2,1); bp.create(layerSizes,CvANN_MLP::SIGMOID_SYM,1.0,1.0);//CvANN_MLP::SIGMOID_SYM //CvANN_MLP::GAUSSIAN //CvANN_MLP::IDENTITY bp.train(trainingDataMat, labelsMat, Mat(),Mat(), params); Vec3b green(0,255,0), blue (255,0,0); // Show the decision regions given by the SVM for (int i = 0; i < image.rows; ++i) for (int j = 0; j < image.cols; ++j) { Mat sampleMat = (Mat_<float>(1,2) << i,j); Mat responseMat; bp.predict(sampleMat,responseMat); float* p=responseMat.ptr<float>(0); float response= (float)(*p) ; if (response >0) image.at<Vec3b>(j, i) = green; else image.at<Vec3b>(j, i) = blue; } // Show the training data int thickness = -1; int lineType = 8; circle( image, Point(501, 10), 5, Scalar( 0, 0, 0), thickness, lineType); circle( image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType); circle( image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType); circle( image, Point( 10, 501), 5, Scalar(255, 255, 255), thickness, lineType); imwrite("result.png", image); // save the image imshow("BP Simple Example", image); // show it to the user
运行结果:
0 0
- 基于opencv的神经网络算法实现两类分类问题的可视化演示
- 神经网络与深度学习 使用Python实现基于梯度下降算法的神经网络和自制仿MNIST数据集的手写数字分类可视化程序 web版本
- 算法的可视化演示
- 基于神经网络的二分类问题
- 基于神经网络的二分类问题
- 基于粒子群算法的概率神经网络实现多分类(PSO_PNN)
- 源代码:基于A*算法的八数码问题的实现(用OpenGL实现动态演示)
- 深度学习-基于softmax神经网络分类的源码实现
- 可视化的数据结构 - 各种算法动画演示
- 可视化的数据结构 - 各种算法动画演示
- 可视化的数据结构 - 各种算法动画演示
- 基于OpenCV的SIFT算法的实现
- 用K-means聚类算法实现音调的分类与可视化
- 神经网络与深度学习 1.6 使用Python实现基于梯度下降算法的神经网络和MNIST数据集的手写数字分类程序
- 可视化展示神经网络是如何将分类正确率提升的
- 基于Opencv的MeanShift跟踪算法实现
- 基于Opencv的MeanShift跟踪算法实现
- 基于Opencv的MeanShift跟踪算法实现
- 为自己而留的
- Java- Lambda表达式
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 1) B
- hdu 2255 奔小康赚大钱(完美最大权匹配 KM算法)
- CCAnimation源码解析
- 基于opencv的神经网络算法实现两类分类问题的可视化演示
- HDU 1997 汉诺塔VII(递归)
- 使用不带头结点的循环链表实现队列(数据结构)
- QTcpSocket 编程
- Linux 操作系统下如何优雅的卸载软件
- MySQL 插入数据时,中文乱码问题的解决
- [C++11 并发编程] 10 - 对极少修改的数据进行保护
- 《HTTP权威指南》阅读笔记(三)
- 静态链接库LIB和动态链接库DLL的区别