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 ...
随机推荐
- Struts(四)
1.Struts 2提供了非常强大的类型转换功能,提供了多种内置类型转换器,也支持开发自定义类型转换器2.Struts 2框架使用OGNL作为默认的表达式语言 ==================== ...
- ORALCE逻辑存储结构
ORACLE逻辑存储结构块: 数据块 他是最基础的逻辑存储单元,数据以行的形式存储到我么的数据块中 区 :多个块的集合 并且区组成了物理的数据文件 段 :(表 索引 物化视图 物化视图日志 大对象 大 ...
- Java并发编程(二):volatile关键字
volatile是Java虚拟机提供的轻量级的同步机制.volatile关键字有如下两个作用,一句话概括就是内存可见性和禁止重排序. 1)保证被volatile修饰的共享变量对所有线程总是可见的,也就 ...
- django 发布会签到系统web开发
引言 最近学习了虫师的发布会签到系统demo,结合自己所学django知识,对demo重新塑造了一下.也是为了练练手,巩固知识.现在就分享一下成果~ Django工作流 学习django web开发, ...
- c++引用深入探讨
(偶然翻起自己的旧博,忽然发现大三的时候写的这篇文章,仔细看看觉得写的还是那么回事,所以赶紧搭救出来) 引用的声明: 基本格式:引用类型 &引用名=被引用对象 &运算符:声明运算符 ...
- css-box-shadowing
box-shadow: h-shadow v-shadow blur spread color inset; 注释:box-shadow 向框添加一个或多个阴影.该属性是由逗号分隔的阴影列表,每个阴影 ...
- python 类 - 继承
继承 什么是继承? 编写类时,并非总要从空白开始.如果要编写的类是另一个现成类的特殊版本,可使用继承. 一个类继承另一个类时,将自动获得另一个类的所有属性和方法.现有的类称为父类,而新类称为子类. 子 ...
- C# WinForm 使用SMS接口发送手机验证码+图形验证码+IP限制
https://blog.csdn.net/IT_xiao_guang_guang/article/details/104299983 前言 1.发送手机验证码用的是网建的SMS接口(http:/ ...
- [urllib]urlretrieve在python3
python3下面要使用:urllib.request.urlretrieve()这种形式的调用 from urllib.request import urlretrieve urlretrieve( ...
- 版本控制工具-svn
两个疑问: 1.什么是版本控制? 2.为什么要用版本控制工具? 银联卡的特征: 1.受保护的 2.受约束的 如何与银联卡对应? 1.个人的代码--口袋里的钱 2.版本控制工具中的代码--银联卡里的钱 ...
