陈 哲 黄 巍 陈 昭
(东华大学计算机科学与技术学院 上海 201600)
深度学习[1]的兴起为医学图像分析和研究注入了新的活力。以卷积神经网络[2]为主的机器学习模型已经在很多医学图像领域达到了业界领先的水准[3],其准确性和可靠性均已达到应用级水平。但深度学习模型的训练需要大量人工标注的样本,并且当今医学图像领域缺少类似ImageNet[4]这样大规模且可靠的基准测试数据集。而如果准备自制数据集,不仅需要花费巨大的人力和物力成本,而且由于医学图像本身的专业性和复杂性,其标注的正确性也很难保证。更复杂的是,不同医学专家的标注结果之间存在较大分歧,甚至是同一位专家在多次标注同一幅图像时也不尽相同[5-6],使得医学图像的标注工作更加棘手。
目前主流的标注工具有LabelMe[7]和ASAP[8]。LabelMe是一款基于Web应用的标注工具,并且支持数据集的分享。ASAP是一款专注数字病理图像的分析、可视化和标注,支持整张切片(Whole-slide Images,WSI)的读写。在标注的实践过程中,我们发现以上工具存在两个突出问题:其一,均只支持多边形标注(如图1(a)所示),对于医学图像的标注工作来说,其准确性低于自由绘画标注(如图1(b)所示);其二,LabelMe通常是用来标注常规的计算机视觉任务,而ASAP只是加入了对WSI的支持,均没有考虑到医学图像标注工作本身的复杂性。
因此,本文设计并实现了基于Web应用的医学图像半自动标注系统,它具备以下特点:提供了多边形和自由绘画两种标注模式;加入了沟通和协作机制,尽量减少标注的分歧,提高标注准确率;加入了神经网络的辅助标注,使得标注工作半自动化,大幅提升标注工作的效率。
(a) 多边形标注 (b) 自由绘画标注图1 医学图像标注
系统的整体架构如图2所示。客户端包括Web应用程序,直接面向终端用户。服务器端向客户端提供RESTful API,同时还依赖数据库以进行数据的增删改查,并用来提供初始化标注的机器学习服务。
图2 整体架构
(1) 客户端的选择 客户端选择的是基于Web的网页应用。与桌面应用相比,Web应用具有无需安装、跨平台性好、更新迭代速度快等独有的优势。
(2) 通信方式的选择 接口标准采用经典的RESTful API作为客户端和服务端通信。数据交换格式采用JSON,因为其简洁、易于阅读和便于计算机处理等特点[9],已逐步取代XML成为最主流的数据格式。通信协议采用HTTPS而非HTTP,因为HTTP协议使用明文数据传输,且缺乏消息完整性检测,而HTTPS很好地解决了上述安全性问题[10]。
(3) 机器学习模型的选择 机器学习模型采用U-Net[3]。U-Net是经典的全卷积神经网络架构,在医学图像等领域均取得了很好的效果。U-Net包括两个组成部分:用于提取图片上下文信息的收缩路径和用于区域精准定位的扩展路径,因整个网络形似字母U,因而得名U-Net。系统所使用的U-Net模型具体参数如表1所示。
表1 U-Net模型参数
系统同时提供自由绘画和多边形两种标注模式。在自由绘画模式中,用户拖动鼠标画出曲线即可形成标注,用户抬起鼠标后曲线会自动闭合形成标注区域;在多边形标注模式中,用户每次点击鼠标即确定多边形的一个顶点,并自动与前一个顶点连接,最后点击第一个顶点即完成此多边形的标注。但是对于标注区域处在图像角落的情形,简单地连接曲线的起点和终点并不能获得想要的区域,如图3所示。因此本文提出一种用于优化自由绘画结果的曲线闭合算法,优化后的效果如图4所示。
图3 算法优化前的自由绘画标注
具体过程如算法1所示。
算法1曲线闭合算法
输入:曲线的起点s和终点t,画布的宽度w和高度h,画布的顶点集P={p1,p2,p3,p4},容错率
输出:涵盖边角的闭合区域
1: 对s和d做边界限制,将小于0的坐标值置为0,大于边界限制的置为边界限制大小;
2:repeat
3: 从P中顺序选取顶点p;
4: 分别计算s与p在横轴上的距离dsph,t与p在纵轴上的距离dtpv;
5:ifdsph≤w·anddsph≤w·then
6: 添加一条从s到p的路径,以及从p到t的路径;
7:endif
8: 分别计算s与p在纵轴上的距离dspv,t与p在横轴上的距离dtph;
9:ifdspv≤h·anddtph≤w·then
10: 添加一条从s到p的路径,以及从p到t的路径;
11:endif
12:until满足停止条件
系统选择用JSON文件存储一幅图像的所有标记,包括所有标记区域及每个区域的类别。当用户想要查看一个图像的标注时,客户端从标注存储地址下载JSON标注文件并渲染标注;当用户对一幅图像的标注工作完成后,客户端将当前标注工作区的内容转换为JSON文件并上传至服务器,同时记录下最终存储的路径。整个工作流程如图5所示。
图5 上传和下载标注JSON文件
另外,系统还提供一些标注上的便捷功能,例如撤销和反撤销、放大缩小、调整和删除单个标注等,以提高标注效率。
为了让多个标注者之间能够高效交流,每幅图像都能够发布讨论。一个讨论包括内容、所回复讨论、对应标注区域和发布时间四个属性。每幅图像可以包括多个讨论,每个用户也可以发布多个讨论。
在用户标记足够数量的图像之后,系统就可以使用这些图像训练U-Net[3]模型。
模型的输入是变形后统一大小的图像,输出是一个二值化掩模,在标注区域内的像素值为1(代表肿瘤),其余像素值为0(代表背景)。
模型的损失函数为交叉熵,其定义为:
(1)
优化算法采用Adam[11],设置学习率为0.000 05。
当用户请求使用模型进行初始化时,模型就会对用户提供的图像进行预测,并将预测结果转换为标注JSON文件以供客户端下载。用户便只需在模型预测的初始标注区域上进行修改,大大加快了标注的进度。
本系统均使用当今非常流行的开源技术实现。下面分客户端和服务器端进行详细讲解。
客户端采用Facebook推出的React框架进行开发。React凭借响应式UI、虚拟文档对象模型(Document Object Model,DOM)和组件化这三大核心技术成为当今Web页面开发最受欢迎的技术之一。 采用React来编写用户界面和逻辑,处理数据的展现,并且承接用户与服务器的各种数据交互。
所有编写的内容都通过单个页面加载而检索,该单页面挂载到一个id为root的DOM节点上,通过从一个浏览器全局的浏览器对象模型BOM(Browser Object Model,BOM)元素History对象中推入或弹出页面来完成页面的跳转。作为一个单页应用(Single Page Application,SPA),系统客户端需要设置一系列路由,即页面跳转的规则,包括如表2所示的10个路由。
表2 客户端路由表
在React中通过HTML5的fetch函数与服务器端进行数据交换,并将频繁使用的数据存储在浏览器的LocalStorage中来实现状态的持久化。
标注工作区的开发采用HTML5的Canvas技术。 Canvas使用JavaScript脚本可以绘制图形,创建动画,进行实时视频的处理和渲染。由于Canvas原生的接口较为低级,因此选择fabric.js[12]封装过的Canvas进行开发。通过将fabric.js的Canvas实例属性isDrawingMode属性设置为true,用户便可进行自由绘画,并且fabric.js还实现了1.2节所提出的曲线自动闭合功能。标注工作区最终实现的结果如图6和图7所示。
图7 带有标注和讨论的工作区
API服务器采用基于Node.js平台的Express框架实现。Node.js 是基于Chrome V8引擎的JavaScript运行时,它提供一种基于事件驱动,异步非阻塞式I/O的编程范式,在构建快速、可扩展Web应用程序方面的优势大于PHP[13]。Express是Node.js最受欢迎的框架,遵循最小设计原则,社区提供的大量中间件带来了良好的扩展性,性能也比较优秀。
服务器的开发遵循MVC[14]的设计模式。因为使用了前后端分离的原则,所以MVC中的V层交给了React处理。API的设计遵循了RESTful的设计规范。 Express服务器的API列表见表3。
表3 服务器端路由
数据库使用MongoDB,它是一个开源的、面向文档的数据库管理系统。与传统的关系型数据库相比,MongoDB具有更优秀的可扩展性、性能和可用性,能有效地应对大量非结构化数据[15]。系统使用MongoDB的JavaScript驱动,实现API服务器和数据库的交互。
神经网络模型采用TensorFlow来实现,并且用Flask来提供模型的访问。TensorFlow是非常成熟的机器学习框架,且具备强大的可移植性、高度的灵活性和优异的性能[15],非常适合此系统。而Flask是基于Python语言的轻量级服务器框架,是搭建AI模型服务的首选方案之一。
在模型开发完毕后,用上海衡道医学病理诊断中心提供的医学图像(宽和高均为1 000像素)进行训练和测试。设分类正确且为肿瘤的像素个数为TP,分类正确且为背景的像素为TN,分类错误应为肿瘤的像素个数为FN,分类错误且应为背景的像素个数为FP,由此可得模型性能评价指标像素精度(Accuracy)、准确率(Precision)、召回率(Recall)以及F1分数:
(2)
(3)
(4)
(5)
实验结果如表4所示,模型即使在训练数据较少的情况下也能取得较为理想的预测性能。在实际使用本文系统时,只需用户标记少量图像,系统就能通过深层神经网络模型预测其他图像的标注区域。所以,无需用户自行标注全部图像,需要后期修改的区域也比较少,节省了人力,实现了标注的半自动化。
表4 神经网络模型测试结果
本文针对医学图像标注工作专业性强、手工劳动强度大、标注之间存在分歧等特点,设计并实现了基于Web应用的半自动标注系统。此系统的自由绘画标注模式能够有效地提升标注的效率;同时,由于系统支持对图像和标注的交流,标注者之间的分歧减少,准确率也会得到较大的提升。机器学习模型辅助标注随着医疗行业与人工智能技术的不断结合。此系统能够为此方面的研究带来数量大、质量高的数据集,并且可以作为定量评估最新成果的基准测试平台,推动医疗AI行业的进步。