天池医疗AI大赛[第一季] Rank8解决方案[附TensorFlow/PyTorch/Caffe实现方案]

团队成员:北京邮电大学 模式识别实验室硕士研究生

今年5月,参加了天池医疗AI大赛,这次比赛是第一次参加此类的比赛,经过接近半年的比赛,终于10月落下帷幕,作为第一次参加比赛,能在接近3000支队伍中拿到第8名,感觉已经比较满意,不过也有许多遗憾之处,在此主要介绍一下我们比赛的方案。

摘要

本次竞赛要求从数千例CT 影像中找出肺结节的位置,并给出概率。相比于图片,CT影像可以看成3维的数据,更大更耗费资源,也更难以提取特征。我们采用分割+分类的方法,先利用分割网络从CT影像中找出疑似的结节,再利用分类,对找出的疑似结节进行判断。 我们采用了基于3D的解决方案,因此能提取更多的空间信息。同时我们在设计网络的时候,充分考虑不同结节的尺度,识别的难易程度,结合Residual和Inception的结构思想,设计了ReCeption结构,在不同尺度,分辨率的结节上都有着较好的效果。团队队员第一次参加竞赛,经验不够丰富,基本未使用模型融合的方式,主要是简单的boost方法。

一、赛题解析

1.1 任务介绍

本次大赛要求参赛者使用患者的CT影像数据(mhd格式)训练模型算法,在测试数据集中找出CT影像中的肺部结节的位置并给出是一个真正肺结节的概率。初赛在线下自由完成(先使用了TensorFlow后来改用PyTorch),复赛必须在线上使用PAI平台的定制版的Caffe。

1.2 数据介绍

本次大赛数据集包含数千份高危患者的低剂量肺部CT影像(mhd格式)数据,原始图像为三维图像,每个影像包含一系列胸腔的多个轴向切片。这个三维图像由不同数量的二维图像组成,其二维图像数量可以基于不同因素变化,比如扫描机器、患者。Mhd文件具有包含关于患者ID的必要信息的头部,以及诸如切片厚度的扫描参数。训练集和验证集的所有数据全部都有结节

数据的特点:3D类型图像 大(一个ct文件几百M)

slice.png

1.3 评价指标

本次比赛使用跟LUNA16比赛一样的评价标准。赛题组会根据参赛者给出的坐标信息判断结节是否检测正确。如果结节落在以参考标准为中心半径为R的球体中,则认为检测正确。根据提供的结节检测概率,计算一个FROC曲线。Sensitivity在1/8, 1/4, 1/2, 1, 2, 4和8一共7个不同的误报情况下的平均值作为最终评判标准。FROC曲线可以看成类似分类问题中ROC曲线的指标。

此次比赛,我们的方案是分割+分类的方法,分割部分使用UNET,找出疑似节点,而分类部分使用类似ResNet结构神经网络,对找出的疑似节点给一个概率。最后初赛数据集得分最高的froc为0.750,复赛数据集得分最高的为0.600。

froc.jpg

二 方法概述

我们的算法分为3步:

1. 基于3D CNN+Unet/Inception/Resnet的分割网络,用以找出疑似结点。利用结节标注信息生成的结节mask图像,训练基于卷积神经网络的肺结节分割器。

2. 基于ResNet的分类网络,判断每一个疑似结点是否是真阳性。 找到疑似肺结节后,可以使用图像分类算法对疑似肺结节进行分类,得出疑似肺结节是否为真正肺结节的概率

3.利用类似adaboost的方法训练多个一样的分类模型,不断的提升分类的准确率。
                           

liucheng.png

三 分割网络

基本网络结构我们采用了类似Unet的形式,Unet网络的receptive filed 很大,可以融合全局特征和局部特征,使网络可以同时利用深层网络的语义信息以及浅层网络的纹理信息。

3.1 数据处理

      1.  对原始数据进行归一化处理,使像素值得范围为[0, 1]。

      2.  从原图上切出64x64x64的立方体块,在内存允许的情况下可以使立方体块尽可能的大。
  

预测的Label大小与输入相同,结点范围内的值为1,其他地方为0。如下图,左边是原始的数据,右边是生成的mask(都是3D的)

nodule.png

mask.png

3.2 数据增强

训练样本虽然大,但是却很少,为了避免过拟合,提高模型泛化能力,这里对数据做了一些增强,主要包含:

- 以结点为中心切块时,提供一个随机大小的偏移 

- 对切下的立方体,进行八个方向的翻转 

3.3 模型介绍

