mixup

mixup作为一种数据增强方法,能够起到防止过拟合的作用,在论文mixup: BEYOND EMPIRICAL RISK MINIMIZATION中被提出,本质上,mixup就是在成对的样本及其label的凸组合(convex combinations)上训练神经网络。

其通过以下方式构建虚拟的训练样本

(xi,yi),(xj,yj)(x_{i},y_{i}),(x_{j},y_{j})(xi​,yi​),(xj​,yj​)是两个随机的训练样本,λ\lambdaλ~Beta(α,α)Beta(\alpha,\alpha)Beta(α,α),α\alphaα是一个超参数
使用mixup的实验结果为:30epoch时,ET validation dice:0.6821,TC:0.8131, WT:0.8844。和nnU-Net的baseline基本一致,没有起到好的效果,也没有负作用。
(使用mixup预训练encoder部分,然后冻结encoder参数,在没有mixup的情况下继续训练decoder部分,也没有明显效果。)

然而在这次BraTS的项目中,样本中的类别不平衡是一个大问题。据我粗略的估计,在大小为128 * 128 * 128 的输入图像中,WT占8%,TC占3%,ET占1%,可见肿瘤部分是严重的under-represented。论文Overfitting of neural nets under class imbalance: Analysis and improvements for segmentation中就该问题开展了一系列的研究。它发现测试集under-represented类别样本(肿瘤)的预测值向decision boundary移动,而over-represented类别样本(背景)则不会移动。直观的理解为,像肿瘤中ET区域这样的小目标,容易被网络记住,而对于那些从没有看过的在测试集上的小目标,就很难产生好的泛化性能。作者对现有的正则化方法和loss都做出了改进,用以专门解决这样的样本不平衡问题。

我采用了其中两个方法。
一个是asysmmetric mixup,原始的mixup产生的label为soft label,改进后产生的label为hard label。

当λ\lambdaλ 取值接近0.5时,mixup后的图像中会有两个肿瘤区域的label,只有当λ\lambdaλ 接近于0或者1时,才取yi或者yj中的一个作为label(由超参数m来调节)。可以对三个区域(WT,TC,ET)设置不同的m参数,这样构建的虚拟训练样本会有更多的ET区域,使网络尽可能看到更多的ET label,学习到更多ET区域的特征,增强网络的泛化能力。
实验结果:这个实验我只运行了18个epoch,和baseline也基本一致(ET:0.67,TC:0.7644,WT:0.8758)

focal loss

另一个是就asysmmetric focal loss。原本的focal loss在Focal Loss for Dense Object Detection中提出,本质是对cross entropy的改进。

降低easy-example在总体loss中的比重和影响,增加hard-example在总体loss中的比重。但是easy和hard example都会有一个γ\gammaγ 次方的衰减系数,于是进一步的改进就是不让easy-example乘以衰减系数,让easy-example的对loss影响更大,便成了如下的asysmmetric focal loss。

最后总体的loss可以用asysmmetric focal loss加上dice loss。
我用dice loss加上focal loss的实验结果为:140epoch时,ET validation dice:0.71,TC:0.81, WT:0.89,没有明显效果。

weighted dice loss

在一篇最近的论文Automated Brain Tumour Segmentation Using Deep Fully Convolutional Residual Networks中提到了weighted dice loss。作者称在整个BraTS2018的数据集中,大约98.88%的voxels是背景,1.12%的voxels是WT,0.48%的voxels是TC,只有0.20%的voxels是ET。严重的类别不平衡,由此想到用weighted dice loss,增加肿瘤区域的权重,减少背景的权重。

在具体代码实现时,我参考了kaggle上的代码和论文 Generalised Dice overlap as a deep learning loss function for highly unbalanced segmentations。(待解决:三个参数的具体值)

实验结果为,110epoch时,ET validation dice:0.7470,TC:0.8199, WT:0.9012,是目前为止所有方法中,最有效果的一个。

网络结构调整

