Pytorch项目,肺癌检测项目之一

2024-03-08 19:40
文章标签 项目 检测 pytorch 肺癌

本文主要是介绍Pytorch项目,肺癌检测项目之一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目目的:输入人体躯干的三维CT扫描作为输入数据,如果存在肿瘤,希望输出疑似恶性肿瘤的位置。

项目背景:发现处于早期的肺癌对病人生存率有巨大影响,但很难大规模进行。审查CT数据的工作必须由训练有素的专家进行,需要对细节进行细致的关注,当然,绝大部分情况下医生看的片子都没有癌症。

CT的数据叫做:DICOM数据。CT扫描的每一个体素都对应一个数值,这个数值描述的是内部物质的平均质量密度。CT扫描的数据还允许我们通过隐藏我们不感兴趣的部分进行立体查看。

体素数据与CT值

对于一块体素数据,它不是一个立方体,而是1.125mm*1.125mm*2.5mm的一个立方体,如果按照立方体来对数据进行绘制的时候,人会看起来更胖一些,所以如果要按照真实的样貌进行展示还需要加入一个变换比例。CT值是测定人体某一局部或器官密度大小的一种计量单位,通常称为亨氏单位(HU),空气为 -1000 (0g/cm3),致密骨为 +1000(2-3g/cm3)。实际上CT值是CT图像中各组织与X线衰减系数相当的对应值。

观察数据

(1)CT数据是立体3D数据

(2)数据存在重复和错误

(3)数据的标注包括一份某个区域的结节是否为肿瘤以及某个肿瘤是否恶性的标准

理解业务

(1)拿到CT先逐行逐个查看图像

(2)找到其中存在异常的位置,然后用笔把这个位置圈出来留待分析

(3)对所有圈出来的位置进行仔细的研究,根据它的各种特性,比如光泽,形状,大小,位置等信息来决策是否真的是一个肿瘤

(4)做更多的检查,结合经验判断这个肿瘤是否是恶行肿瘤

(5)帮助病人指定治疗方案

解决方案

原始数据---》数据处理---》切割图象---》候选分组---》候选分类---》恶行判断

数据清洗、数据 在全像素空间中寻 对有问题的点位进行分组,加载、数据转换 找有问题的像素 确定一个结节的范围 ,对有结节的图像进行分类,确定是否是肿瘤,对判定为肿瘤的图像进一步分类判断是否为恶行肿瘤

解决方案描述

(1)加载原始数据,把它转化为PyTorch可以处理的数据,也就是我们的tensor数据

(2)使用PyTorch进行数据分割,把存在异常的点位确定出来

(3)把已经确定有问题的区域进行发呢组,这一块不太需要构建一个模型来处理,所以单独拿出来作为一个步骤

(4)构建模型对候选结节分类,区分出它是否是真的肿瘤

(5)对分类结果进行分析,然后根据影像判断肿瘤是良性的还是恶性的。

查看数据

一个CT数据实际上包含两个文件,‘.mhd’文件包含了元数据头部信息,‘.raw’则是存储的三维CT原始数据。前面的文件名称为它的uid,符合DICOM数据命名法。

annotations.csv文件里面给出了结节的位置信息,里面的数据共有5列,第一列是uid,中间三列是坐标位置,最后一列是结节的尺寸,直径信息。

查看数据

candidates.csv是对影响中小圆点的标注,数据也是五列,有区别的是最后一列,candidates.csv的最后一列标明了这个小圆点是否是结节。其中candidates.csv文件中包含了551063条数据,如果我们对分类标签统计一下,可以发现总共有1351条被标注是结节。这个时候数据的问题就来了,在annotation.csv文件里只给出了 1187条结节的信息。

数据比对

这几条数据,比对下,看是否是一个位置,对数据预处理

代码处理

CandidateInfoTuple = namedtuple(
'CandidateInfoTuple',
'isNodule_bool,diameter_mm,series_uid,center_xyz',
)

#放缓存里
@functools.lru_cache(1)
def getCandidateInfoList(requireOnDisk_bool=True):
    mhd_list=glob.glob('/lujing/subset*/*.mhd')
    persentOnDisk_set={os.path.split(p)[-1][:-4] for p in mhd_list}

这篇关于Pytorch项目,肺癌检测项目之一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788176

相关文章

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定