596. SenNet + HOA - Hacking the Human Vasculature in 3D | blood-vessel-segmentation
首先,我们要感谢Kaggle和组织者举办了这场卓越的比赛。通过参加这次竞赛,我们对医学影像识别的挑战和方法有了更深入的理解。
我们团队提交了解决方案的多个版本:
我在稳定训练过程方面遇到了很大困难。
train_transform = A.Compose(
[
A.RandomScale(
scale_limit=(1.0, 1.20),
interpolation=cv2.INTER_CUBIC,
p=0.1,
),
A.RandomResizedCrop(
image_size,
image_size,
scale=(0.8, 1.0),
p=1
),
A.RandomBrightnessContrast(p=0.75),
A.ShiftScaleRotate(p=0.75),
A.OneOf([
A.GaussNoise(var_limit=[10, 50]),
A.GaussianBlur(),
A.MotionBlur(),
], p=0.4),
A.CoarseDropout(
max_holes=1, max_width=int(image_size * 0.1),
max_height=int(image_size * 0.1),
mask_fill_value=0, p=0.5),
A.CLAHE(p=0.2),
A.GridDistortion(num_steps=5, distort_limit=0.3, p=0.05),
ToTensorV2(transpose_mask=True),
]
)
.png?generation=1708327848313831&alt=media)
在我的架构中,预测血管区域之前会先执行肾脏区域的检测/分割。
.png?generation=1708327892920221&alt=media)
各种预处理/后处理轻微但稳定地提高了LB/PB分数。
在yz/zx轴图像中,边缘的血管可能被切断。由于该区域的推理准确性较差,我通过在推理前使用镜像填充伪闭合血管来提高推理准确性。
.png?generation=1708327958129459&alt=media)
对结果进行二值化后,血管预测区域可能会出现如下所示的缺陷。因此,我添加了形态学闭合和fillPoly处理作为后处理步骤。这些在CV/LB/PB中略微提高了分数。
.png?generation=1708328014528398&alt=media)
在我的实验中,提高泛化能力的想法(强增强、伪标签等)未能作为最终提交,因为它们导致CV/LB下降...然而,我后悔不应该过于关注不稳定的CV/LB,因为这个比赛的样本量不够大。