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