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

Lecture materials at the University of Tokyo School of Medicine

Maxwell
October 25, 2021

Lecture materials at the University of Tokyo School of Medicine

Materials for the lecture held on October 25, 2021, at the University of Tokyo

Updated: Jul.2022

Maxwell

October 25, 2021
Tweet

More Decks by Maxwell

Other Decks in Science

Transcript

  1. 機械学習 コンペティション Kaggle のススメ

  2. 平松 雄司 東京大学 未来ビジョン研究センター(アクサ生命保険から出向) Senior Data Scientist,Kaggle Master, A.I.A.J 

    保険数理 / データ分析 ・アクチュアリー(収益管理 / プロジェクション) ・データサイエンティスト(予測モデル / 最適化 / 教育) 現在は,アクサ生命 から 東京大学 へ研究員として出向 主に医療データの分析・研究  本やブログ記事の執筆 Kaggle への参加
  3.  2019 / 10 / 09 発売後,ロングセラー Kindle 版も同時発売 ¥

    3,608 (税込み) 技術評論社の EPUB/PDF でも発売中 https://gihyo.jp/dp/ebook/2019/978-4-297-10844-1  データ分析コンペティションプラットフォームである Kaggle における数々の分析手法・テクニックを紹介  平松は 2 章と 7 章の一部 を担当 2 章:評価指標の最適化,リーク 7 章:アンサンブル,スタッキング  Kaggle に限らず,実務でも活かせる内容になっています https://amzn.to/2lDkWlf
  4. 今年も Kaggle のコンペを 題材としたお話をします 去年の資料はコチラ https://speakerdeck.com/hoxomaxwell/kaggle-aptos-2019-at-u-tokyo-med

  5. 01 Kaggle とは? 02 HuBMAP Hacking the Kidney

  6. Kaggle とは? 01

  7.  誰でも参加でき世界中の分析者と競争することができる  どの分野の企業や組織でもコンペを開催可能  提示されたビジネス課題を解決するモデルを作成し, 決められた条件下で予測結果の精度を競うのが一般的 (中にはデータからビジネス課題を提案したりするコンペも)  上位者にはメダルや賞金が与えられるが

    メダルの獲得数・種類によって付与される称号が人気 (近年は学生のうちに Master/GrandMaster を目指す方も)  プログラミング言語は基本的には Python か R Kaggle とは データ分析のスキルを競い合うオープンプラットフォーム https://www.kaggle.com/competitions
  8. メダル・称号  コンペティション  データセット  ノートブック(プログラミングコード)  ディスカッション の四種別に,メダル・称号が付与される

    (コンペ以外のメダルは参加者による voting 式) Kaggle Progression System: https://www.kaggle.com/progression
  9. Kaggle における医療系コンペ  コロナ禍以降,開催数が増加傾向  深層学習系のコンペ(特に画像系)が主流 (強化学習系などは医療領域ではまだ開催無)  医療領域における AI

    の活用の有用性 (疾患の早期発見につながる診断補助)
  10. https://youtu.be/oOeZ7IgEN4o?t=145 糖尿病網膜症の重症度診断は眼科医の中で一貫していない TensorFlow DEV SUMMIT 2017 https://www.kaggle.com/c/a ptos2019-blindness- detection AI

    の活用がよりよい診断を実現する可能性
  11. HuBMAP Hacking the Kidney 02

  12. タスクとデータ PAS 染色された腎生検組織標本から 糸球体を segmentation するタスク Whole Slide Image 一枚あたり数GBの巨大画像

    train : 15 WSIs public : 5 WSIs private : 10 WSIs 評価指標は Dice Coefficient(F1) typically 100 - 350 um glomeruli WSI
  13. None
  14. Public LB Private LB  コンペ開催期間中に目安となる順位  test data の

    10 - 20 % くらいを使用して スコア計算されることが多い  実際の順位はコンペ終了後にこちらで決定  public で未使用の test data で評価されるのが基本  過学習によるモデルの誤評価を防ぐための措置 Public LB / Private LB
  15. データの品質問題 修正前のデータ 修正後のデータ マスクの位置がどういうわけかズレていた! 評価指標である Dice Coefficient はピクセル単位で予測と正解の一致度合いを計算するので, 不正確なマスクはコンペの正当性の面で致命的 参加者らの指摘により

    コンペの中盤で修正
  16. WSI をどのようにあつかうか? Training Inference U-Net 等のセグメンテーションモデルに入力可能なサイズ (e.g. 256 x 256)にパッチ化して学習

    パッチ化の仕方は - ダウンスケールする - 信号がない部分は取り除く - ランダムに切り出す - 幾分かオーバーラップさせて座標順に切り出す など,色々なやり方が考えられるが, これらの工夫は Augmentation の検討をしているのに近い パッチの端部分はパターンの突然欠損により, マスクの推論がうまくいかない場合が多いため(Edge effect) 例えば,一定割合でオーバーラップさせて推論する オーバーラップ部はオーバーラップした回数で重み調整を行い, 必要に応じたアップスケールも行った上で WSI に変換する overlapping WSI Predicted Mask WSI extract a patch
  17. コンペが終わったら top solution に学ぶ 多くの top solution で 共通している 手法は

    汎用的に有効な手法であることが多い
  18. Predicted Mask WSI 1st place solution https://github.com/tikutikutiku/kaggle-hubmap https://www.kaggle.com/c/hubmap-kidney-segmentation/discussion/238198 1024 1024

    320 320 WSI Extract patches Decoder Block Down-scaled patches SE-ResNeXt 101 backbone Balanced patch sampling Encoder Block classification head segmentation head Hypercolumns Deep Supervision 1 2 3 Predicted patch Total Segmentation Loss: Segmentation Loss + Deep Supervision Loss Segmentation Loss: BCE + Lovasz-hinge Deep Supervision Loss: 0.1 * (BCE + Lovasz-hinge) only for non-empty mask Classification: BCE 1 2 3 1 2 Copyright 2021 Maxwell_110  1024 x 1024 パッチを 512 ずつ overlap しつつ切り出し 320 x 320 にダウンスケール  生検患者の ID をもとに 4 Fold CV  学習時には,マスクの占める面積に応じたバランスがとれる ようにパッチをサンプリング  SE-ResNeXt-101 backbone U-Net + Classification Head + Deep Supervision (Lee et al., 2014) + Hypercolumns (Hariharan et al., 2014)  推論されたパッチの中心部だけを使用して WSI に復元 (マスク有無の分類出力を利用して計算コストを低減) Augmentations: HorizontalFlip RandomRotate, ShiftScaleRotate CoarseDropout GaussianBlur, GaussNoise HueSaturation RandomBrightnessContrast
  19. Decoder Block Encoder Block https://www.kaggle.com/c/hubmap-kidney-segmentation/discussion/238013 https://github.com/Shujun-He/Hubmap-3rd-place-solution/ Copyright 2021 Maxwell_110 3rd

    place solution WSI Extract patches 1024 1024 512 512  1024 x 1024 パッチを順に切り出し 512 x 512 にダウンスケール  5 KFold CV  ResNeXt 50 / 101 backbone U-Net (2 model ensemble) + Hypercolumns (Hariharan et al., 2014)  様々な Data Augmentations  推論されたパッチの中心部だけを使用して WSI に復元 ResNeXt 50/101 backbone Down-scaled patches Hypercolumns segmentation head Predicted patch Predicted Mask WSI Augmentations: HorizontalFlip, VerticalFlip, RandomRotate, ShiftScaleRotate ElasticTransform GaussianBlur, GaussNoise OpticalDistortion, GridDistortion, AffineTransform HueSaturation, CLAHE RandomBrightnessContrast Coutout Loss: BCE Augmentation 1st place solution と共通しているのは - Augmentations - Hypercolumns - パッチの中心部を抜き出して推論 多くの segmentation タスクで 普遍的に通用する可能性が高い (パッチ中心部抜き出しは WSI の場合)
  20. 最近ローンチされた医療系コンペ 神経細胞のインスタンスセグメンテーション https://www.kaggle.com/c/sartorius-cell-instance-segmentation/overview 開催元: ザルトリウス(独の医薬品製造機器メーカー) 評価指標: 複数 IOU 閾値別に求めた precision

    の平均 開催期間: Oct. 14. 2021 - Dec. 31. 2021(UTC; 2.5 months) データ: Train ~600 images,Test ~240 images 提出タイプ: Kaggle Kernel 上で推論のみコードで実行(<= GPU 9h) Raw image (PNG format) Masks Credit to: https://www.kaggle.com/ihelon/cell-segmentation-run-length-decoding 一枚の中に多数のマスクが存在 704 pixcels 520 pixcels
  21. Supplement

  22. Submission on kernel environment • Approximately 8 hours running (5

    folds, 3 TTA, 2 models) • Good correlation between local CV and public LB (Alghough there are deviations..., maybe due to the d48 image) • Local CV: 0.9429 Public LB: 0.927 Private LB: 0.947 Preprocessing / Augmentation • Naive normalization; divided by 255 • 5 folds; 3 WSI for each fold • Augmentations (p=0.5) - Horizontal/Vertical Flip (p=0.5) - RandomRotate90 (p=0.5) - Rotate (-40/+40, reflect101, p=0.5) - ShiftScaleRotate (scale: -0.2/0.1, p=0.5) - OneOf (p=0.5) RandomBrightnessContrast (B: 0.5, C: 0.1) HueSaturationValue (H: +-20, S: +-100, V: +-80) - One of (p=0.5) Cutout (holes: 100, size: 1/64, white RGB) GaussianNoise - One of (p=0.5) ElasticTransform GridDistortion (steps: 5, limit: 0.3) OpticalDistortion (distort: 0.5, shift: 0.0) Cutting out patches • Remove black/white pathes for training - White (R:217, G:213, B:217) color information was used to add noise and fill the edges of the images in augmentation. - Not removing black/white pathes for validation images • Different scale patches for ensemble Group A (for final submission): Size = 352, Down scale = 4 Size = 512, Down scale = 2 Group B: Size = 352, Down scale = 4 Size = 640, Down scale = 2 • In addition to cutting out the normal patches, also cutting out patches shifted by a quarter of the patch size. Psuedo - Labeled 5 Mask-WSIs (Unfortunately PL was useless for private score...) Remove black / white patches for training Decoder Block Encoder Block 15 WSIs (Whole Slide Images) Predicted 5/10 Mask-WSIs for Public/Private 1 2 U-Net type model Back bone: EfficientNet B3 (ImageNet pretrained) 3 4 5 Resources: TITAN RTX, 2080Ti x 2, 1080Ti x 2 Copyright 2021 Maxwell_110 Size: 352 x 352 Down scale: 4 + Size: 640 x 640 Down scale: 2 HuBMAP - Hacking the Kidney Model Pipeline 17 th place 6 1 Training • BCE + Adam(1stLR: 7.5e-4, 2ndLR: 2.5e-4) • BS: 8 (size 640), 12 (size 512), 16 (size 352) • Patience: ES = 10, RLRoP = 3 • Training with train images only at first, and then with train + public(psuedo) images • Alternate training with psuedo labels Step 1: Train with Group A, and predict pseudo labels for public images Step 2: Next, Train with Group B and pseudo labels, and predict pseudo labels Step 3: Repeat the aboves sufficiently Step 4: Submit predictions trained with Group A (+ pseudo labeld public images) 3 2 Size: 352 x 352 Down scale: 4 + Size: 512 x 512 Down scale: 2 B A Prediction + Tiling predicted patches • TTA: Raw, HorizontalFlip, VerticalFlip • Overlapping by 1/16 image size for tiling • Naive averaging for ensemble (folds and models) • Threshold optimization with train images (th: 0.40) 6 5 4