336. SIIM-ACR Pneumothorax Segmentation | siim-acr-pneumothorax-segmentation
首先,我们要感谢 SIIM 和 ACR 举办了这场有趣的比赛。
我们的最终解决方案基于 EncodingNet(ResNets,尺寸为 512 和 1024)和 UNet(EfficientNet4, se-resnext50, SENet154,尺寸为 512, 640 和 1024)。我们的模型在团队合并前是独立训练和调整的,这为解决方案带来了很多的多样性。
最好的数据增强(augmentations)与裁剪和旋转有关。我们没有使用对比度和亮度变换。
损失函数:BCE+Dice(尝试过 Focal,但没起作用)
较低的图像尺寸会大大降低分数,因此全尺寸模型应该会更好。
技巧:
另外我注意到 Horizontal Flip(水平翻转)增强降低了我的本地 CV 分数,但没有在 LB(排行榜)上检查它。
对于验证,我们使用了 4 折交叉验证。折数是使用 StratifiedKFold(n_splits=8) 沿 isPneumothorax 生成的。对于每个 单独模型,我们都做了 4 折混合模型。我们使用的数据增强如下:
AUG = Compose(
[
HorizontalFlip(p=0.5),
OneOf(
[
ElasticTransform(
alpha=300,
sigma=300 * 0.05,
alpha_affine=300 * 0.03
),
GridDistortion(),
OpticalDistortion(distort_limit=2, shift_limit=0.5),
],
p=0.3
),
RandomSizedCrop(min_max_height=(900, 1024), height=1024, width=1024, p=0.5),
ShiftScaleRotate(rotate_limit=20, p=0.5)
],
p=1
)
架构:EncNet (来自 pytorch-encoding),骨干网络为在 Pascal 数据集上预训练的 Resnet50。
损失函数:Dice
数据增强:AUG
TTA:翻转, Clahe 和 np.arange(-20, 21, 5) 角度旋转(共 10 种 TTA)
架构:两个 Unet 类模型,骨干网络分别为 SEResnext50 和 SEResnet152,在 1024 x 1024 分辨率下训练。每个模型也沿 4 折进行了平均。
损失函数:Dice
数据增强:AUG
TTA:翻转
架构:Unet 类模型,骨干网络为 EfficientNetB4,在 640 x 640 分辨率下训练。同样沿 4 折进行了混合。
损失函数:加权 Dice + BCE
数据增强:AUG
TTA:无 TTA
模型1、模型2、模型3 和 模型4 的平均值。
分类阈值:~0.32
分割阈值: