Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

【コンペ概要】

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

【データについて】

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

【出力と評価指標】

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

【コンペの主題】

Slide 10

Slide 10 text

【コンペの主題】 ・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

Slide 11

Slide 11 text

【上位者の解法】

Slide 12

Slide 12 text

【上位者の解法】 ・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 スコア

Slide 13

Slide 13 text

【1位】

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

【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は他に誰も気づかなかった模様 ) 上記が正しいとすると,同じ背景を有する画像が複数存在するというのに気づけているかも大事だったはず

Slide 16

Slide 16 text

【1位】

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

【2位】

Slide 19

Slide 19 text

【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だけ学習させると良いそう

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

【3位】

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

【4位】

Slide 24

Slide 24 text

【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

Slide 25

Slide 25 text

【5位】

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

【6位】

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

【8位】

Slide 31

Slide 31 text

【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程度上昇.

Slide 32

Slide 32 text

【9位】

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

【10位】

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

Thank you!!