Case Study - 预测肺癌
Problem
肺癌是发病率和死亡率增长最快,对人群健康和生命威胁最大的恶性肿瘤之一。近50年来许多国家都报道肺癌的发病率和死亡率均明显增高,男性肺癌发病率和死亡率均占所有恶性肿瘤的第一位,女性发病率占第二位,死亡率占第二位。
在美国,每年有超过22万的人死于肺癌,国家健康医疗成本投入巨大。2017年,Data Science Bowel 为了响应一项名为 Cancer Moonshot 2020的国家级创新项目发起了一场通过人工智能进行高效性肺癌预测的竞赛。
Data
Available Data
所提供的数据集由1000张高风险患者的低剂量胸部CT图构成,这种CT是根据收集到的投影数据所形成的,一种辐射X-ray电流小、剂量小的计算机断层图像。每张图包含来源于不同的胸腔多轴线二维切片。图的存储格式为放射医疗中常用于数据交换的医学图像格式DICOM files,每个病人有一个单独的ParentID,每个ParentID对应一个单独的DICOM文件路径。
Notes: 可用于处理DICOM标准图片的资源如下:
- pydicom: A package for working with images in python.
- oro.dicom: A package for working with images in R.
- Mango: A useful DICOM viewer for Windows users.

External Data
想象一下假使你想培养一名学生在短时间通过繁复操练过往习题来提高赢得某数学竞赛的几率。首要任务就是划重点,告诉他重点题型是什么样。因而,除了CT scans的信息数据外,我们还需要肿瘤本身的数据,包括在胸腔的方位、尺寸(nodule diameter)、形状(i.e. nodule spiculation/lobulation)、性质(nodule malignancy)等形态。这部分数据可直接从LUNA16 challenge中的LUNA16 dataset中获得。如果想了解其他更多的外部数据请点击这里。
可以说恶性肿瘤的标签数据某种程度上决定了最终预测结果的分数高低。
Preprocessing
load DICOM data -> downsampling -> resize -> SD numpy arrays
在正式将images喂给算法前需给数据集进行一系列预处理,以方便算法进行训练。首先,给定的CT scans的各切片(slice)其实就是一张张由不同像素构成的图片,为了让计算机更好的识别图片的每个部分(哪里是空气哪里是组织(tissue)),要先进行HU单位转化。Hounsfield scale又称亨氏单位,简称HU,用来表示CT图像上组织结构的相对密度。比如水的CT值是0亨氏单位,CT值的范围是2000 HU,每个值用一个灰度表示,1000是白色,-1000是黑色。组织的CT值并不是恒定不变的,不同的CT扫描机在扫描同一个病人时会有CT值的偏差,同一CT扫描机在不同时间系列扫描同一病人的同一结构时CT值也会出现偏差。

然后,scan之间的差异性以及slice间距离的差异性会影响CNN算法的performance,为此进行预处理是必要的。最常用处理这种不规则的方式称为重抽样(resampling),将各slice各异的像素间距(pixel spacing)统一到[1mm 1mm 1mm] 1x1x1 mm 的小立方体。接下来就是做区域划分,简单来说就是聚焦整个scan图上的除空气外的肺部区域。最后就是做相应的标准化中心化处理。
Model
CNN卷积神经网络是一种图像识别领域中常用的深度学习算法之一,其根本应用范围就是取特征,将图片通过卷积神经网络的卷积层、激活层、池化层、批量归一化层和全互联层(Fully Connected Layer)产生一个包含分类结果概率的N维数组。
基本流程如下:
将图片进行方框式划分

- 取出具有象征意义的卷积核filter(特征),一般是33、55
- 将每块窗口与特征进行点积求均值得到新的feature map的一个新像素值(卷积层)动态图
- 通过激活函数将小于0的像素值设定为0(非线性激活层,又称ReLU层)
- 以更小的步长重复步骤3通过Max pooling或Average pooling的池化方法得到一个空间内存更小的特整地图,在空间上缩减样本,在厚度方向保持不变(pooling池化层)
将第五步输出的“特征”输入另一个全互联神经网络层和SoftMax函数,即可获得一组输出值:比如每种分类标签的概率。(全互联层)


