图像分类比赛

科大讯飞2020脑PET图像分析和疾病预测---单模型进决赛前五

  • 目录
  • 1 前言
  • 2 算法名称
  • 3 创新点
  • 4 算法描述
    • 4.1 算法思想
      • 4.1.1对数据进行裁剪处理
      • 4.1.2 数据增强
      • 4.1.3 标签平滑
      • 4.1.4 迭代交叉验证
      • 4.1.5 迁移学习
    • 4.2 流程图
  • 5 算法实现
    • 5.1 参数设置
      • 5.1.1 数据裁剪部分
      • 5.1.2 数据增强部分
      • 5.1.3 网络训练部分
    • 5.2 实现平台
  • 6 结果和分析
  • 7总结
  • 8 后继提升
  • 9 源码
  • 10 核心成员

目录

1 前言

nnUNet的出现,一棒子打死了近年来所有的新的网络结构。作者认为网络结构上的改进并没有什么用,应该更多的关注结构以外的部分,比如预处理、训练和推理策略、后处理等部分。

目前为止nnUNet的代码已经被很多地方使用并且证明了它的效果,这不禁引起我们的深思,确实网络结构在这么多年来的所谓的创新,是不是真的都只是过拟合,都是论文作者的一厢情愿。

在没有充分的理论支撑的情况下,越是复杂的东西,就越容易过拟合,不是没有道理的。在深度学习领域的钻研方向问题上,学术界是不是走了很多弯路?更多的精力放在理解数据上,可能更能得到质的提升。

比赛官网:脑PET图像分析和疾病预测挑战赛

2 算法名称

EfficientNet of auto-adapted feature selection
(基于EfficientNet的自适应特征选择算法)

3 创新点

(1)自适应裁剪填充
(2)迭代微调交叉验证
(3)基于这两个baseline进行改进,原baseline只有0.76左右。参考1 参考2

4 算法描述

4.1 算法思想

本算法是一种以迁移学习为主要思想,结合交叉验证、自适应裁剪以及数据增强的方式,对样本进行分类。算法流程大致如下所示:首先对数据集中图像进行自适应裁剪;将处理后的图像通过一系列数据增强策略提高泛化型;将增强后的数据输入预训练模型”EfficientNetb8”进行分类;最后通过迭代交叉验证策略加速模型收敛以及提高样本精度。
本算法主要分为以下5大技术点,

4.1.1对数据进行裁剪处理

对训练集样本图片和测试集样本图片统一进行自适应裁剪,具体算法思想是,由于训练集中的大脑外壳与图片的边界存在一段真空区域,这部分区域其实是无效区域,如果再进行后续的随机旋转翻转会进一步缩小ROI 的区域,也就是实际有效样本的区域,基于以上情况,本步骤的处理是尽可能针对不同尺度的大脑进行自适应裁剪边界,使得处理后的图片能尽可能贴合大脑外壳,从而增大其ROI的区域。
具体步骤如下:
1)通过遍历像素值获取各个位置的像素点
2)将设置既定像素阈值筛选出阈值之上的像素值的索引坐标
3)根据这些索引坐标进行二次筛选,选出坐标值中横纵坐标位置最大最小值,以这些坐标值来界定大脑极限边界位置;
4)对于获取的最大最小的横纵坐标值加入自适应边界系数,该系数加入的评判条件是对于最大的坐标值进行自适应扩增,对于坐标值进行自适应缩减,然后扩增或缩减后的尺度需要在原来未裁剪前的尺度范围内,否则自适应系数为0。
5)由于神经网络对样本的都会进行resize操作,因此,对于裁剪完成后的样本其尺度都不一样的情况,本步骤算法以该样本的长边为基准对短边方向进行填充扩增,确保每张图片都是以正方形的形式,这样的好处是在进行神经网络数据增强部分时候,可以一直保持着原有的长宽比,不会引发形变。裁剪效果如下图所示(示例图来自训练集AD中的1.png):

上图中a是原始图片,b是自适应裁剪后的图片,c是在b的基础上自适应填充后的图片。

4.1.2 数据增强

对于数据增强策略上的选择,通过观察可以发现,测试集中的样本具有5种变化特性,一是随机中心旋转,二是随机亮度变化,有些样本很暗,有些样本很白;三是尺度不一样,有些样本很大,有些样本比较小;因此,为增强模型泛化能力,本步骤中将在测试集和验证集统一加入如下策略:
1)随机中心旋转从-180度到180度;并以边界填充的方式进行缩放尺度;
2)随机仿射变换
3)色泽扰动,亮度随机变换幅度为0到0.5;对比度是从0到0.5;饱和度是从0到0.5,在这三种条件中进行随机变换

