Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SETIまとめ

start
October 14, 2021

 SETIまとめ

start

October 14, 2021
Tweet

More Decks by start

Other Decks in Programming

Transcript

  1. 宇宙人コンペ👽
    開催期間 2021/5/10 - 2021/8/18
    by start (kaggle:@startjapan / twitter:@startjapanml)

    View Slide

  2. 【コンペ概要】

    View Slide

  3. 【コンペ概要】
    ・天体観測データに埋め込まれた擬似的なシグナルを見つける画像コンペ

    View Slide

  4. 【コンペ概要】
    ・天体観測データに埋め込まれた擬似的なシグナルを見つける画像コンペ

    View Slide

  5. 【データについて】

    View Slide

  6. 【データについて】
    ・データ1件の次元 = (6, 273, 256)
    ・train : 60000件 / test : 39995件
    ・targetが含まれうるのはチャネル
    0,2,4のみ (1,3,5はコントロール)
    ・よって0,2,4だけ抽出してモデルを組むケースが多かった
    ・データ総量は156GB(※)
    ・test画像も見られる
    ※リークが見つかって100%の正答率が出せるようになったため
    一度restartされたコンペであった.restart前のデータにも
    アクセスできたためこんなデータ量になった.

    View Slide

  7. 【出力と評価指標】

    View Slide

  8. 【出力と評価指標】
    ・出力は各画像(dims=(6, 273, 256))においてtargetを含む確率 (回帰問題)
    ・評価指標はROC curve
    ・Leader boardはこんな感じ
    ・1位...

    View Slide

  9. 【コンペの主題】

    View Slide

  10. 【コンペの主題】
    ・CVとPublic LBのgapが異常に大きいこと (だいたいROC1割くらい)
    ・著しい domain shift と test dataのみに登場する第3のクラスが原因だった
    Adversarial validation improves cv-lb gap
    Looks like Watercooled team
    closed the CV/LB GAP

    View Slide

  11. 【上位者の解法】

    View Slide

  12. 【上位者の解法】
    ・1st Place Solution (0.96782)
    ・2nd Place Solution (0.81206, solo)
    ・3rd place solution (Triplet Attention) (0.80475, solo)
    ・4th Place Solution. Steven Signal (0.80428)
    ・5th place solution (0.80171)
    ・6th place solution (0.80072, solo)
    ・8th place solution (0.79945, solo)
    ・9th place overview (0.79929)
    ・10th Place solution (0.79809)
    ※()内はPrivate LB スコア

    View Slide

  13. 【1位】

    View Slide

  14. 【1位】
    ・各train foldにおいてold leaky dataも使用
    ・同じCVスコアでもLBが異なるモデルがあることに注目
    → 差分の画像を可視化してみたところtestデータのみでS字シグナルを発見
    ・signal generator を使用してtrainデータにS字シグナルを追加 (magic #1)
    (CVが一定になる範囲内でLBを最大化するように)
    ・ただし,その後もCV-LB gapは埋まりきらず...

    View Slide

  15. 【1位】
    ・domain shiftに対応するため,さらに以下の magic #2を行った
    (自信ありません.間違ってたら教えて下さい ...)
    1. 各列(画像の高さ)ごとに正規化(=平均を0に)
    2. 各画像の第1列のベクトル差をとり,0に近くなるものは同じ背景を有すると評価 (クラスターを作成)
    3. クラスター内で列正規化後の画像の差分をとるとシグナルだけがいい感じに抽出される
    (細かいところは違うかもしれないが ) 要するに肝となる発想は以下の通りだと思われる ...
    A. 主催者はチャンネル単位(shape=(273, 256))で正規化を行っている
    B. よって単純に画像の差をとってもシグナルのみを上手く抽出することができない.
    C. 列ごとに正規化を施すことで画像間の差をとれば backgroundのノイズが消えるように仕向けることが可能
    magic #1より magic #2のほうがboostにつながってるんじゃない?と多くの参加者が評価していた ...
    (magic #1に気づいているteamはあったが magic #2は他に誰も気づかなかった模様 )
    上記が正しいとすると,同じ背景を有する画像が複数存在するというのに気づけているかも大事だったはず

    View Slide

  16. 【1位】

    View Slide

  17. 【1位】
    ・その他Tipsは以下の通り
    1. 訓練には使えるデータ全てを使用
    (old leaky dataも使う.全データにおいて洗浄前のも後のも使う)
    2. backboneにおいて最初のCNN層のstrideを(1,2)にするとより解像度の高い画像
    で処理が可能らしい
    (ALASKA2 Steganalysisでも同じ戦略を使った)

    View Slide

  18. 【2位】

    View Slide

  19. 【2位】
    ・2 stage training
    ・1st stageではaugmentationとしてvflip、cutout、mixupのみを使用
    (予期せぬaugmentationで信号が消失するのを防ぐ)
    ・StochasticDepthとDropoutを使用してover trainingを防止
    ・mix upではα blendingの代わりに論理ORを使用し,弱いシグナルにも強く対応するこ
    とが可能に (これは1位もそうだった)
    ・論理OR : label = labelA + labelB - (labelA * labelB) (soft targetにも対応可)
    ・lossがNaNになるときは最初にheadとencoder BNsだけ学習させると良いそう

    View Slide

  20. 【2位】
    ・2 stage training
    ・2nd stageでは1st stageのモデルを使って得られたpsudo labelingにて1st stage
    modelのパラメータを微調整
    ・NoisyStudentを採用し,Stochastic DepthとDropoutをさらに強力にしてpsudo label
    へのoverfitを防いだ.

    View Slide

  21. 【3位】

    View Slide

  22. 【3位】
    ・psudo labeling
    ・convolutional triplet attention module
    ・SwishをReLUに置き換えると学習スピード速まる(387s → 347s/ epoch)
    ・GeM pooling (1位も使ってたはず)
    ・Focal Loss (gamma=0.5)
    ・Mix up (やはり論理OR)

    View Slide

  23. 【4位】

    View Slide

  24. 【4位】
    ・Mixed Sample Data Augmentation (MixUp, CutMix)
    ・Focal Loss (gamma=2, alpha=0.7)
    ・EMA
    ・周波数軸方向にcubic interpolation (画像サイズを大きく)
    ・6 channels全て使用するが,channel 0,2,4以外にはmaskを使用
    ※時間があれば調べたい : DDP, AMP

    View Slide

  25. 【5位】

    View Slide

  26. 【5位】
    ・SHOT (Source HypOthesis Transfer, domain adaptationの手法らしい)

    View Slide

  27. 【5位】
    ・本コンペでは上手くいかなかったもののいつか使えそうなもの
    DANN (domain adaptationに) / Audio Spectrogram Transformer
    Unsupervised Data Augmentation for Consistency Training (半教師あり学習)
    ROC_star (ROCを最適化する損失関数)

    View Slide

  28. 【6位】

    View Slide

  29. 【6位】
    ・各画像において次元を1つ増やし,on_channel=1, off_channel=0の平面を追加
    (mask的なものに近い)
    ・信号がchannelのon/offで途切れるかそうでないところで途切れるかがtarget=0 or 1の
    判定をする上で重要だと思ったから

    View Slide

  30. 【8位】

    View Slide

  31. 【8位】
    ・入力サイズにはかなり敏感なコンペだった.INTER_NEAREST interpolationを使用し
    たup sizeとINTER_AREAを使用したdown size でトータルでみるとscale up.
    (OpenCVを使用)
    ・学習に使用したデータ:channelごとに正規化されたnew train data, old train&test
    data, ソフトラベル付けされたnew test data.古いデータを使用することでCVが
    0.02-0.03程度上昇.

    View Slide

  32. 【9位】

    View Slide

  33. 【9位】
    ・アンサンブルメイン
    ・様々な軸での正規化が上手くいった
    ・S波の存在に気づき,シグナルの合成や既存のシグナルのS字化augmentationを行っ
    た (Custom sine augmentation)
    ・1位と同じく背景がいくつかのクラスターに分けられるということに気づいた
    (AEを使って得られたembeddingを使用して分析)

    View Slide

  34. 【10位】

    View Slide

  35. 【10位】
    worked
    big models / mixup / bid resolution / psudo label / TTA / oof stacking
    not worked
    channelをシャッフルするaugmentation / LSTM

    View Slide

  36. Thank you!!

    View Slide