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

APTOS_2019_Blindness_Detection_96th_Solution

ktr
September 23, 2019

 APTOS_2019_Blindness_Detection_96th_Solution

ktr

September 23, 2019
Tweet

More Decks by ktr

Other Decks in Science

Transcript

  1. 自己紹介 - はじめまして -
 • ふだん→情シス
 • これから→MLエンジニア
 • Kaggle歴:1年くらい


    ◦ R : Bronze
 ◦ Quora : シルバー
 ◦ APTOS : シルバー 
 
 @ktr_wtb
 2

  2. もくじ
 • 参加のきっかけ
 • コンペの概要
 • 解法
 ◦ データの処理
 ◦

    モデル 初期 中期 後期
 ◦ パイプライン
 • 反省と次に向けて
 3

  3. コンペの概要 - Diabetic Retinopathy -
 • Diabetic Retinopathy = 糖尿病性網膜症

    
 ◦ 糖尿病による3大合併症の一つ 
 ▪ 成人の失明原因の上位を占める 
 ◦ 血糖が高い状態が続くと血管が損傷、変形したりして網膜が酸素不足に。酸欠を補おうと して新生血管を増やすが、破れやすく出血の原因に。出血するとかさぶたのような状態に なりそれが原因で網膜剥離を起こす。 
 5

  4. コンペの概要 - metric - 
 • Quadratic Weighted Kappa (QWK)

    
 ◦ カッパ係数は正解ラベルとモデルの分類結果の一致度を計る 
 ▪ ラベルと分類結果にギャップがあるとペナルティ(二乗=Quadratic)を与える 
 ▪ e.g. ラベル1、分類結果4 -> 重いペナルティ 
 ▪ 1 に近いほど良い
 ◦ 不安定
 7

  5. コンペの概要 - 課題 - 
 • 病症によらないメタ特徴量だけでローカルのQWKが+0.7 
 ◦ Height、Width、Ratio(Height/Width)、pixel

    count 
 ◦ PublicでQWKが0.03→Private ? (https://www.kaggle.com/taindow/be-careful-what-you-train-on) 
 • 前処理が施された画像の存在
 ◦ Privateでも?
 • External Data の利用
 ◦ Diabetic Retinopathy Detection (2015年) 
 ◦ INDIAN DIABETIC RETINOPATHY IMAGE DATASET (IDRID) 
 ◦ Messidor
 8

  6. 解法
 • ほぼすべてDiscussionに従う
 ◦ EfficientNetB3
 ◦ 2015年データと2019年データを使う 
 ◦ 重い前処理は必要ないっぽい


    ◦ Augmentation 大事
 • CVではなくLBに頼った
 ◦ Discussionにヒントがなかったので.... 
 ◦ 途中lossとmetricが最良でもLBが下がって路頭に迷う 
 ◦ 最終subはPublicで1番=Privateで2番で 運が良かった
 9

  7. 解法 - データの処理 -
 • 2015データ
 ◦ ノイズになりそうなデータを削除
 ▪ cv2.calcHist()

    
 ▪ mean、skew、kurtosis 
 ◦ 1th:特になにもしてなかった
 • 2019データ
 ◦ 重複画像を一枚に
 ◦ 異なるラベル付けのデータを削除 
 • 前処理
 ◦ 余分な黒い部分の削除のみ
 10

  8. 解法 - 初期 -
 • 初期:ResNet50
 ◦ 画像を丸く切り取るCricle Crop、前回のコンペ1thの手法Ben Cropを試すが大体何もしな

    いほうがLBが高い→重い前処理は必要ないっぽい 
 ▪ models we all used here are way more complex (in a number of parameters) and have much bigger capacity and generalization power, so preprocessing has vanishing impact. ( from 10th solution )
 ▪ the image size and shape information is still useful, so I stopped focusing on preprocess. I'm now confident that this thoughts was somehow right after checking private score because it's incredibly higher than previous competition. (form 13th solution )
 
 ◦ 2015でPretrainして0.72
 ◦ Augmentation(zoom、rotate etc … )で0.76 
 11

  9. 解法 - 中期 後期 -
 • 中期-後期:EfficientNetB3
 ◦ Pretrain +

    5-Fold Average
 ▪ image size 256 0.805 
 ▪ image size 300 0.808 
 ◦ image size 300 に IDRID を足して 0.810 
 ◦ image size 256と300 でアンサンブル 0.816 
 ▪ image size 300 は TTA x5 
 ▪ Publicでは+0.008だったがPrivateでは+0.0008 
 12

  10. 反省と次に向けて
 • LuckとDiscussionが命綱
 ◦ → 基礎知識の増強。論文読んでタスク周辺知識も補う 
 • 途中のGPU制限で泣きそうになった 


    ◦ → 週時制限も加わったので、計算資源を別に持つようにする 
 ▪ 気軽にカーネルだけでやっていける最後の画像コンペになったのでは? 
 ◦ → 効率よく実験が回せるようにパイプライン整備する 
 ▪ yaml ? catalyst ? Lightning ? 
 • 持続可能性を保ちつつメダルが取れる様になる 
 ◦ コンペ毎に体力と気力を使い切ってる 
 ◦ 金(Master)を目指す
 14

  11. Appendix - 1th Solution -
 • Validation Strategy 
 ◦

    LocalとLBを一致させることができなかった。discussionとkernelから他の参加者も同様だったので、 PublicLBを頼った
 • Preprocess
 ◦ なし。シンプルなリサイズのみ 
 • Image size
 ◦ 過去のコンペから大きいsizeでよい結果が得られることが分かった。384を超えると特に効果的では なくなったが、Privateでは効果が得られそうという判断 
 • Trainig
 ◦ 4つのモデルを使用したが、異なるシードで使ってペアで評価した(4x2=8モデル) 
 • Generalized Mean Pooling 
 16