4.1.3 标签平滑

对于常规的独热标签,为了防止出现局部最优的现象,本步骤中对样本生成的独热编码进行平滑,增大分类的泛化能力,具体步骤如下:
1)获取标签个数
2)根据标签个数和类别个数生成平滑单位矩阵,里面的值以既定平滑系数/(类别数-1)
3)标签数值平滑,即对数值为1的位置项该值减去平滑系数,其余项加上平滑系数的倒数,生成符合原标签数值分布的标签系数矩阵
4)然后对原标签矩阵进行对数交叉熵映射,然后对映射后的结果乘以平滑后的标签系数矩阵生成最终的标签矩阵。

4.1.4 迭代交叉验证

创新点之一,由于传统的10折交叉验证会生成10个模型,本算法为了提高效率,在交叉验证中,进行了改进,具体做法是,在整个交叉验证过程中,只保存一个最好的模型,并从第i折起,加载前面保存好的最好的模型的参数进行迭代微调,最后也只得到唯一一个模型,省去了传统交叉验证的最后还要进行复杂的模型选择的步骤,从而在保障能够尽可能跳出局部最优的同时也可以得出最优模型。

4.1.5 迁移学习

本步骤中通过结合预训练完成的模型efficientNetb8以及交叉验证的方式进行finetune迭代,加速训练的速度;

4.2 流程图

5 算法实现

5.1 参数设置

5.1.1 数据裁剪部分

自适应系数α=10

5.1.2 数据增强部分

Resize=224;
随机旋转角度(-180≤rotates≤180)
随机仿射变换角度=10
色泽扰动部分:
亮度:0-0.5;
对比度:0-0.5
饱和度:0-0.5
色相:0

5.1.3 网络训练部分

Batchsize=10
n_split=20 (20折交迭代叉验证)
drop_last=True
shuffle=True
optimizer:SGD
scheduler: StepLRstep_size=4gamma=0.5
epoch=30
init_learning_rate=0.01

5.2 实现平台

系统:Ubuntu18/Win10
硬件配置:NVIDIA 2080Ti 显存15G
语言框架:pytorch;torch1.2.0; torchvision0.4.0,tensorboard==2.0

6 结果和分析

实验结果如图2所示,x轴表示折数,y轴表示loss数,曲线表示在本算法中经过20折的迭代过程后,loss的下降情况,由图2可知在第10折的时候,曲线开始趋向平滑趋势,到16折的时候,基本已经趋向稳定不变的状态,最终loss值是0.4039;如图3所示,x轴为折数,y轴为accuracy数,曲线表示在20折迭代下,取出每折最后一次的准确率值,进行准确率统计,其中在第4折时候是曲线的转折点,浅色线是没经过tensorboard可视化平滑参数处理的情况,经过平滑参数降噪后,在10折的时候已经到达最优准确率100%。

图2 loss变化曲线
图3 accuracy变化曲线

结果提交记录,经过不断微调,最终得到0.97352分,排名复赛榜前五。

图4 提交记录

7总结

一句话总结此次比赛:一个好的预处理,能让你赢在起跑线!

8 后继提升

目前,我们在整个比赛过程中都只使用了单模型,在排行榜中前三的队伍基本上都使用了多模型融合,第一名使用了7个模型,只比我们分数(0.97352)高出1.5%左右(第一名分数0.98785),可见,我们的单模型已经是比较top的了。所以,如果想进一步提高,可以考虑多模型融合策略来继续提升。

9 源码

脑PET

10 核心成员

洋哥 莹姐 增哥 钦哥 小弟