分割网络的每个单元采用的是ResNet+Inception的结构,ResNet的残差链接可以有效缓解深层网络梯度消失的问题,同时跨层连接的方式,使得简单的样本可以通过直接相连的方式,而复杂的样本则经过更深的网络 。可以极快地加速超深神经网络的训练。 而Inception结构将不同的卷积层通过并联的方式结合在一起,它主要改进了网络内部计算资源的利用率,让我们能在固定计算资源下增加神经网络深度和宽度,另外,Inception 结构还遵循了 Hebbian 原则并增加了多尺度处理,增加了网络对多尺度的适应性。

Unet是一个在医学图像处理领域,应用很广泛的网络结构,是一种全卷积神经网络,输入和输出都是图像,没有全连接层。较浅的高分辨率层用来解决像素定位的问题,较深的层用来解决像素分类的问题。U-NET 构造了一个收缩网络和一个扩张网络,形成了一个 U 型结构。收缩过程通过不断的卷积(convolution)和池化(pooling)操作提取图片特征。扩张过程与收缩过程相对应,通过上采样(upsampling)和卷积操作来获取图片的特征。U-NET 的特点在于收缩网络和扩张网络是相互映射的关系,在扩张的过程中,通过合并与之映射的收缩层特征补全丢失的边界信息,提升预测边缘信息的准确性。与SegNet,VGG 等网络结构相比,U-NET 具有训练时间短,结构简单,样本需求少等优势。

3.3.1 网络结构单元

我们的网络是ResNet+Inception+Unet结合的产物,首先定义了下采样单元,它结合了ResNet和Inception的优势,每一个下采样单元保持输入与输出通道数相同,尺寸缩减为原来的一半。我们把这种自己设计的结构称为ReceptionBlock,一个ReceptionBlock的结构如下图所示(如果不是下采样,左边的卷积可以去掉)

查看本文全部内容,欢迎访问天池技术圈官方地址:天池医疗AI大赛[第一季] Rank8解决方案[附TensorFlow/PyTorch/Caffe实现方案]_天池技术圈-阿里云天池

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算矩阵中0的个数

在MATLAB中,计算矩阵中0的个数可以通过多种方法实现。最直接的方法之一是使用find函数或者逻辑运算符结合sum函数。以下是几种计算矩阵中0的个数的方法: 方法1:使用find函数 % 假设A是你的矩阵 A [1 0 3; 4 5 0; 7 8 9];% 计算矩阵中0的个…

标定系列——预备知识-OpenCV中矫正相关函数(十二)

标定系列——预备知识-OpenCV中矫正相关函数(十二) 说明记录 说明 记录了OpenCV中的矫正相关函数的使用 记录

ubuntu 使用 apt 安装、卸载 mysql

安装 mysql 更新 apt 列表 apt-get upgrade安装 mysql apt-get install mysql-server启动和关闭 mysql # 启动: service mysql start# 重启: service mysql restart # 关闭: service mysql stop登录数据库,修改 root 账号密码 mysql -uroot -p# 不用输入任何…

Can‘t connect to server on ‘localhost‘ (10061)

问题:电脑关机重启后,连接不上mysql了,报错信息如下:2002 - Cant connect to server on localhost (10061)解决办法:很大的原因是mysql服务没有启动,需要你重启一下mysql: 以管理员的身份运行cm…

安卓Glide加载失败时点击按钮重新加载图片

