基于深度学习的“智能医学影像分割系统”的开发与实现
2022-07-11王嘉仪陈晓晴吴传旭周文萱何方舟
王嘉仪 陈晓晴 吴传旭 周文萱 何方舟
(南华大学计算机学院 湖南省衡阳市 421000)
1 引言
随着计算机技术的广泛应用与普及,计算机数量与日俱增,其配套的环境设备也日益增多,计算机视觉与机器学习研究者对图像语义分割问题越来越感兴趣。机器视觉任务逐渐成为各大领域关注的焦点。在医疗技术飞速发展的时代,医学影像已成为诊断患者症状的依据之一,它旨在利用影像技术,高效准确地判断疑难杂症,做到机器和人类智慧的有机结合,目前医院中广泛应用的影像系统有CT、MRI、PET 等,对于肿瘤显影而言,医生并不能准确分辨出肿瘤的良恶性,摄片结果显示出的密度高低有时较容易造成误判,但若利用计算机方法提前诊断患者病症,提高肿瘤治疗效果,利用医学影像分割系统,结合大数据技术,可以有效弥补上述不足,能在早期快速捕捉癌细胞聚集表现,预测后续的病情变化,为治疗提供依据。本项目着重研究医学图像的分割,可以弥补以上提到的不足,解决以下几个实际问题:
(1)对感兴趣区域进行提取,便于医学图像的分析和识别。
(2)用于医学图像的三维重建和可视化。
(3)用于人体器官、组织或病灶的尺寸、体积或容积的测量。
本系统使用基于U-Net 改进后的模型对医学影像进行病灶的分割,经过改进的模型与原模型相比具有更高的准确度和运行速率。此外,本系统面向的用户主要为影像科医生,它的主要功能是对输入的影像进行分割,得到的器官或者病灶区域的位置,方便医生观察,并可以提供预筛选,以减轻影像学医生的诊断负担,提高诊断效率,其分割结果也可为医学生提供学习资源,提升医学生对于医疗影像的诊断能力。用户在使用本系统时,只需在网站上进行账号注册,之后再选择分割的类型,最后用户可将待分割的医学影像进行传输,并在短时间内得到分割结果。
实现医学图像的自动分割是非常有价值的工作,特别是目前我国国民平均生活水平大幅上升,并且面对即将到来的人口老龄化时代,每个人对自身身体健康越来越关心,即使我国的医疗卫生体系已经快速发展,但还是不能满足巨大的医疗资源需求,所以医学图像的自动分割在未来的医疗领域具有极大的价值,此系统不仅可为医疗资源分担任务,而且它可以通过对图像的分割来高效准确地判定病人的器官异常部位,当医生在使用此系统时只需查看感兴趣的区域,从而忽略不需要的区域的干扰,更有利于医生分析病情而减少误判。
2 分割模型概述
其中阈值分割作为一种最基础、使用最广泛的图像分割技术,通过设定不同的阈值,将待分割图像像素分为具有不同灰度级的目标区域,但实际工作环境中拍摄的医学影像可能包含各种伪影,如阴影、背景噪声、对比度变化程度等,对处于这种不良状态下的影像进行准确的二值化分割是一项极具复杂且困难的工作。若设定的阈值不当,则算法则会错误地将待分割影像解释为噪声,并错误地解释为对象,最终导致模型的性能下降,为分割任务带来不必要的麻烦。
随着深度学习模型在各大区域的广泛应用,其中的卷积神经网络也被引入语义分割任务,基于卷积神经网络的语义分割方法被相继提出,并且分割速度也不断的优化。CNN(Convolutional Neural Network)可以实现自动的图像分割,虽然卷积神经网络在提取图像特征时有较好的表现,但它在进行池化操作时很可能会丢失重要的边缘信息,进而影响最终的判别结果。且基于卷积网络的应用主要是分类任务,其中输出到图像的结果是单类别标签,然而在大多数医学影像处理过程中,期望的输出应该包括局部化,即为每个像素分配一个类别标签,并且在生物医学任务中想在短时间内有效训练出大量的数据集是遥不可及的。
O.Ronneberger 等人基于卷积神经网络改进得到的U-Net 模型分为编码(Encode)-解码(Decode)两部分,在编码阶段,模型通过3*3 卷积和下采样提取特征信息,在解码阶段则通过上采样和卷积将特征信息映射到原始特征空间,得到每一个像素的类别,U-Net 结构本质是一个端到端的全卷积神经网络,它通过四次下采样和四次上采样对图像进行处理,其中较浅的高分辨率层用来解决像素定位问题,有利于分割精度的提升。
但当被训练的网络层数增多,计算机资源会被过度消耗,训练出的模型容易出现过拟合的现象,并且会产生梯度消失或爆炸等问题,为了解决这些情况,一些研究通过改进基于U-Net 结构来分割的算法,通过不断优化U-Net 结构,并引入残差机制、稠密连接机制、双注意力模块等新的思想来进一步实现图像精准的自动分割与预测。本系统结合上述图像分割方法的缺陷,使用了一种将残差网络和U-Net结构相结合的,并在其解码部分加入多级预测的分割模型。此系统首先对U-Net 结构做出了部分改进,使用Resnet-18替换了U-net 结构的编码部分,并且使用VGG 公式搭建Plain VGG 网络,在Plain VGG 的卷积网络之间插入Identity Mapping,使模型的效果更加准确。此外,此系统在基于U-Net结构和Resnet 构建块的基础上,还在解码部分加入了多级预测来进行跟踪,多级预测模块可以充分利用各层特征的特点,实现对不同尺度目标的分割和评估。加入了多级预测结构后的U-Net 模型在一定程度上优化了分割精准度,在加入多级预测外,本文还将每一级的预测加入到下一级的预测结果中,这样可以有效的节省训练时间,提高模型预测的准确度,加入多级预测的分割模型如图1 所示。本系统的使用此深度学习方法对器官和病灶区域进行分割,并支持多种格式的影像学数据输入,可以帮助用户进行CT、MRI、WSI(病理图像)自动分割,与传统的图像分割相比有更高的精确度和运行效率。
图1:加入多级预测的U-Net 结构
3 “智能医学影像分割系统”的实现
3.1 系统架构
系统整体使用Python 中的Django 库基于MVT 结构进行设计,其中M 为Model,只要负责应用和数据库的交互;V 为View,主要负责将UI 界面模板呈现给用户和用户进行交互;T 为Template,主要是UI 界面的模板。应用是系统的核心为语义分割,其语义分割采取U-net 框架。根据交互和语义分割,设计整体系统结构图如图2 所示。
图2:系统结构图
该系统主要由用户交互模块和语义分割模块组成,其中用户交互模块使用Django 作为后台框架开发一个 WEB 应用,而语义分割模块则是利用语义分割算法对用户提交的影像数据进行自动分割,得到用户提交的任务类型的分割结果。这两个模块由两个独立的线程实现,在两个模块之间使用一个任务分配线程用于进行这两个模块之间的数据交互。
任务分配模块是独立于 Django 主要线程的一个用于进行检测任务分配的线程,它主要负责从 UI 交互模块中获取到分割任务的相关信息,这些信息包括模型配置文件、任务ID 和文件名。获取到任务相关信息后,将其标为等待任务,语义分割进程能够处理该任务时将其取出,通知语义分割线程处理该任务。
语义分割线程主要是语义分割算法的实现,本系统采用的是基于U-net 的架构,U-Net 是一个编码(Encode)-解码(Decode)结构,在编码阶段,模型通过卷积和下采样提取特征信息,在解码阶段则通过上采样和卷积将特征信息映射到原始特征空间,得到每一个像素的类别,U-Net 中的高低像素语义信息结合的方式也有效融合了上下文信息,有利于分割定位精度的提升。
由于涉及到影像AI 相关处理,服务器硬件资源采用NVDIA Tesla V100、32GB 内存以及2.2GHz 主频的Intel Xeon E5-2650 v4(Broadwel)处理器。此外,为保证医生阅片及标注的流畅度,客户端内存配置为8G,单用户带宽设置为20M。
3.2 方案实现
本系统的用户交互模块包括登录、注册、提交检测请求、检测结果查询以及下载这几个功能,每一个功能由一个独立的视图函数完成,其中登录功能在login 视图函数中实现,注册功能在register 视图函数中实现,提交检测请求在index视图函数中实现,检测结果查询在results 视图函数实现。
3.2.1 登录/注册视图设计
在登录视图函数中首先根据登录模版渲染登录页面发送给客户端,然后接收到用户的登录信息后,使用User 模型向表中查询是否存在此用户,并使用用户名和密码进行认证,认证成功后则登录成功转向首页面。注册视图最首先也是根据注册模板渲染页面反馈给客户端,然后当用户提交注册信息后使用User 模型向表中插入用户信息。
3.2.2 提交检测功能设计
提交检测功能要求在页面渲染完毕后接收用户的请求,根据此次请求生成唯一的128 位UUID 作为此次任务的任务ID,然后调用SegTasks 模型向表中插入此次分割任务信息,然后向独立任务分配进程的等待队列中插入此次分割任务的信息,完成后转向本用户的所有分割任务的结果页面。
3.2.3 分割结果视图设计
结果视图首先是通过SegTasks 查询到当前登录用户的所有分割任务请求,其次是根据任务ID 是否在等待,判断任务是否处于等待状态,然后则是通过判断是否存在结果文件判断该次任务是否已经完成。任务分配线程是通过任务等待列表,任务等待队列和分割任务队列实现,任务分配线程通过任务等待队列卡死在等待状态,当用户请求一个新的分割任务时,插入到任务等待队列将会唤醒此次任务分配线程,此时线程将此次任务信息插入到任务等待列表中,而任务是否可以加入到分割任务队列中则需要看此时分割任务队列是否已满并且是否为等待列表中的首个任务,如果未满且为等待列表中的第一个任务则可插入。
3.2.4 安全标志位设计
在实验过程中发现如果仅采用分割任务队列,则可能会存在任务冲击正在运行的任务,导致任务出运行错误,因此,在分割任务队列的基础之上增加了一个安全标志位,当任务加入到任务分割队列并被分割任务线程取出后安全标志位阻止分配任务继续向分割队列中加入新任务,当分割结束后,安全标志位置为安全状态,分配线程可以继续向分割队列中加入任务。分割任务线程主要通过分割任务队列和安全标志位实现,线程通过分割任务队列的get 方法将线程陷入等待状态,当分割任务列表中加入任务时,线程唤醒,将安全标志位置为不安全状态,根据任务信息中的分割任务配置文件确定模型的参数,包括输出类别数、模型输入通道数、层数等。
3.2.5 影像分割实现
同时根据配置信息获取任务所属类别,根据不同类别实现不同数据的分割,目前已经实现针对CT 和MRI 的影像学数据的分割,病理学图像的分割即将上线。模型配置好后载入当前模型的权重信息,进入分割过程,将三维CT、MRI切分成二维图片按顺序分割后重建得到最终的三维分割结果,针对病理学图像则采用滑动窗口滑动,每次滑动1/2 个窗口大小,每次的重叠区域的预测结果以两次的平均值为准,当窗口滑动过整个病理学图像后得到最终的分割结果。分割结果得到后,将结果存入到对应该任务ID 的结果文件夹中,同时将安全标志位置为安全状态。
4 系统应用效果
(1)用户在该界面可以使用账号密码直接登录,也可以点击注册进行账号注册,注册完成之后登录进入系统,同时也可以进行找回密码操作,如图3 所示。
图3:系统登陆界面
(2)用户登陆成功之后进入该界面,即首页,在该界面提交需要分割的脑肿瘤、肾或肾肿瘤文件,选择相对应的任务类别后,点击提交按钮进行医学影像的分割,如图4 所示。
图4:提交任务界面
(3)用户在提交任务后,进入分割任务列表界面,列表标明了每个任务的ID、类别、提交的时间以及分割的状态,分割完成后的图像为nii 格式,届时用户可以在ImageITK软件上打开分割后的照片,分割任务表如图5 所示。
图5:任务列表界面
5 结语
医学影像能够反映患者的病灶区域,医生通过医学影像可以为患者提供准确个性化的就诊建议,但医学影像往往具有模糊、不均匀性等特点,本系统的开发使用了基于MVT结构进行设计,在系统的开发中本系统使用基于U-Net 改进而得的深度学习模型做为分割模型,本医学影像分割的系统意义为:对医生难以通过医学影像判断的器官或病灶区域进行分割和定位,以提高医生的诊断效率并有效减少医护人员的工作量,有效的提高了医学影像的分割精度和速率。各诊室医生在使用本系统时可以进行快速注册,或登录本系统进行医学影像的上传,最终得到较为准确的分割结果。影像的分割结果为医院各大诊室医生提供了帮助,医生可以根据分割后的照片判定肿瘤的状态、位置、性质,并制定出相应的治疗方案。
另外此分割系统还存在一定的缺陷,比如在3D 图像分割中的精度较差,在今后的系统完善和开发工作中,我们将采用医院提供的真实医学影像作为本系统的数据集,并且引入Transformer 自注意力机制与此系统的深度学习模型相结合,着重对3D 的医学影像做进一步分割处理,随着深度学习与生物医学的不断结合,基于计算机与医学影像相结合的应用技术将在未来为我国的医疗事业带来一个新的突破。