基于CNN的糖尿病视网膜病变图像识别研究

2019-12-23 09:28潘杨帆吴涛颜二惠胡奇奇蒋鹏飞
电脑知识与技术 2019年31期
关键词:卷积神经网络

潘杨帆 吴涛 颜二惠 胡奇奇 蒋鹏飞

摘要:目前,深度学习已经应用到医学图像识别领域,相关学者研究并开发深度学习算法,实现计算机对医学图像的识别与处理,诊断病因,为医生提供辅助诊断决策。本文介绍了卷积神经网络(cNN)背景及相关重要理论知识,基于TensorFlow框架,采用Python作为编程语言,在Anaconda平台搭建卷积神经网络,采集医学图像,对其进行处理并进行识别操作,实验表明,通过CNN训练的网络能成功识别出不同分类的图片。

关键词:卷积神经网络;医学图像识别;TensorFlow;Python;Anaconda

中图分类号:TP18 文献标识码:A

文章编号:1009-3044(2019)31-0206-03

现今,卷积神经网络的算法已经被应用于多个领域中,如手写体识别、人脸检测、车辆检测等。同时,世界各地的医学图像分析组织正在迅速进入该领域,并将CNN和其他的深度学习算法应用于医学诊断,图像分析和机器学习等工具给医生提供辅助决策,提高病情诊断的效率和准确率。本文在卷积神经网络的理论基础之上,使用python语言搭建卷积神经网络,并利用目前已有的医学数据集对搭建好的卷积神经网络进行训练,实现对医学图像的识别与分类。

1卷积神经网络

1.1卷积神经网络的背景

卷积神经网络(Convolution Neural Network,CNN)是一种特殊的多层神经网络,它是受生物自然视觉认知机制启发而形成的一种常见的深度学习体系结构。

卷积神经网络是采用前向传播计算输出值,反向传播调整权值和偏置,卷积神经网络与普通神经网络的区别在于卷积神经网络由卷积层和子采样层组成的特征提取器组成。卷积层采用共享权重的技术,目的为减少网络层之间的连接,同时降低过拟合的风险。子采样也称为池化(Pooling),通常有两种形式:均值池化(Mean Pooling)和最大值池化(Max Pooling)。卷积操作和子采样操作的结合使用极大地简化了模型的复杂度,减少了模型的参数。

1.2卷积层的计算

图1是对一个输入图像,使用一个filter进行卷积,得到一个Feature Map的过程。

在进行卷积计算过程之前,首先对图像中的元素以计算过程中的出现的参数进行预定义。用xij表示图像的第i行第j列元素;用Wm,n表示第m行第n列权重;用wb表示filter的偏置项;用aij表示FeatureMap的第i行第j列元素;用f表示激活函数。然后,使用公式1计算卷积:

1.3池化层的计算

池化层(pooling层)的输入一般来源于上一个卷积层,其主要作用就是下采样,即:保留主要的特征,同时减少下一层的参数和计算量,防止过拟合;同时又保持某种不变性,包括平移(Translation),旋转(Rotation),尺度(Scale)。

下采样的方法通常有均值下采样和最大值下采样,两种子采样均可以看成特殊的卷积操作,如图3所示:

(1)左边采用的最大值下采样方法。卷积核中为1的位置对应输入图像对应卷积核部分的最大值的位置,卷积核在原图上的每次移动步长为2,池化后效果表现为将原图缩减到原来的1/4,并且保留每个2*2区域的最强输入。

(2)右边采用的是相对简单的均值下采样方法。卷积核中每个权重都是0.25,卷积核在原输人图像上每次移动的步长也是2。池化后的输出图片同样可以减至原来的1/4。

1.4全连接层的计算

全连接层的输人数据来自于其前面的池化层,由于池化层的结果是一个二维图像结果,通常需要经过形状转变操作转换成一维矩阵作为全连接层的输入。图4是全连接层输出的计算过程。

获得了所有的梯度之后,就可以更新每个权重。

池化层中通常有均值下采样和最大值下采样两种方法,但是无论是均值下采样还是最大值下采样都没有需要学习的参数,因此在卷积神经网络的训练中池化层只需计算出误差项并传递给上一层,不需要进行梯度的计算。

2实验数据

2.1cifar10数据集

实验采用的数据集为cifar10数据集,它是一个用于识别物体图像的深度学习数据集,它包含60000张彩色图片,总共有10个分类。其中,包括50000张用于训练集,10000张用于测试集。

2.2医学数据集

采用已经处理过的视网膜图片,根据病变的特征图片做出标记,选取其中的两类做分类设计,在代码中以0和1作为分类标签,0代表P特征下的视网膜图片,1代表S特征下的视网膜图片。

3实验步骤

3.1搭建CNN神经网络

Tensorflow中包含有卷积层和池化层等各种神经网络的计算函数,在Python代码中导入Tensorflow库,即可调用库中的函数搭建CNN模型,以下是模型搭建过程中的核心代码:

3.2训练步骤

在开始训练前,还需要定义损失函数和优化器,以减低分类出现的误差,提高图像识别精准度。本次实验使用cifar10中的训练集训练过程1000次,每训练100次打印出当前数据损失概率以及识别精度。代码实现如下:

4總结

本文基于深度学习理论,搭建卷积神经网络模型,首先将cifar10数据集作为模型的数据输入,对训练集进行1000次的训练,再使用测试集对其进行测试,得出的识别精度达到0.7558。在成功实现cifar10数据集的识别操作后,又采集了医学图像,对其进行处理并进行分类操作,成功实现对不同分类图片的识别。但由于采集的视网膜图片,特征相差不是很明显,造成识别较为困难,后续的研究中仍需进一步优化搭建的网络及算法。

猜你喜欢
卷积神经网络
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法