需求 假设此时已经用load指定一个url: String,又用into指定了一个img: ImageView开始加载,但是网络突然中断,导致图片加载失败。在这种情况下,想要通过点击一个Button重新加载。 Glide.with(context).load(url).placeholder(loa…

从PDF到高清图片:一步步学习如何转换PDF文件为高清图片

引言 PDF文件是一种便携式文档格式(Portable Document Format),最初由Adobe Systems开发,用于在不同操作系统和软件之间保持文档格式的一致性。PDF文件通常包含文本、图片、图形等多种元素,并且可以以高度压缩的方式存…

VScode 集成终端设置默认打开当前文件夹 mac系统

一.快捷键设置 搜索 openInIntegratedTerminal 如图: 二.设置cmd 默认打开位置 点击设置 搜索 ntegrated:cwd 如下图: 三.查看ip 快捷指令: ipconfig getifaddr en0

ubuntu 20.04 SD 卡分区类型 msdos 改为 GPT 的方法

前言 默认 SD 卡分区是 FAT32 格式,为了用于嵌入式Linux ext4 文件系统,需要改为 ext4 文件系统,但是SD 卡分区类型默认是 msdos 类型,也就是 MBR 类型,不是 GPT 类型。 烧写 ext4 分区表,或者使用 ubuntu…

linxu tensorflow-1.13.1 C++动态库编译

1、版本要求 版本 Python 版本 编译器 编译工具 tensorflow-1.13.1 2.7、3.3-3.6 GCC 4.8 Bazel 0.19.2 tensorflow-1.12.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 tensorflow-1.11.0 2.7、3.3-3.6 GCC 4.8 Bazel 0.15.0 tensorflow-1.10.0 …

SpringBoot中Bean注册

Bean注解 Springboot中默认扫描启动类所在的包及其子包。 比如这里的DemoApplication是启动类,那么spring boot默认扫描com.example.demo这个包。 Controller、Service、Repository这三个注解是Component的衍生注解,它们经常会被添加到Controller层、Se…

什么是EDM邮件推广营销?

电子邮件作为最古老的互联网沟通工具之一,凭借其无可比拟的直达性、个性化潜力与高投资回报率,始终占据着企业营销策略的核心地位。随着人工智能技术的革新应用,云衔科技以其前瞻视野与深厚技术底蕴,倾力打造了一站式智能EDM邮件营…

机器学习实战17-高斯朴素贝叶斯(GaussianNB)模型的实际应用,结合生活中的生动例子帮助大家理解

大家好,我是微学AI,今天给大家介绍一下机器学习实战17-高斯朴素贝叶斯(GaussianNB)模型的实际应用,结合生活中的生动例子帮助大家理解。GaussianNB,即高斯朴素贝叶斯模型,是一种基于概率论的分类算法,广泛应…

免杀对抗-安全工具篇新型Go架构C2-Sliver多平台上线模式红队集成研究免杀方向

首先,你需要分析: 1、安全工具是否有源代码 2、安全工具源代码逻辑复杂程度 3、当前源代码你是否有能力修改 其次,你需要考虑: 1、无源码或无能力修改 2、各种异常bug打包问题 3、修改打包后效果也不太好 故: 1、非源码…

VScode使用Prettier格式化代码

1、安装Prettier插件 2、扩展设置 3、设置.prettierrc.json配置文件路径 4、.prettierrc 配置文件 .prettierrc.json 是 Prettier 格式化工具的配置文件,用于指定代码格式化的规则和风格。下面是一些可能的配置选项,请自行选择: {"prin…

MetaGPT部分源码解读--Memory

storage: list[SerializeAsAny[Message]] []index: DefaultDict[str, list[SerializeAsAny[Message]]] Field(default_factorylambda: defaultdict(list))ignore_id: bool False storage 属性是一个列表,用于存储消息对象。每个消息对象都被标记为 SerializeAsAn…

Yarn与Zookeeper的介绍

Yarn--三大调度策略 FIFO(先进先出): 目前几乎已经没有人使用了. 类似于: 单行道. 好处: 每个计算任务能独享集群100%的资源. 弊端: 不能并行执行, 如果大任务过多, 会导致小任务执行时间过长. Capacity(容量调度): 我们用…

找到矩阵中位于降序15%位置的值

MATLAB实现 clc clearvars; matrix randn(10, 10); % 一个示例矩阵 disp(matrix)value find_value_at_15_percent(matrix); disp([位于降序中15%位置的值为: , num2str(value)]);% 验证 xreshape(matrix,1,100); ysort(x,descend); y(1:16)function value_at_15_percent fi…

缓存(反向代理)服务器-varnish

varnish简介: varnish是一款高性能且开源的反向代理服务器和HTTP加速器,(其实就是带缓存的反向代理服务器)它可以把整个HTTP响应内容缓存到内存或文件中,从而提高web服务器器的响应速度。 与传统的squid相比&#xff0…

【Java后端开发】教程及案例

Java后端开发是软件开发中的一个重要领域,它涉及到服务器端的程序设计、数据库交互、API开发、安全性处理等多个方面。以下是关于Java后端开发的教程和案例的详细介绍: ### Java后端开发基础 #### 1. Java基础知识 - 掌握Java基础语法、面向对象编程、…

压测Nginx时对Linux内核参数优化,以支持更高的并发

文章目录 Linux内核参数优化参数意义解析注意事项 Linux内核参数优化 编辑/etc/sysctl.conf文件 fs.file-max 999999 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_keepalive_time 600 net.ipv4.tcp_fin_timeout 30 net.ipv4.tcp_max_tw_buckets 5000 net.ipv4.ip_local_port_…