Conclusion
用模型对scan进行全方位的模拟检测形成动态图,红色即为恶性肿瘤。
Reference
http://blog.kaggle.com/2017/06/29/2017-data-science-bowl-predicting-lung-cancer-2nd-place-solution-write-up-daniel-hammack-and-julian-de-wit/
https://baike.baidu.com/item/%E8%82%BA%E7%99%8C/428115?fr=aladdin
https://github.com/WeifanD/kaggle_ndsb2017
https://zhidao.baidu.com/question/808814252251882052.html
http://www.infoq.com/cn/articles/resnet-azure-gpu
Case Study - 预测肺癌的更多相关文章
- Case Study: Random Number Generation(翻译教材)
很荣幸,经过三天的努力.终于把自己翻译的教材做完了,现在把它贴出来,希望能指出其中的不足. Case Study: Random Number Generation Fig. 6.7 C++ 标 ...
- Data Visualization – Banking Case Study Example (Part 1-6)
python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...
- Deep Learning-Based Video Coding: A Review and A Case Study
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1.Abstract: 本文主要介绍的是2015年以来关于深度图像/视频编码的代表性工作,主要可以分为两类:深度编码方案以及基于传统编码方 ...
- 课程三(Structuring Machine Learning Projects),第一周(ML strategy(1)) —— 1.Machine learning Flight simulator:Bird recognition in the city of Peacetopia (case study)
[]To help you practice strategies for machine learning, the following exercise will present an in-de ...
- Attacking JavaScript Engines: A case study of JavaScriptCore and CVE-2016-4622(转)
转:http://phrack.org/papers/attacking_javascript_engines.html Title : Attacking JavaScript Engines: A ...
- 【ASE模型组】Hint::neural 模型与case study
模型 基于搜索的提示系统 我们的系统用Pycee针对语法错误给出提示.然而,对于语法正确.结果错误的代码,我们需要另外的解决方式.因此,我们维护一些 (错误代码, 相应提示) 的数据,该数据可以由我们 ...
- 关于运维之故障复盘篇-Case Study
关于故障的事后复盘,英文名 Case Study是非常有必要做的,当然是根据故障的级别,不可能做到每个故障都Case Study,除非人员和时间充足: 文档能力也是能力的一种,一般工程师的文档能力比较 ...
- 李宏毅机器学习课程---2、Regression - Case Study
李宏毅机器学习课程---2.Regression - Case Study 一.总结 一句话总结: 分类讨论可能是比较好的找最佳函数的方法:如果 有这样的因素存在的话 模型不够好,可能是因素没有找全 ...
- 你从未见过的Case Study写作指南
Case Study,意为案例分析,Case Study与其它的留学论文作业最大的的差别就在于Case Study在论文开始就需要明确给出论,然后再阐述这个结论的论证依据和理由.留学生们需要知道的是C ...
随机推荐
- AI: 如何用钢笔工具画曲线
AI 可以用来绘制矢量图片. 点击钢笔工具,点击画图会画出直线,点击拖拉画图会画出曲线. 锚点的摆放位置在侧面而非顶端. 控制柄越长,图形越尖锐. 画圆时控制柄长度控制在两点之间1/3 长度. 使用的 ...
- spring中获取bean的方式
获取bean的方式 1.可以通过上下文的getBean方法 2.可以通过@Autowired注入 定义controller @RestController @RequestMapping(" ...
- 1.3创建你的第一个Android项目——Android第一行代码(第二版)笔记
创建HelloWorld项目 如果是第一次,会经过漫长的等待. 启动模拟器 可以用第三方模拟器,也可以用官方集成的 点击后出现如下界面,可创建多个模拟器,如图,我已经创建好了一个,如果你没有,就点击下 ...
- 03(a)多元有约束优化问题(准备知识)
转成Latex上传太麻烦,直接截图上传了,需要电子版的可以关注一下,微信公众号:“实干小海豹”,回复:”优化01a“,”优化01b“,”优化02a“,”优化02b“,”优化02c“,”优化02c“.. ...
- linux shell 操作 mysql命令(不进入mysql操作界面)
由于需要,需要将一系列mysql的操作制作成.sh文件,只需要shell操作bash命令就可以傻瓜式的完成黑盒任务. #!/bin/bash mysql -uroot -p??? -e "c ...
- css常用元素通用样式表
@charset "utf-8";html,body,a,h1,h2,h3,h4,h5,h6,p,a,b,i,em,s,u,dl,dt,dd,ul,ol,li,strong,spa ...
- 如何用Python实现do...while语句
我在编程的时候可能会遇到如下代码: a = 0 while a != 0: a = input() print a 我所设想的运行过程是这样的: 很显然我是想先运行后判断的模式,即 do...whil ...
- Apache的那些事-查找配置文件
在CentOS 6.5 里Apache的 安装后出现两个httpd.conf配置文件,一个在 /etc/httpd/conf/httpd.conf 这个事li ...
- 杭电-------2052Picture(C语言)
#include<stdio.h> int main() { int width, height; int i, j; while (~scanf("%d %d", & ...
- 图像分割:Semantic/Instance/Panoramic Segmentation
一. 背景介绍 语义分割(Semantic Segmentation):对一张图片上的所有像素点进行分类,同一物体的不同实例不需要单独分割出来. 实例分割(Instance Segmentation) ...
