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 ...
随机推荐
- 命令行压缩解压缩一 7z
命令行压缩解压缩一 7z 1) 简介 7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压缩软件. 主页:http://www.7-zip.org/ 中文主页:http: ...
- Codeforces_844
A.统计字母个数. #include<bits/stdc++.h> using namespace std; string s; int n; map<char,int> mp ...
- YUM源部署和使用
1.前言 为什么需要内部yum源呢,有可能是业务内部的服务器对外是不通了,居于一些安全方面的考虑.内部yum源又有什么好处呢,第一,速度快:第二,内网可控,外网有问题也不影响内网包的下载和安装等. 2 ...
- 使用 H5 和 webGL 的智慧城市 3D 监控
前言 中共中央.国务院在今年12月印发了<长江三角洲区域一体化发展规划纲要>(下文简称<纲要>),并发出通知,要求各地区各部门结合实际认真贯彻落实. <纲要>强调, ...
- Part2-求AX=b的最优解
自己一边听课一边记得,参考网上广为流传的那本<MIT线性代数笔记>,转成Latex上传太麻烦,直接截图上传了,需要电子版的可以私信我.
- 我一个二本大学是如何校招拿到阿里offer的
作者:薛勤,互联网从业者,编程爱好者. 本文首发自公众号:代码艺术(ID:onblog)未经许可,不可转载 01:终于步入大学 我既没有跨过山和大海,也没有穿过人山人海,我就是我,一个普通本科大学生. ...
- VFP获取 SQL Server 的数据表、触发器、存储过程、视图等脚本
本文代码转载自红雨先生 *-----------------------------------------------* SqlServer 相关函数*----------------------- ...
- Charm Bracelet 一维01背包
A - Charm Bracelet Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Su ...
- 线段树学习----C语言
/* 线段树学习:如果一个节点为i,那么他的左孩子为2I+1,右孩子为2i+2: */ #include<stdio.h> #define min(a,b) a<b?a:b; ]; ...
- xmake v2.3.1 发布, 无缝对接其他构建系统
最近对xmake内部做了不少的重构来改进,并且新增了不少实用的新特性,欢迎来体验. 项目源码 官方文档 一些新特性: 一键编译其他构建系统维护的项目,实现无缝对接,并且支持交叉编译(比如autotoo ...
