在今年早些时候,Google发了两篇关于人工智能医疗图像的科技文章:一篇是非常有名的关于皮肤癌检测的文章Dermatologist-level classification of skin cancer with deep neural networks,文章通过采用Inception v3的结构对皮肤癌图像进行了有效分类,更值得注意的是,模型的敏感性意料之内的能够超越了人类的识别能力,并且通过Tensorflow移植到了手机端做成了APP,在商业医疗方面有很广阔的应用前景。

打开网易新闻 查看精彩图片

(上图为皮肤癌分类问题的样本分布)

另一篇是Google发的一篇科技博客Assisting Pathologists in Detecting Cancer with Deep Learning,主要内容讲的是针对病理图像中乳腺癌在淋巴结中的转移的检测任务。这篇文章的背景是医学顶级会议ISBI在2016年发布的Camelyon16的竞赛,竞赛的主要内容是对乳腺癌在淋巴结中的转移进行病理切片的分类与定位。很幸运,那段时间正好在DeepCare公司学习工作,并且参加了Camelyon16和Camelyon17两届比赛,所以想分享一下自己关于深度学习中病理图像方面应用的一些经验和收获。

打开网易新闻 查看精彩图片

(一张淋巴结的病理图片,左边属于正常细胞组织,右边的细胞已经被癌细胞吞噬占领了)

问题的由来

打开网易新闻 查看精彩图片

一般来说,乳腺癌细胞的扩散方式通常会首先转移到附近的淋巴结中,所以在很多乳腺检查中,会提取一些附近淋巴结组织做成切片,经过切片、染色、扫描等过程后,生成如上图的图像。癌细胞和正常细胞在颜色、纹理、大小和组织形式上都会有很多的不同,一般来说就是“核大深染”的突出特征。在大医院中,很多上了年纪的且具有很多“看片”经验的医生炙手可热,这意味着人类同样需要很多经验才能正确的进行分析判断,而年轻的或缺乏经验的医生容易出现误判。Camelyon16希望我们能够通过计算机视觉技术帮助医生进行有效筛选,从而减少工作量和误判的可能性。

Camelyon16的任务是对测试集中的120张淋巴结病理切片进行判断是否发生了癌变(classification),同时需要对发生癌变的位置区域精准定位(segmentation);而Camelyon17的任务变得更加复杂,在16的基础上需要对发生癌变转移的区域进行大小判断,从而将病理切片分为Normal/ITC/Micro/Macro四个类别,最终根据每个病人的五张切片的定性结果确定病人的乳腺癌细胞转移的情况。(听起来挺复杂,也的确挺复杂)

打开网易新闻 查看精彩图片

官方一共给了110张含有癌细胞组织的切片(Tumor)和130张正常的组织切片(Normal),并对有癌症的区域进行了标记,最终确定120张切片的性质。看起来数据量很少,按照传统的图像处理方式应该是很简单的,但实际上数据的形式是金字塔数据形式,最大分辨率40X的图像矩阵大小大概是300000×150000,一个样本的所占硬盘空间大小大概是5~6G。这也就意味着我们不太可能将图片全部加载到内存中,即使有足够的内存,也不可能把它加载到显卡内存中进行深度学习运算(可以想象一下如果这么大的矩阵采用3×3的卷积核进行运算的场景),所以对图片进行预处理非常有必要。

打开网易新闻 查看精彩图片

(病理切片图像中金字塔型的数据结构)

预处理

打开网易新闻 查看精彩图片

在经典问题中很少有图片会这么大,但也会遇到一些,比如遥感图像等;这类图像的处理办法一般会采用分块的方式进行处理,然后再将每一块的处理结果进行汇总从而得出结果。

对于一张病理图像来说,只有20%~30%的区域是有效区域RoI,如果每一块都要进行预处理,会导致处理时间过长,效率不高,所以需要做有效区域的提取。

打开网易新闻 查看精彩图片

(左图是一张病理切片的10X左右的效果图,可以发现基本上大多数区域都是不需要的;右图的蓝色区域所围成的区域是癌症区域)

比如这样的一张病理切片:

打开网易新闻 查看精彩图片

