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