<>机器学习–利用卷积神经网络进行鸟类识别
本实验是在Windows10系统上安装Anaconda
3,基于建立在TensorFlow上的模块化的、透明的深度学习库TFLearn,完成实验训练及验证结果。
(一)算法原理分析
卷积神经网络(Convolutional Neural
Network,CNN)是根据大脑神经元而设计的,是一种前馈多层网络。其信息流动只有一个方向,即从输入到输出,每个层使用一组卷积核执行多个转换。卷积神经网络模型主要包括卷积层、池化层和全连接层。
(二)数据描述
本实验的数据是从CIFAR10
数据库中免费获取的,其中含有6000张鸟类的图片和54000张非鸟类的图片,共包括10个类别,每个类别有6000张32*32彩色图片。数据集一共分为5个训练集合一个测试集合,每个集合有10000张图片。测试集合中包含了从每个类中随机选择的1000个图片。训练集合则包括每个类的5000张剩余图片。
下面是该数据集的部分图片展示。
(三)算法描述
本次实验使用了TFLearn。TFLearn是一个建立在TensorFlow顶部的模块化的深度学习库,它为TensorFlow提供更加高级的API,以便于快速实验,同时保持完全透明和兼容。
本实验设计的卷积神经网络结构包括了3个卷积层,2个最大池化层和2个全连接层。待识别图片可以通过卷积层和池化层来提取图片中的特征,而全连接层则把二维的特征图变为一维的特征向量。
模型建立好之后,开始训练。本实验中,进行了50次训练,同时进行实时监控,将损失率和正确率都记录下来,并保存模型。本实验通过卷积神经网络对图片进行鸟类识别,训练50次,训练集合识别准确率达到了88.25%,损失率达35.76%;验证集合识别准确率达81.00%,损失率达69.97%。
(说一下这里的模型各层选择,我在网上找了大量的数据,最后发现大部分博客都是这一种结构,其他结构最后得到的正确率都比这个要小一些。按理来说,这个模型结构的选择应该是经过大量测试得到的,但是由于我做作业的时候时间不充足,设备不给力,运行一次的时间就要一个多小时,所以就遵从了大多数人的选择,哈哈哈)
小结:在本次实验中,我对卷积神经网络的原理有了更进一步的理解:对一个图像进行识别时,要抓取最突出的部分。这也是卷积神经网络的核心之一。通过卷积层进行卷积运算,将图像特征进行提取和抽象,之后,利用池化层将特征进一步提取,减少参数的数量。本实验使用的是最大池化层,将卷积层计算出的特征选取最大值,从而提高计算速度,缩减模型的大小,降低特征维度。至此,一个很大的图片已经被缩减成了一个相对较小的数组。所以我们可以把这个数组输入到另外一个神经网络里面去,即全连接神经网络,将二维转换成一维,它会输出该图片所属标签,从而完成了对该图像的识别。
所以,对一个图片进行识别,就是从一整个图片开始,一步一步逐渐分解它,直到找到一个单一的结论。同时,卷积层越多,卷积神经网络就能识别出越复杂的特征。
本实验是用python代码编写的,这里就不贴代码了。网上有很多,可以找找看。