科大讯飞2020脑PET图像分析和疾病预测---单模型进决赛前五相关推荐

  1. 脑PET图像分析和疾病预测方案总结

    文章目录 1. 方案一 1.1 竞赛介绍 1.2 算法方案 1.2.1 网络结构 1.2.2 数据增强 1.2.3 网络自动搜索 1.2.4 数据泄露问题 1.2.5 提分trick 1.2.5.1 ...

  2. 重磅 CV、NLP 算法赛,科大讯飞2020 A.I.开发者大赛正式启动!

    赛事摘要: 总奖池180+万元,还有绿色就业通道&讯飞Offer.权威证书. 核心A.I.开放能力.千万优质数据.A.I.全链创业扶持等多样化的赛事福利! 大赛期间将开放科大讯飞海量数据资源及 ...

  3. 论文阅读——利用Inceptioin V3在PET上进行AD预测

    文章目录 一.数据及预处理 1.数据集 2.预处理 二.模型 三.结果 1.模型结果 2.模型解释与可视化 四.讨论 1.关于结果的讨论 2.局限性 结束语 分享一篇用18F-FDG PET进行AD预 ...

  4. 科大讯飞2020完整事件抽取系统(bert+数据集)

    科大讯飞2020完整事件抽取系统(bert+数据集) 事件抽取将非结构化文本中的事件信息展现为结构化形式,在舆情监测.文本摘要.自 动问答.事理图谱自动构建等领域有着重要应用.在真实新闻中,由于文本中 ...

  5. TaxoNN:基于分层微生物组数据的集成神经网络用于疾病预测

    <TaxoNN ensemble of neural networks on stratified microbiome data for disease prediction > 发表时 ...

  6. 基准分类模型、分类应用(多分类数字识别、疾病预测、欺诈检测)、监督学习总结

    基准分类模型.分类应用(多分类数字识别.疾病预测.欺诈检测).监督学习总结 目录

  7. 基于关联规则(Variational Autoencoders)疾病预测系统实战:(pyspark FPGrowth实现频繁项集挖掘、最后给出预测模型topK准确率和召回率)

    基于关联规则(Variational Autoencoders)疾病预测系统实战:(pyspark FPGrowth实现频繁项集挖掘.最后给出预测模型topK准确率和召回率) 目录

  8. 基于变分自动编码器(Variational Autoencoders)疾病预测系统实战:(Keras实现并可视化训练和验证误差、最后给出topK准确率和召回率)

    基于变分自动编码器(Variational Autoencoders)疾病预测系统实战:(Keras实现并可视化训练和验证误差.最后给出topK准确率和召回率) 本文中使用的VAE算法以病人病史为输入 ...

  9. CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理-癫痫发作预测(六)

    CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理-癫痫发作预测(六) 导入需要的包 各功能模块 数据集导入 模型训练 训练结果 保存模型 测试结果 导入需要的包 import numpy as np ...

最新文章

  1. android检测本地是否安装,在本地测试模块的安装
  2. 24.Interpreter-解释器模式
  3. 【Android 异步操作】手写 Handler ( 总结 | Message | MessageQueue | Looper | Handler ) ★
  4. The DVMM Lab at Columbia University
  5. 记一次Socket.IO长链服务的性能压测
  6. python中利用matplotlib画图
  7. [Termux]给Termux安装一个发行版Linux
  8. python骂人的程序_Python实现敏感词过滤的4种方法
  9. ubuntu 禁用透明大页_MySQL InnoDB 透明页压缩(Page Compression)
  10. 设置linux拨号服务端,CentOS Linux上搭建PPPoE服务器及拨号设置
  11. C++笔记-解决VS2015Qt项目MSB3758.MSB4036
  12. 中国节能电梯市场趋势报告、技术动态创新及市场预测
  13. python程序员工资-Python工资高还是Java?
  14. JavaScript 教程
  15. js头像裁剪实现——canvas+Jcrop+jQuery
  16. Linux中的VMware共享文件夹
  17. 将CDlinux 0.9.7.1的iso安装到U盘并安装grub2
  18. 如何去掉高CAD选择集对话框(高版本才有)
  19. 我的第一本书《FFmpeg音视频开发基础与实战》已正式出版
  20. 关于如何免费下载专利、英文文献等?

热门文章

  1. 2、按键检测例程-FPGA-个人实验总结
  2. 编程之美 2.1 求二进制中1的个数
  3. LED办公楼宇照明节能方案及城市夜景照明节能方案
  4. MPEG音频编码三十年
  5. Uber无人车愈挫愈勇 估值百亿 已运送数万乘客
  6. 如何解决浏览器的兼容性
  7. 骁龙8+gen1和天玑9000+区别 骁龙8+和天玑9000+评测选哪个好
  8. centos下的vim安装
  9. 《生物信息学:导论与方法》--本体论、分子通路鉴定--听课笔记(二十)
  10. 在线CAD平台,MxCAD云图 2021.01.20更新,在线CAD软件