专栏首页AI科技大本营的专栏AI 技术讲座精选:利用深度学习分析医学图像

AI 技术讲座精选:利用深度学习分析医学图像

【AI100 导读】当下深度学习的研究领域仍然停留在通用图像的层面上,但我们的目标是将这些研究应用于医学图像,提升医疗保健行业的服务水平。在这篇文章中,作者会从图像处理的基础知识、医学图像格式方面的基础知识以及可视化的医疗数据着手,为大家逐渐进行讲解。

深度学习目前已经成为新的技术前沿,图像分析、视频解析以及其他各种各样的应用领域纷纷都在应用深度学习,比如自驾车应用领域以及无人机领域等。最近的研究论文如《艺术风格的神经算法》(A Neutral Algorithm of Artistic Style,https://arxiv.org/abs/1508.06576),展示了深度学习将艺术家的风格进行转换从而创造出新图象的过程。其他的论文如《生成对抗网络(GAN)》(Generative Adversarial Networks,https://arxiv.org/abs/1406.2661)、《沃瑟斯坦生成对抗网络》(Wasserstein GAN,https://arxiv.org/pdf/1701.07875)等为模型的开发开辟了道路,开发出来的模型可以学习并创建出与我们给定的数据十分相似的数据。因此,这就为我们打开了半监督学习的世界,从而也为未来的无监督学习世界铺平了道路。

当下这些研究领域仍然停留在通用图像的层面上,但我们的目标是将这些研究应用于医学图像,提升医疗保健行业的服务水平。我们需要从一些基础的知识开始着手。在这篇文章中,我会从图像处理的基础知识、医学图像格式方面的基础知识以及可视化的医疗数据着手,为大家逐渐进行讲解。在下一篇文章中,我将会与大家一起深入探究关于卷积神经网络的部分知识,将卷积神经网络与 Keras 相结合,以提高肺癌的预测率。

基本图像处理知识(使用 python)

目前有各种各样的图像处理库,然而开放源代码计算机视觉库(OpenCV)已经成为主流,因为开放源代码计算机视觉库有一个较大的团体支持并且其能够支持 C++、java 和 python 等多种编程语言。我特别喜欢在使用 jupyter notebook 时使用开放源代码计算机视觉库(OpenCV)。

安装开放源代码计算机视觉库(OpenCV):pip install opencv-python 或者直接从 opencv.org 官网进行安装。

安装 opencv

现在打开您的 jupyter notebook,同时确认您可以导入 cv2。这时候,您还需要通过 numpy 和 matplotlib 来查看笔记本内部的命令。

现在,让我们来核查一下您是否能够打开一张图片并使用下面的代码在笔记本上查看。

通过 OpenCV 加载的示例图像

基本的人脸检测

现在让我们来做一些有趣的事情,比如检测一张人脸。在检测脸部的过程中,我们需要使用最初由 Rainer Lienhart 创建的正面检测器,该正面检测器是一种基于 stump 的 20x20 gentle adaboost 算法开源可扩展标记语言。这里有一个关于 Haar-cascade 程序检测的比较不错的帖子,内容非常详细。网址如下:http://docs.opencv.org/trunk/d7/d8b/tutorial_py_face_detection.html。

使用 OpenCV 进行脸部检测

下面网址链接中的在线文档中有很多使用 OpenCV 进行图像处理的例子:http://docs.opencv.org/trunk/d6/d00/tutorial_py_root.html。我把网址留给大家,希望读者能够看到更多的示例。现在我们已经知道了图像处理的基础知识,让我们进一步了解一下医学图像格式的基础知识吧。

医学图像数据格式

用数字成像和通信(DICOM)追踪医学图像已经成为存储和交换医学图像数据的标准解决方案。该标准的第一个版本发布于1985年,内容后来有些许的变动。该标准使用的格式包括文件格式和通信协议。

  • 文件格式。所有病人的医学图像均以数字成像和通信(DICOM)的格式进行保存。保存的文件格式中含有关于患者的受保护的健康信息(PHI),包括姓名、性别、年龄以及其他与图像相关的数据,例如用于捕获图像的设备和一些关于医疗背景的资料等。医疗影像设备创建 DICOM 文件。计算机软件应用程序能够显示 DICOM 图像,医生可以通过使用 DICOM 查看器来查看图像并读取、诊断图像中的结果。
  • 通信协议。DICOM 通信协议用于在档案中搜索成像研究,并将找到的成像研究恢复到工作站中并将其显示出来。连接到医院网络的所有医学成像应用程序均使用 DICOM 协议进行信息交换,主要包括 DICOM 图像,同时也包括患者以及手术信息等。此外还有更先进的网络命令,主要用于控制和追踪治疗进度、调度程序、报告状态,并且能在医生和成像设备之间实现工作负荷共享。

这里有一篇非常好的博客,其详细介绍了DICOM标准。网址如下:http://dicomiseasy.blogspot.com/

分析 DICOM 图像

Pydicom 是一个非常好的用于分析 DICOM 图像的 Python 软件包。在本节中,我会向大家介绍如何在 Jupyter notebook 上呈现 DICOM 图像。

安装开放源代码计算机视觉库(OpenCV):pip install pydicom。

安装 pydicom 软件包之后,回到 Jupyter notebook。在笔记本中输入 dicom 软件包和其他软件包,如下图所示。

我们还需要使用其他的软件包进行数据处理和数据分析,包括 pandas、scipy、skimage、mpl_toolkit 等软件包。

目前网上有很多可以免费使用的 DICOM 数据集,以下几个可以帮助您开启使用 DICOM 数据集的道路:

  • Kaggle 竞争数据集(Kaggle Competitions and Datasets,http://www.kaggle.com/):这是我个人最喜欢的数据集。该数据集能够帮助你找到肺癌方面的竞赛以及糖尿病、视网膜病变等方面的资料。
  • Dicom 图书馆(Dicom Library,http://www.dicomlibrary.com/):DICOM 图书馆是一个免费的在线医疗 DICOM 图像或视频文件共享服务数据集,主要用于教育和科研领域。
  • Osirix 数据集(Osirix Datasets,http://www.osirix-viewer.com/datasets/):提供通过各种成像模式获取的大量的人类数据集。
  • 可视人类数据集(Visible Human Datasets,https://mri.radiology.uiowa.edu/visible_human_datasets.html):从某种角度上来看,可视人类项目的其中一些部分是可以自由获取的,但奇怪的是,其中的数据的获取既不免费也不容易。
  • Zubal 幻影(The Zubal Phantom,http://noodle.med.yale.edu/zubal/):该网站提供了两个男人在 CT 和 MRI 中的大量的数据集,这些数据集都是免费的。

下载 dicom 文件并将其加载到您的 jupyter notebook 上。

现在,将 DICOM 图像加载到列表中。

步骤1:在 Jupyte r中浏览基本 DICOM 图像

在第一行中我们加载第一个 DICOM 文件,将其命名为 RefD,我们将它作为参考以提取元数据,元数据在 lstFilesDCM 列表的文件名称是 first。

然后,我们计算 3D NumPy 数组(3D NumPy array)的总尺寸,其等于沿着笛卡尔轴 x、y、z 的数据的乘积,即“切片中的像素行数×切片中的像素列数×切片数”。最后,我们使用像素间距和切片厚度的属性来计算三个轴之间的像素间距。最终我们将 ConstPixelDims 中的数组维数和 ConstPixelSpacing 中的间距数据存储起来。

步骤2:查看 DICOM 格式的细节

CT 扫描的测量单位是 Hounsfield 单位(HU),主要用来度量辐射强度。CT 扫描仪经过精密的校准可以准确地进行测量工作。点击以下网址可以看到关于 CT 扫描仪的详细信息:https://web.archive.org/web/20070926231241/http://www.intl.elsevierhealth.com/e-books/pdf/940.pdf

每个像素都分配有一个数值(CT 号),该数值是包含在相应像素中的所有衰减值的平均值。Godfrey Hounsfield 先生曾将分配的数值与水的衰减值进行比较,自那以后所有的数据均以 Hounsfield 为单位进行命名,并且在 Hounsfield 量表有所体现。

此 Hounsfield 量表将水的衰减值分配为零(HU)。CT 数据的范围是 2000HU,不过一些现代扫描仪的 HU 范围已经上升到了 4000 HU。每个数字代表了在光谱两端有+1000(白色)和-1000(黑色)的灰色阴影。

Hounsfield 量表[量表值:《物理学导论》(PDF).。elsevierhealth.com.]

一些扫描仪具有圆柱形扫描边界,但输出的图像是正方形的。其中,落在边界之外的像素都为固定的值,这个固定值为-2000 HU。

CT扫描仪图像[量表值:《物理介绍》(PDF)。 elsevierhealth.com.]

第一步通常是将这些数值设置为0。接下来,通过乘以重新调整的斜率并添加截距使我们回到HU单元(截距方便地存储在扫描的元数据中!)。

接下来的部分,我们将会运用 Kaggle 的肺癌数据集以及利用了 Keras 的卷积神经网络。我会在本篇文章的基础上向大家介绍下一篇文章。

致谢:

  1. https://pyscience.wordpress.com/2014/09/08/dicom-in-pythonimporting-medical-image-data-into-numpy-with-pydicom-and-vtk/
  2. http://www.osirix-viewer.com/resources/dicom-image-library/
  3. http://wearables.cc.gatech.edu/paper_of_week/viola01rapid.pdf
  4. http://adilmoujahid.com/posts/2016/06/introduction-deep-learningpython-caffe/
  5. http://dicomiseasy.blogspot.com/
  6. https://www.kaggle.com/c/data-science-bowl-2017
  7. http://docs.opencv.org/trunk/d6/d00/tutorial_py_root.html
  8. Kaggle community for all the differentscripts and support

本文作者 Taposh Dutta Roy 拥有产品、技术和战略咨询、数据科学和创业经验,是一名以消费者为中心的机器学习和数据科学极客。

本文由 AI100 编译,转载需得到本公众号同意。


编译:AI100

原文链接:https://medium.com/@taposhdr/medical-image-analysis-with-deep-learning-i-23d518abf531


本文分享自微信公众号 - AI科技大本营(rgznai100)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 上手!深度学习最常见的26个模型练习项目汇总

    今天更新关于常见深度学习模型适合练手的项目。这些项目大部分是我之前整理的,基本上都看过,大概俩特点:代码不长,一般50-200行代码,建议先看懂然后再实现和优化...

    AI科技大本营
  • 秘籍 | 机器学习数据集网址大全

    要找到一定特定的数据集可以解决各种机器学习问题,是一件很难的事情。越来越多企业或研究机构将自己的数据集公开,已经成为全球的趋势,这也将有助于大家进行更多研究。

    AI科技大本营
  • 大数据时代,谁的眼神锁定你?

    双十一余韵未歇,刚处理完一波售后及退件等“剁手后遗症”的各方人马也已经为再战双十二做好了准备。截至 12 日零点,天猫双十一成交额达 2135 亿元。与此同时,...

    AI科技大本营
  • 数据资产管理的演变过程及未来发展趋势

    数据是资产的概念已经成为行业共识。然而现实中,对数据资产的管理和应用往往还处于摸索阶段,数据资产管理面临诸多挑战。主要分为以下三点:

    用户7220666
  • 深度学习性能提升的诀窍

    克服过拟合和提高泛化能力的20条技巧和诀窍 你是如何提升深度学习模型的效果? 这是我经常被问到的一个问题。 有时候也会换一种问法: 我该如何提高模型的准...

    CSDN技术头条
  • php date与gmdate的获取日期的区别

    PHP中的时间有2个格式化函数:date()和gmdate(),在官方的文档中的描述为date -- 格式化一个本地时间/日期

    习惯说一说
  • 数据可视化-EChart2.0使用总结1

    图表是企业级Web开发必不可少的一个功能点。也是“数据可视化的一个具体呈现”。今天看到阮一峰翻译的“数据可视化:基本图表”一文,同时梳理一下公司现在项目使用的E...

    八哥
  • Dubbo常见属性配置(11)

    针对新版本上线后,考虑影响情况,可以使用多版本,一部分用户使用新版本,一部分用户使用老版本,等新版本稳定后,才开放全部用户使用新版本。

    桑鱼
  • 人工智能简介- 数据收集和增强

    易兒善
  • 分布式追踪实战

    分布式监控是一个市场庞大的领域,尤其在现在微服务越来越被广泛采用的的现代,监控和追踪系统可以说百花齐放,诞生了很多开源框架和商业公司。

    王磊-AI基础

扫码关注云+社区

领取腾讯云代金券