首先将它进行通过特定的阈值算法,提取出前景部分:

打开网易新闻 查看精彩图片

之后,通过一些古典图像处理的算法,将图片的有效区域提取出来:

打开网易新闻 查看精彩图片

于是我们就可以将每一部分根据坐标进行切分,从而生成很多小片(patch):

打开网易新闻 查看精彩图片

(上图黑色区域就是一片一片的patch,每一张都是一个256×256大小的图片)

这里可以给大家透露一下,由于要这个过程要商业化,所以我们做了一个非常强大的并行策略去进行图片切割,比原始方法进行切割的速度可以理论提升64倍。

由于比赛数据来自于不同的医院或研究机构,所采用了不同厂家的扫描仪,因此图片在色调上存在着很大的差异,这对模型来说,会造成confused现象,因此在做成数据集之前,对所有的图片进行了染色均一化过程:

打开网易新闻 查看精彩图片

其主要的思想是通过将RGB变换到HSV 色域表征,通过调节色调分布使得不同图像进行染色均一化。

之后便生成数据集。未加入Data Augmentation前,已经可以生成正样本数量120w张,负样本就更多了,一方面数据量比较多,可以提升模型泛化能力,另一方面这么多数据集对运算设备和运算框架也提出了很高的要求

模型设计

打开网易新闻 查看精彩图片

Google采用的是Multi-Scales算法,仿照病理医生的情况,针对不同的大小视觉差 针对不同的置信结果,我们采用了二级网络进行训练:

在做这个实验的时候,我们用了两块Pascal Titan X。为了更好地利用计算空间来提升运算性能,我们用了MXNET深度学习框架作为整体的解决方案(包括后来的商业部署Inference)。也非常感谢刘老师以及MXNet其他大神提供的解决办法。

打开网易新闻 查看精彩图片

粗选网络采用VGG16同时搭配低阈值,精选网络采用ResNeXt101设定较高的阈值,最后进行模型融合从而提升模型结果。

这里分享一个小的Trick,在实验中我们发现,图片如果尺寸过小,会造成误报现象严重,这也是Google在那篇文章中提到的。

打开网易新闻 查看精彩图片

后处理

打开网易新闻 查看精彩图片

后处理也是一个比较麻烦的地方,我们直接将上述生成的heatmap再次送到一个新的网络中,进行后续操作,包括分类等。其他高排名的解决方案大多数采用了癌症区域面积的方式。(实际上我们这是比较偷懒的做法)

打开网易新闻 查看精彩图片

后记

打开网易新闻 查看精彩图片

DeepCare公司的最终比赛排名是:Camelyon16第8名,Camelyon17第13名。名次不是特别好的原因主要是我拖累的这个比赛进度,在这里我还是对DeepCare公司抱有很深的歉意~~~ 但DeepCare公司是我非常看好的一家人工智能医疗公司,在我因个人原因离开之前,公司进入了微软加速器并且获得了强力的A轮投资。

由于保密协议的原因,我没有办法公开任何有关代码,但是我同样非常欢迎交流和讨论,如果有机会参加Camelyon18的比赛,希望能有更多的人能够一起参赛。文章中如果有任何问题,非常欢迎各位批评指正,谢谢~

本文转自知乎,作者SCP-173

打开网易新闻 查看精彩图片

关于大赛

大数据与人工智能技术应用于各垂直领域已成为趋势,病理切片识别和智能投顾更是成为最热的应用领域。在此背景下,2017中国大数据人工智能创新创业大赛(www.datadreams.org)推出BOT大赛系列赛之病理切片识别AI挑战赛BOT大赛系列赛之智能投顾技术挑战赛,20万现金大奖、千万创投奖池、海量珍贵数据集,面向全球招募AI英雄,向病理诊断和智能投顾发起挑战!

寻找AI技术硬实力,

开启辅助胃癌诊疗新征程;

用AI技术重新定义智能投顾,

抢占未来市场风口!

如果你也想加入这场科技革命,

登录官网马上报名www.datadreams.org

另外,悄悄告诉你两大技术赛数据集均已对外开放,你不去看看么?

面向全球火热招募中