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 ...
随机推荐
- C++对于C故有问题的改进
C++继承了所有的C特性,并且提供了更丰富的语法和特性(OOP支持.模板支持等),并且拥有和C语言同样出色的运行效率.针对C语言的固有问题,C++做出了如下的升级: 所有变量都可以在需要使用时再定义( ...
- Windows虚拟器的安装与使用
前言 先说:你们要的东西我会放在文中和文章末尾,拿文件记得点赞,一手交钱一手交货 马上初中朋友们就要开始上网课了哎!(博主也是一位初中生) 有人可能会受网课的影响而不能……, 所以各路神仙研究出了各种 ...
- ReLU函数
Rectifier(neural networks) 在人工神经网络中,rectfier(整流器,校正器)是一个激活函数,它的定义是:参数中为正的部分. , 其中,x是神经元的输入.这也被称为ramp ...
- 用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识
用tensorflow搭建RNN(LSTM)进行MNIST 手写数字辨识 循环神经网络RNN相比传统的神经网络在处理序列化数据时更有优势,因为RNN能够将加入上(下)文信息进行考虑.一个简单的RNN如 ...
- 2018icpc南京现场赛-G Pyramid(打标找规律+逆元)
题意: 求n行三角形中等边三角形个数,图二的三角形也算. n<=1e9 思路: 打表找下规律,打表方法:把所有点扔坐标系里n^3爆搜即可 打出来为 1,5,15,35,70,126,210.. ...
- yum仓库配置与内网源部署记录
使用yum的好处主要就是在于能够自动解决软件包之间的依赖.这使得维护更加容易.这篇文章主要就是记录部署内网源的操作过程以及yum工具如何使用 因为需要.数据库要从Oracle迁移至MySQL.在部署M ...
- 研发协同平台持续集成之Jenkins实践
导读 研发协同平台有两个核心目标,一是提高研发效率 ,二是提高研发质量,要实现这两个核心目标,实现持续集成是关键之一. 什么是持续集成 在<持续集成>一书中,对持续集成的定义如下:持续集成 ...
- 自动化运维工具:ansible
自动化运维工具:ansible Ansible(1):简介和基本概念 Ansible(2):安装配置 Ansible(3):ansible资源清单管理 Ansible(4):常用模块
- mongo操作备忘
#查看collection内 某个字段条目数 db.dictionary_system.find({"name":"xxx"}).count() #清空某个co ...
- 记录KVM虚拟机常用操作管理命令
环境说明 centos7中的KVM NAT方式是kvm安装后的默认方式.它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机. 检查当前的网络设置 # virsh net-li ...