ISIC2024上位解法MEMO

コンペの概要(参考HP)

共通部分

  • ほぼ全てのsolutionが2stage予測(image model の予測値を tabuler modelの特徴量に使用)
    • image model: 各画像をinputとした NNのモデル
    • tabuler model: lightGBM, XGBoost, Catboost を使用
  • image model
    • 過去データの使用: solutionによってまちまち
    • 不均衡データの対処: upsampling、downsampling
    • augmentation: isic2020のsolution のものを使用している人が多い
    • backbone: swinv2, swin, convnextv2, convnext, vit, efficientnetなど
  • tabluer model
    • 公開notebookを元に色々な特徴量を追加してスコアを伸ばしている
    • 数値の特徴量を複数のカテゴリ変数でグループ化した特徴量を追加
      (patient_id, tbp_lv_location, tbp_lv_location_simpleなど)
  • CV: Triple Stratified KFoldを使用

1st place solution

  • image model
    • CVをseedを変えて10回繰り返し、t検定によって優位差があるかどうか調べた
    • validationに時間がかかるので、5epochごとにvalidation→4epochごと→…とvalidationの回数を減らした
  • tabuler model
    • 各patientに対して、catboostで重要度の高いパラメータに対して、lesionに関わるパラメータが外れ値かどうかを表す特徴量を追加
    • ensemble: rank ensembleで実施
    • image modelの予測値は標準化して使用
    • overfitしないようにimage modelの予測値に標準偏差が0.1のノイズを追加している
    • 患者ごとの予測値の平均で、その患者の各レコードの予測値を割った値を特徴量に追加
  • 外部データ活用: Stable Diffusionをつかって合成データを作成して学習に追加

2nd place solution

  • tabuler model
    • Tabular Ugly Ducklings technique で特徴量を追加
    • 異なる数のimage featuersを追加することでそれぞれの予測モデルにバリエーションを持た瀬ている
  • image model
    • meta featuresを予測してauxiliary lossを追加
    • iddxをtf-idfによってベクトル化して、その後k-meansによってクラスタリング。
      そのclusterの中心との距離をlossにした
    • tabular dataを使って、self-supervised pre-trainingを行いその後 finetuning
    • backboneとheadそれぞれでlearning rateを調整
    • backbone 1e-5 ~ 8e-6
    • head: 1e-3 for the head

3rd Place Solution

  • image model
    • positiveを2パターンで定義して予測
      • target = 1
      • target=1, iddx_1=Indeterminate, iddx_2!=nan

4th place solution

  • image model
    • 5class labelとして予測(MEL, BCC, SCC, NV)
    • softmaxではなくsigmoidを適用
    • ema checkpointを使用
  • tabular pipeline
    • image pipeline(モデル10個)からimage fearturesを追加

5th place solution

  • image model
    • 過去データ有無やdown sampleの条件を変えて複数のモデルを作成
    • 推論時間を節約するため、全てのデータを使って学習したmodelもあり
    • あるモデルではhead とbackboneを分けて設定
      • lr_head : 2e-4
      • lr_backbone : 2e-5
  • tabuler model
    • 過去のメタデータ有り無しで複数のモデルを作成
    • Soft Labels: indeterminate malignant のレコードをtarget=1、sample_weight=0.5とした
  • Ensemble
    • Weighted average(optunaで重みが均等になるように最適化???)

6th place solution

  • image model
    • フレームワークは first-place winner in 2020とほぼ同じ
    • iddx_3を元に9class calassificationとして学習
    • EfficientNetB3+shape192 は推論時間がかかるのでLGBのpredicted probabilitiesが高い70,000サンプルだけ予測に使用した
  • tabuler model

7th place solution

  • image model
    • targetとlesion_idを予測する
      • positive sampleには全てlesion_idが割り当てられていたため
    • weighted sampler を使用
  • tabuler model
    • (特記事項なし)
  • CV: 病院ごとにCVを分けた(private testで新しい病院が登場するため)。
    結果LBとCV間で高い相関が得られたとのこと
  • ensemble: CVを信頼していたため、table dataとCNNはweighted ensembleにした。

8th place solution

  • image model
    • WeightedRandomSamplerを使用
    • バッチサイズの影響が大きかったとのこと。EfficientNet-B1では64 MaxViT-Tでは32に調整
  • ensemble
    • CmaEsSamplerでアンサンブルを最適化

9th place solution

  • image model
    • use 5% of negative imageを利用し upsampleも実施。trainは3epochのみ
    • Resizeをaugmentationの最後に持ってきたところスコアが改善した
  • tabuler model
    • 特徴量を追加したら5つの異なるseedでCVを確認してから、CVが上がっていたらLBを確認していた
  • ensemblie

10th place solution

  • image model
    • negative sampleを20個のデータに分割し、それぞれのepochごとにデータセットを入れ替えて利用
  • tabuler model
    • negative sampleを10個のデータセットに分けて、それぞれでモデルを作成?
    • 5fold× 3split seedsでmodel作成
    • missing attributionをtraining dataに追加
    • patientにフィッティングするのを避けるために、各patientの負例は50件までとした

11th place solution

  • image model
    • BCELoss(Binary: benign or malignant) + CrossEntropyLoss(Multiclass: benign, melanoma, SCC and BCC)
  • Tabular Model
    • 公開notebookとほぼ同じ

12th place solution

  • Image model
    • backboneを変えて複数作成
  • tabuler model
    • GLCM(Gray Level Co-occurrence Matrix)を使った特徴量を追加
    • KNN Feature(K=5)を使って、patientごとの数値特徴量の平均値を算出
    • Image modelのfeatureにgaussian noiseを足す(overfitしないように)
    • Add Quartiles for numeric columnsを追加

以上

関連書籍