java cnn图像识别_点击鼠标完成CNN(卷积神经网络)图片识别(以MNIST为例)

作为人工智能的核心,机器学习是一个发展了很多年的技术体系,专门研究计算机怎样学习获取新的知识或技能;传统上有决策树、随机森林、人工神经网络、贝叶斯学习等算法。

人工神经网络(Artificial Neural Network,ANN ),是人工智能领域1980s以来的研究热点,但受限于算力,传统的机器学习使用基于单隐藏层神经网络的多层感知器(MLP),和决策树、随机森林等算法相比并无优势。

进入21世纪,因为算力的巨大提升,基于多隐藏层的深度神经网络(Deep Neural Networks,DNN)开启了一个深度学习(DL, Deep Learning)的新时代!其中卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习(deep learning)的代表算法,CNN魔法般的图形识别能力是人工智能时代最激动人心的进展之一。

我们现在基于WEKA软件的Deeplearning4j插件,花费2分钟构建一个CNN网络,完成图片识别领域最著名的例题MNIST手写数字的识别。

一、软件准备:

1JAVA环境

2WEKA:

3Deeplearning4j插件

二、安装

1.java环境和WEKA分别点exe安装

2. Deeplearning4j插件安装:打开WEKA界面,选Tools-package manager,点界面最右上的File/URL-Browse,选择下载的Deeplearning4j安装包,点OK等待安装完成,之后关闭package manager窗口。

三、分析

1.选择数据标签:在WEKA主窗口选择Explorer,点右上的Open file,选择我的电脑-C盘里面的C:\Users\XXXX\wekafiles\packages\wekaDeeplearning4j\datasets\nominal\ mnist.meta.minimal.arff

(其中XXXX是此电脑的用户名)

2.设置参数载入图片:

在WEKA Explorer界面最上端,点击切换到Classify栏,点击Choose,点开function选择Deeplearning4j,点击Choose后面的参数栏。

在弹出的参数选择界面中找到zooModel点击Choose按钮,选择Dl4jLeNet(这是专门优化的CNN网络参数模型);

同样找到instance iterator栏,点击Choose按钮,选择Imageinstanceiterator点击instance iterator栏 Choose按钮后面的参数选择框,在弹出的参数选择界面中找到directory of images后面的Browse框,选择C:\Users\XXXX\wekafiles\packages\wekaDeeplearning4j\datasets\nominal\ mnist-minimal(这一步相当于告诉软件图片的位置),并更改sizes of mini batch的0改为16(每次让电脑学习的图片数)点OK;

在参数界面上也点OK。

3.机器学习过程:

在WEKA Explorer界面的Test option选Use train Set,点击Start开始

结果:Correctly Classified Instances项 :100%

识别率100%,但是Deeplearning4j插件内置的是一个精简版的MNIST手写图片数据集,图片量少,发挥不出CNN的优势,可能难免有一些过拟合,相对于传统的决策树、贝叶斯模型等,深度网络的优势是准确率上限高,能在大量样本上做到极高正确率。

以下附上我优化好的MNIST数据全集,供大家测试

提取码:aaaa

你可能感兴趣的:(java,cnn图像识别)