山东第一医科大学(山东省医学科学院),山东 泰安 271016
摘要:深度学习是人工智能领域的重要研究方向,TensorFlow是目前流行的深度学习框架。首先对TensorFlow框架及其环境搭建进行了介绍,在Tensorflow框架基础之上实现了U-Net网络模型;然后论述了基于该框架的卷积神经网络模型在脑出血CT图像分割中的应用。
关键字:深度学习;卷积神经网络;Tensorflow;CT图像
1.引言
深度学习(Deep Learning)源于人工神经网络,属于机器学习的一个分支。深度学习是一种具有多层结构的,使用复杂非线性变换对数据进行处理的神经网络框架模型。其能够通过训练样本自动提取不同层次的特征,从而提高算法的准确度。深度学习模型的构造过程包括:收集数据集、定义模型预测性能指标、确定模型评估方式、搭建模型、数据预处理、数据输入、训练模型和学习优化、测试验证集。目前深度学习已被广泛应用在计算机视觉、自然语言处理、语音识别与生物信息学等研究领域,并获取了很好的效果。在医学图像分割的应用过程中,深度学习模型通过多层神经网络,使得医学图像的有用信息能够一层一层的传递,从而提取到图像在多层学习模型中的不同层次特征。
当前各种深度学习框架层出不穷,其中TensorFlow是使用最广泛的深度学习框架之一,主要应用于图像识别、分类、分割等领域。由于其具有高度的灵活性和可移植性,迅速成为最受欢迎的一种深度学习框架,也是未来的发展趋势[1-3]。
2.TensorFlow环境搭建
TensorFlow是由谷歌公司人工智能团队开发和维护的开源的深度学习框架,是一个基于数据流编程的符号数学系统。在Windows10系统上安装配置TensorFlow环境。首先需要下载和安装Anaconda和Pycharm。Anaconda是Python的编译器和包管理工具,Pycharm是Python的编辑工具。
TensorFlow2可以使用通用Python包管理工具pip命令进行下载和安装。通过国内源的下载安装命令如下:
pip install tensorflow -i https://pypi.douban.com/simple
或者:
pip install tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple
安装成功后,可以在Pycharm或Jupyter Notebook(一种编写Python程序的工具)中创建Python项目,使用TensorFlow进行数据处理。
3.U-Net神经网络模型
U-Net模型具有上下文结合的U形结构,其主要思想是用连续层替换通常的收缩网络,池化操作与下采样操作相关,通过上采样操作进行补充,从而能够提高输出的分辨率。收缩路径的高分辨率与上采样输出相结合。因此,序列卷积层可以得到更精细的特征,从而实现更精确的分割。U-Net体系结构中的一个重要的改进是上采样部分,其中有大量的特征通道,允许网络将上下文数据传播到更高分辨率层。因此,扩展路径与收缩路径大致对称,形成U形结构。U-Net网络每个卷积有效部分的分割图仅包含像素,并且在输入图像中获得像素的完整上下文。该方法允许使用重叠平铺策略在任意大的图像中进行无缝分割。传统的CNN通常在卷积层后连接几个完全连接层,卷积层生成的特征图映射到一个固定长度的特征向量,用于图像级分类。然而,U-Net模型对FCN的改进,使其能够在像素级识别图像,从而实现了在语义级进行图像分割。U-Net可以应用于具有较大尺寸的医学图像。同时,由于其网络结构,重叠切片策略使其同样适用于切割成小块的图像。因此,U-Net可以接受任何大小的图像作为输入。
4.在CT图像分割中的应用
图像数据集含有不同程度脑出血患者脑部CT图像,256*256大小。进行数据增强来提高泛化力并进一步扩充数据集,对原始图像进行左旋、右旋、翻转、增加噪声等预处理操作。
基于TensorFlow的卷积神经网络模型,数据由n维张量来进行表达,神经网络可以利用计算图来搭建,并利用会话执行这一过程,然后再不断优化各参数的权重得到最终的模型。具体步骤如下:
(1)输入层:将采集到的CT图像全部转化为256*256像素,格式为jpg,然后进行乱序,对于转换后的图像分为测试集和训练集,每一张CT影像图像都含有自己的特征和标签,然后做为输入数据送入到神经网络的卷积层。
(2)卷积、池化层:采用连续两次卷积计算、然后经过激活函数、池化操作对图像进行特征提取,本文设定第一个卷积层的卷积核大小为5*5,核的个数为20,第一层池化核大小为2*2,步长为2*2,第二层卷积核的大小为4*4,核的个数为40,第二层池化核大小为2*2,步长为2*2,进行拉直操作后送入全连接层。在构建的此卷积神经网络中,使用Conv2D函数进行卷积、BatchNormalization函数进行批标准化、选择ReLU作为激活函数、Maxpool2D函数进行池化。
(3)全连接:采用Dropout函数进行舍弃操作,并赋值0.2,随机舍弃部分神经元,防止过拟合发生。使用tf.layers.dense()完成全连接操作,用arg_max()函数取值作为预测值。
部分CT图像脑出血区域分割结果如图1所示:
图1 CT图像分割前与分割后示意图
5.结束语
卷积神经网络模型的建立和训练的过程中可以通过调整学习率、激活函数、损失函数、训练轮数、训练集数量、卷积核的大小和数量及步长、池化核大小及步长等因素进行不断调整,再选择合适的神经网络算法模型往往会大大提高识别准确率。该文介绍了TensorFlow框架下的卷积神经网络模型,及其在脑出血CT图像分割中的应用,该方法识别准确率的提高是需要将来进一步的研究和学习。
参考文献:
[1]刘晓, 齐德昱, 曹世轩. 基于TensorFlow2.0的图像分类算法研究[J]. 现代计算机, 2020, (14): 63-68,74.
[2]王保敏, 王睿, 阮进军,等. 基于TensorFlow的深度神经网络优化方法研究[J]. 兰州文理学院学报:自然科学版, 2021, 35(6): 71-74,94.
[3]高艳. 基于TensorFlow卷积神经网络的图像识别[J]. 数字通信世界, 2020, (1):20-21.
基金项目:国家级大学生创新创业训练计划项目(S202110439011)