596. SenNet + HOA - Hacking the Human Vasculature in 3D | blood-vessel-segmentation
发生了什么?我的名字出现在第二名?我记得我的公开分数是0.43,排名是1052……
我的解决方案包括U-Net3D(128x128x32)、阈值调整和后处理来移除不连通的血管,因为它们属于假阳性。
https://github.com/tail-island/blood-vessel-segmentation
Kaggle解决方案笔记本
为方便切割数据,我创建了3D Numpy数组并调整了比例。我原本创建了"全部"(all)和"密集"(dense)数据集,计划按"全部"到"密集"的顺序进行课程学习。但由于个人电脑训练时间过长,最终只使用了稀疏数据训练。此外,我认为数据对人眼可见,差异不会太大,因此没有进行归一化或裁剪处理。
我在每个n个周期(epoch)中从随机位置和旋转角度生成数据。为减少数据生成时间,使用了多进程处理。
神经网络采用U-Net3D架构。
使用二元焦点损失,优化器为AdamW,学习率采用余弦衰减调度。
通过平铺(tiling)方式进行预测。get_candidate()函数根据给定比例查找候选区域,get_blood_vessels()函数移除不连通的小块。
在搜索大血管块(并裁剪)的版本中,私有分数为0.756793,公开分数为0.000000...
也许公开数据集只包含前x%的图像,它仅包含血管的末端部分,根部部分没有包含在内。因此,我的后处理在公开榜单上表现不佳。
由于公开分数太低,我很早就放弃了改进程序。而其他参赛者持续针对公开数据中血管末端部分进行优化。我怀疑这些改进在包含血管根部的私有数据上效果不佳。换句话说,我的第二名可能纯属运气...