nnU-Net(no-new-Net) , nnU-Net: Breaking the Spell on Successful Medical Image Segmentation是一个简单而漂亮的网络,在各项医学图像分割比赛中都可谓屠榜,吊打很多所谓的novel architecture, eg. dense, attention…很多论文提出的各种idea不能很好地迁移到其他数据集中,而nnU-Net则可以很好的适应不同的数据集和,取得不错的效果。论文中这张图对我们的实验有很大的帮助与借鉴意义。

另外我还看到nnU-Net的作者最近的一篇论文,An attempt at beating the 3D U-Net。这篇论文是他参加KiTS2019的论文。作者对nnU-Net做了修改,加上residual-block,希望能beat 3D U-Net,可是最后的分割结果却是两者基本一样。作者认为在这个数据集(Kidney)中一个相对简单的网络配上合适的超参就足以胜任,而那些原以为能提升效果的改进都没有起到作用。

这也很符合我做的一些实验,我尝试复现了UNet++ , 作者把原本U-Net例的skip连接改成了nested, dense skip
pathways,旨在减少encoder和decoder的feature map之间的语义信息的差异。
我的实现结果为:30epoch时,ET validation dice:0.692,TC:0.7017, WT:0.78。ET和nnU-Net的baseline相近,而TC和WT都要差上0.1。

我实验了kaggle图像分割比赛中很多人都用的一个trick:hypercolumns,论文Hypercolumns for Object Segmentation and Fine-grained Localization。深层layer能提供较好的语义信息而在定位精度上不够,浅层layer语义信息不足却能提供足够精确的空间信息。作者想将两者相结合,于是提出hypercolumns的概念:指一个输入像素位置往后的所有对应位置的卷积网络单元激活值,组成一列向量。在分割网络中具体的实现时就是将decoder各个阶段输出的特征图都上采样到输入图像的大小,然后和decoder最后的输出concat。(感觉和U-Net的skip连接有异曲同工之妙)最后的实验结果发现并没有起到效果。
实验结果为:30epoch时,ET validation dice:0.6977,TC:0.7855, WT:0.8842,没有明显提升。

另外。我还尝试了把UNet的四次下采样改为五次下采样,实验结果也与baseline基本一致。

以上对网络结构的改动都有的一个实验现象是,与nnU-Net作为baseline相比,他们前期收敛的比较快,loss降的快,validation dice开始也较高,能很快学到特征。但训练到后期就很那涨了,结果不会超过baseline甚至降低。

BraTS19_summary相关推荐

最新文章

  1. Settings.System暂存/读取数据
  2. 数据库在EF中创建模型
  3. 理解word2vec的训练过程
  4. 【计算摄影】图像美学专栏上线,先从学点摄影知识开始
  5. 如何做好生产现场管理及信息化应用
  6. 【图像处理】图像内插“最近邻插值 最近邻内插法(Nearest Neighbour Interpolate)”代码演示(调整图像大小、放大、缩小)
  7. HarmonyOS之AI能力·图像超分辨率
  8. 计算机专业英语的题目,计算机专业英语题目
  9. BZOJ1857:[SCOI2010]传送带——题解
  10. 数值保留几位小数后四舍五入、向上取值、向下取值、
  11. Linux中的rz和sz命令
  12. mongo与sql对比--来自网上
  13. promoter:启动子预测程序(PPPs)软件现状及分析
  14. 【笔记分享】LED点阵屏幕显示原理
  15. 远程接入产品极通EWEBS给客户带来的价值
  16. 警惕面试过程中的 PUA
  17. 开放微博社区使用OAUTH协议简介
  18. 我的团长我的团可能的故事原现
  19. 用Python实时获取steam特惠游戏数据
  20. python中如何查一个函数的用法_Python常见内置函数用法(三)

热门文章

  1. idea替换的快捷键
  2. uni-app小程序图片v-html自适应问题
  3. SAP 标准委外和工序委外
  4. android 杜绝崩溃闪退处理
  5. Linux配置主机名
  6. dll修复都有哪些方法?详细解析各种dll修复方法
  7. Django 跨域问题解决
  8. 在suse下rpm包安装
  9. Pascal Voc数据集详细分析
  10. 【深度学习实践】从零开始的炼丹生活11—— GAN的综述(2020.3)