kaggle 入侵肾脏大赛

发布时间 2023-08-26 13:58:02作者: dunimaa

赛题任务 : 语义分割任务
赛题思路 : 构建深度学习语义分割模型完成
步骤1: 基本的语义分割模型 (FCN或UNet )、损失函数,跑通流程
步骤2 : 根据交又验证训练多个模型,完成模型结果集成
步骤3 : 对预测闻值进行搜索&可视化,改进损失函数&模型结构
步骤4 :寻找外部数据,构建预训练模型
步骤5 : 对测试集进行预测,进行伪标签训练

 

Epochs(周期): 一个 epoch 表示模型训练过程中,将训练数据集中的所有样本都用于训练一次的次数。训练一个神经网络模型通常需要多个 epoch,因为每个 epoch 都可以使模型逐步调整权重和参数,以更好地拟合训练数据。在每个 epoch 中,模型会对整个训练数据集进行前向传播、反向传播和参数更新。较小的 epoch 数可能导致模型欠拟合,而较大的 epoch 数可能导致过拟合。

Batch Size(批大小): Batch size 表示每次模型训练中使用的样本数量。在每个 epoch 中,训练数据集会被分割成多个大小为 batch size 的小批次(mini-batches)。模型的参数更新是根据每个小批次的损失函数来进行的,而不是在整个训练集上计算损失。通过使用小批次进行训练,可以加快训练过程,同时还可以利用硬件加速,如GPU的并行计算能力。较大的 batch size 可以利用硬件性能,但可能导致训练过程中的内存占用增加。

数据集( 训练集与验证集 )划分方法先切分到小尺寸,然后随机划分为训练集和验证集按照文件划分训练集和验证集,然后再切分
模型训练过程的细节:
模型网络结构 ( FCN 或 Unet,CNN网络结构 );

损失函数( Dice loss、 BCE loss )
数据切分过程
数据扩增方法

改进细节:

数据读取&数据扩增 :
按照文件读取,按照文件划分为训练集和验证集;

将没有mask的文件加入训练集

增加更强的数据扩增方法
将数据存储为jipg,方便下次使用

网络模型 :
使用UNet代替FCN,并尝试EffecientNet作为网络结构C加入SPP网络结构
训练与验证
验证精度不能单张计算Dice score,整张图计算更为精确
Dice loss不适合加入训练,不平滑

模型预测 :
多折模型集成精度收益 >单折TTA :
多折模型的预测闽值可以加入搜索过程

 

比赛进化路线
The Right way
构建比赛线下验证集,每个TIF是一折验证集(多模型集成) ;

闯值可视化与搜索函数
寻找合理的TIF拆分方法,到256、512和1024尺寸

寻找更加合适的损失函数和评价函数( 与线上一致 )
寻找更合理的模型结构
寻找更合适的结果集成方法
寻找外部数据,用于预训练
使用测试集完成伪标签训练,对公开测试集进行标注