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维数组。

基本流程如下:

  1. 将图片进行方框式划分

  2. 取出具有象征意义的卷积核filter(特征),一般是33、55
  3. 将每块窗口与特征进行点积求均值得到新的feature map的一个新像素值(卷积层动态图
  4. 通过激活函数将小于0的像素值设定为0(非线性激活层,又称ReLU层
  5. 以更小的步长重复步骤3通过Max pooling或Average pooling的池化方法得到一个空间内存更小的特整地图,在空间上缩减样本,在厚度方向保持不变(pooling池化层
  6. 将第五步输出的“特征”输入另一个全互联神经网络层和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 - 预测肺癌的更多相关文章

  1. Case Study: Random Number Generation(翻译教材)

    很荣幸,经过三天的努力.终于把自己翻译的教材做完了,现在把它贴出来,希望能指出其中的不足.   Case Study: Random Number Generation Fig. 6.7  C++ 标 ...

  2. Data Visualization – Banking Case Study Example (Part 1-6)

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  3. Deep Learning-Based Video Coding: A Review and A Case Study

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 1.Abstract: 本文主要介绍的是2015年以来关于深度图像/视频编码的代表性工作,主要可以分为两类:深度编码方案以及基于传统编码方 ...

  4. 课程三(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 ...

  5. 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 ...

  6. 【ASE模型组】Hint::neural 模型与case study

    模型 基于搜索的提示系统 我们的系统用Pycee针对语法错误给出提示.然而,对于语法正确.结果错误的代码,我们需要另外的解决方式.因此,我们维护一些 (错误代码, 相应提示) 的数据,该数据可以由我们 ...

  7. 关于运维之故障复盘篇-Case Study

    关于故障的事后复盘,英文名 Case Study是非常有必要做的,当然是根据故障的级别,不可能做到每个故障都Case Study,除非人员和时间充足: 文档能力也是能力的一种,一般工程师的文档能力比较 ...

  8. 李宏毅机器学习课程---2、Regression - Case Study

    李宏毅机器学习课程---2.Regression - Case Study 一.总结 一句话总结: 分类讨论可能是比较好的找最佳函数的方法:如果 有这样的因素存在的话 模型不够好,可能是因素没有找全 ...

  9. 你从未见过的Case Study写作指南

    Case Study,意为案例分析,Case Study与其它的留学论文作业最大的的差别就在于Case Study在论文开始就需要明确给出论,然后再阐述这个结论的论证依据和理由.留学生们需要知道的是C ...

随机推荐

  1. asp.net core 3.x 身份验证-1涉及到的概念

    前言 从本篇开始将围绕asp.net core身份验证写个小系列,希望你看完本系列后,脑子里对asp.net core的身份验证原理有个大致印象.至于身份验证是啥?与授权有啥联系?就不介绍了,太啰嗦. ...

  2. 自己动手写个异步IO函数 --(基于 c# Task)

    前言    对于服务端,达到高性能.高扩展离不开异步.对于客户端,函数执行时间是1毫秒还是100毫秒差别不大,没必要为这一点点时间煞费苦心.对于异步,好多人还有误解,如: 异步就是多线程:异步就是如何 ...

  3. JDK11和JDK8类加载器的区别

    如下代码: public class Test07 { public static void main(String[] args) throws ClassNotFoundException { / ...

  4. Codeforces Round #470 (Div. 2) A Protect Sheep (基础)输入输出的警示、边界处理

    Bob is a farmer. He has a large pasture with many sheep. Recently, he has lost some of them due to w ...

  5. HDU 2087 剪花布条 KMP极其初级之入门题(KMP模板在这里)

    Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?   Input ...

  6. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  7. MySQL关系型数据库基础操作

    MySQL基础 一.MySQL常用数据类型 1.常用数值类型(INT,DOUBLE,FLOAT) ① int 或者 integer 类型: 大小(字节):4字节: 范围: (有符号: -2147483 ...

  8. Git 分支设计规范

    概述 这篇文章分享 Git 分支设计规范,目的是提供给研发人员做参考. 规范是死的,人是活的,希望自己定的规范,不要被打脸. 在说 Git 分支规范之前,先说下在系统开发过程中常用的环境. 简称 全称 ...

  9. Private Variable and Private Method - Python 私有变量 和 私有方法

    Private Variable and Private Method Python 不象 Java 那样, 通过 private 关键字创建私有属性, python 通过更简洁的实现了'私有属性', ...

  10. Redis中RDB和AOF持久化区别和联系

    RDB和AOF持久化   ​RDB持久化 RDB是什么? 原理是redis会单独创建(fork) 一个与当前进程一模一 样的子进程来进行持久化,这个子进程的所有数据(变量.环境变量,程序程序计数器等) ...