Kaggle颈椎骨折检测的获奖方案汇总和简介

Kaggle竞赛地址:
https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/

1st Place Solution

Solution https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362607
Code https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362787
两阶段:3D 语义分割 + 2.5D LSTM 分类

1.3D语义分割

resnet18d or efficientnetv2-s + unet model
输入 128x128x128 输出 7通道

2.数据准备

将7个脊椎从单张3D图像截取出来。对于每个脊椎在z轴上等分后提取15片,每片取左右相邻各两片组成一张5通道图片。最后把上一步预测的mask作为一个通道添加到图片中,用来去除多个脊椎在一个裁剪图像中的影响。

3.2.5D+LSTM

3D模型效果很差。
2.5D模型是2D切片有几张相邻切片的信息,所以被称作2.5D。但是模型是普通5通道2D卷积网络。

Type1模型:

首先将一个脊椎实例的15个切片送到2D CNN网络,对每个切片提取特征,最后送入一个LSTM模型。

上面的模型结构虽然能够针对骨折训练单个椎骨,但无法针对整个患者是否存在骨折进行训练。 所以我设计了另一个模型。

Type2模型:

第二种分类模型与上面的分类模型基本相同,只是它将患者视为一个训练样本(上面的模型将椎骨视为一个训练样本)。 该模型同时输入 7x15 2D 图像,因此具有学习 patient_overall 标签的能力。

然而,这个模型的缺点是它占用了太多的 GPU 内存,因此只能使用小的主干。(从代码中发现,是使用了两个LSTM分类,一个是针对每个脊椎的预测,一个是总体的预测)

3D Seg

模型:

5fold resnet 18d unet (128x128x128)
5fold effv2 s (128x128x128)

Transformers:

RandFlipd spatial_axis=1 和2
RandAffined(keys=[“image”, “mask”], translate_range=[int(x*y) for x, y in zip(image_sizes, [0.3, 0.3, 0.3])], padding_mode=‘zeros’, prob=0.7
RandGridDistortiond(keys=(“image”, “mask”), prob=0.5, distort_limit=(-0.01, 0.01), mode=“nearest”)

Loss:

bce_dice, mixup

2.5D Cls

Type1 5fold effv2s (512x512)
Type1 5fold convnext tiny (384x384)

model:tf_efficientnetv2_s_in21ft1k
transforms_train = albumentations.Compose([
albumentations.Resize(image_size, image_size),
albumentations.HorizontalFlip(p=0.5),
albumentations.VerticalFlip(p=0.5),
albumentations.Transpose(p=0.5),
albumentations.RandomBrightness(limit=0.1, p=0.7),
albumentations.ShiftScaleRotate(shift_limit=0.3, scale_limit=0.3, rotate_limit=45, border_mode=4, p=0.7),

albumentations.OneOf([
    albumentations.MotionBlur(blur_limit=3),
    albumentations.MedianBlur(blur_limit=3),
    albumentations.GaussianBlur(blur_limit=3),
    albumentations.GaussNoise(var_limit=(3.0, 9.0)),
], p=0.5),
albumentations.OneOf([
    albumentations.OpticalDistortion(distort_limit=1.),
    albumentations.GridDistortion(num_steps=5, distort_limit=1.),
], p=0.5),

albumentations.Cutout(max_h_size=int(image_size * 0.5), max_w_size=int(image_size * 0.5), num_holes=1, p=0.5),])

Type2 5fold convnext nano (512x512)
Type2 2fold convnext pico (512x512)
Type2 2fold convnext tiny (384x384)
Type2 2fold nfnet l0 (384x384)

2nd place solution : Segmentation + 2.5D CNN + GRU Attention

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/365115
https://github.com/ryanyuerong/RSNA2022RAWE
阶段1: 2.5D CNN + Unet for Segmentation
阶段2: CNN + BiGRU + Attention for Classification

阶段1:分割

Resize(CFG.img_size, CFG.img_size, interpolation=cv2.INTER_NEAREST),
HorizontalFlip(p=0.5),
ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.05, rotate_limit=10, p=0.5),
OneOf([
GridDistortion(num_steps=5, distort_limit=0.05, p=1.0),
ElasticTransform(alpha=1, sigma=50, alpha_affine=50, p=1.0)
], p=0.25),
segmentation_models_pytorch库,骨干网络是efficientnet-b0,编码器是unet。
optimizer=“AdamW”
scheduler=“CosineAnnealingLR” + “GradualWarmupSchedulerV3”

裁剪

每个脊椎取24个切片,如果大于24,则等分取24片。

阶段2

CNN + biGRU + Attention
CNN:tf_efficientnetv2_s and resnest50d
Attention:代码中发现是一个MLP网络,没有attention部分。

3rd place solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362643
https://github.com/darraghdog/RSNA22

4th place solution, CSN is all you need for 3D

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/364837

5th place solution (Team Speedrun)

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/363232

[6th place] Solution Overview: 3D CNN + TD-CNN

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362651

7th place solution, segmentation for detection tasks

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/364848

8th Place Solution + Code

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362669

10th place solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362986

12th Place Solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362844

13th Place Solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362687

14th place solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362771

17th place solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362931

18th Place Solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362640

32nd place solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362593

[38th Place] Single Stage Single Model Efficientnetv2

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362647

58th Place Solution

https://www.kaggle.com/competitions/rsna-2022-cervical-spine-fracture-detection/discussion/362592

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值