返回列表

14th place solution

567. Google Research - Identify Contrails to Reduce Global Warming | google-research-identify-contrails-reduce-global-warming

开始: 2023-05-10 结束: 2023-08-09 双碳与可持续发展 数据算法赛
第14名解决方案

第14名解决方案

比赛排名: 第14名

团队领队: RB (Kaggle Master)

团队成员: Martin Kovacevic Buvinic, Optimo, furu-nag

发布时间: 2023年8月11日

感谢Kaggle和Google Research主办这场比赛。

以下是我们的简要解决方案。

预处理/数据集

  • 图像尺寸: 384和512像素 - 双线性缩放图像
  • 数据增强: 以下两种略有不同的增强方法是我们精选集成的一部分:
    def train_transform():
        transform = albu.Compose(
            [   
                albu.OneOf([
                    albu.HorizontalFlip(p = 1.0),
                    albu.VerticalFlip(p = 1.0),
                ], p = 0.50),
                albu.Rotate(limit = 180, p = 0.50),
                albu.Transpose(p = 0.50),
                albu.Normalize(
                    mean = (0.485, 0.456, 0.406),
                    std = (0.229, 0.224, 0.225),
                    max_pixel_value = 1.0
                ),
                ToTensorV2(transpose_mask = True),
            ],
            p = 1, is_check_shapes=False
        )
        return transform
    self.transform = {
                "train": A.Compose([
                    A.ShiftScaleRotate(scale_limit=0.20, rotate_limit=0, shift_limit=0.1, p=0.25, border_mode=cv2.BORDER_CONSTANT, value=0),
                    A.GridDistortion(p=0.25),
                    A.HorizontalFlip(p=0.25),
                    A.VerticalFlip(p=0.25),
                    A.Resize(*CFG.img_size),
                    A.RandomCrop(*CFG.crop_size),
           A.Normalize(mean=CFG.pp_params["mean"],std=CFG.pp_params["std"]),
                    A.pytorch.transforms.ToTensorV2(transpose_mask=True)
                    ], p=1.0),
            }

验证(集成中两种不同的交叉验证方案)

  • 4折地理分箱交叉验证: 相似的图像被放在同一个折中,同时采用无重复采样(数据集类摘录):
    self.dup_ids = self.df.dup_id.unique()
    def __getitem__(self, idx):
            dup_idx = self.dup_ids[idx]
            rows = self.df[self.df.dup_id == dup_idx]
            …
  • 随机5折分割: 在训练集和给定的验证数据集上进行随机分割

有效的方法

  • 软标签: 使用训练集中human_individual_masks的平均值,而不是human_pixel_masks;验证时使用human_pixel_masks
  • 损失函数: 使用SoftBCEWithLogitsLoss处理软标签,dice损失与BCE损失的组合也有效
  • 颜色处理: 使用常规的Ash彩色图像

模型(UNet)

模型表格

学习率调度: 所有模型使用余弦退火调度器,热身比例为0.02或0.03

阈值

如果调整阈值,我们本可以进入奖金区。截止提交后测试发现,0.45的阈值在私有排行榜上达到0.713x,在公共排行榜上达到0.712x,但我们最终选择了0.5的阈值。

无效的方法

  • 伪标签(PL)
  • 测试时增强
  • 使用其他波段、帧进行训练
  • 加权损失
  • 调整解码器通道数
  • 各种其他骨干网络

非常感谢我的杰出团队成员: @ragnar123@optimo@kunihikofurugori 🙏

同比赛其他方案