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

[第4回 全国医療AIコンテスト] Kaggleから学んだ医療画像データ解析の取り組み方

Inoichan
March 19, 2022

[第4回 全国医療AIコンテスト] Kaggleから学んだ医療画像データ解析の取り組み方

第4回 全国医療AIコンテストの講演「Kaggleから学んだ医療画像データ解析の取り組み方」で用いた発表資料です。
Kaggleの画像コンペに取り組んでみたい/取り組んだけどいまいち進め方が分からない、といった方を対象に自分がどういう風に取り組んでいるかをまとめました。基本的な内容ではありますが少しでも参考になれば幸いです。
イベントリンク:https://medical-ai-contest.org/index.php/program/

Inoichan

March 19, 2022
Tweet

More Decks by Inoichan

Other Decks in Programming

Transcript

  1. Kaggleから学んだ医療画像データ
    解析の取り組み方
    井ノ上雄一

    View Slide

  2. 自己紹介
    ❖ 井ノ上雄一 (@inoichan)
    ❖ 京都大学薬学研究科 博士
    ❖ TURING株式会社 インターン(正社員 4月〜)
    ❖ Rist株式会社 AIエンジニアインターン
    ❖ 松尾研究所 チーフAIエンジニア
    ❖ Kaggle Competition Grandmaster

    View Slide

  3. 今日お話しすること
    ● 近年Kaggleで開催されていた医療画像コンペ
    ● コンペに参加したらすること
    ● 勉強としてやったこと
    【対象】
    ★ 画像コンペをやってみたい人
    ★ 画像コンペやったことあるけどいまいち取り組み方がわからない人
    ★ 3年前の自分

    View Slide

  4. 2019~2021年にKaggleで開催された医療画像コンペ
    ➔ 惨敗したものも多いがとにかく参加した。
    気道

    View Slide

  5. 2019~2021年にKaggleで開催された医療画像コンペ
    ➔ 惨敗したものも多いがとにかく参加した。
    少しでも興味がある人はとにかくコンペに参加
    しましょう!!!
    気道

    View Slide

  6. コンペに参加したらすること

    View Slide

  7. コンペに参加したらすること
    ➔ どういうデータを扱うのか。どういうラベルがあるのか。どういう分布か。
    とにかくデータを表示させて眺めてみる。雰囲気を掴む。気が向くままデータをいじる。
    戦略のイメージをふくらませる。
    EDA(探索的データ解析)のNotebookはコンペの初期の頃から出ることが多い。
    ★ データを見る!
    Kaggle, Visual In-Depth EDA – VinBigData Competition Data,
    https://www.kaggle.com/c/bengaliai-cv19/discussion/136021

    View Slide

  8. コンペに参加したらすること
    ➔ コンペの評価指標を手元でちゃんと計算できるようにする。
    評価指標の特性を理解する。モデル学習中にモニターできるようにする。
    ★ 評価指標を確認する!
    評価指標のMacro Recallはデータが少数しかないクラスの
    予測を増やすことで、少数クラスの Recallを上げることがで
    きる。
    Kaggle, 14th Place - Hacking Macro Recall - Chris Writeup,
    https://www.kaggle.com/c/bengaliai-cv19/discussion/136021

    View Slide

  9. コンペに参加したらすること
    ➔ コンペの評価指標を手元でちゃんと計算できるようにする。
    評価指標の特性を理解する。モデル学習中にモニターできるようにする。
    (参考になるNotebookやDiscussionを確認する。過去コンペを見る。)
    ★ 評価指標を確認する!
    物体検出でよく用いられる mAPの特性やスニペットを詳しく解説してくれている。
    Kaggle, mAP understanding with code and its tips,
    https://www.kaggle.com/its7171/map-understanding-with-code-and-its-tips

    View Slide

  10. コンペに参加したらすること
    ➔ とても重要!特にモデルの評価系を確立することは何よりも大切!
    まずはシンプルなパターンで作る。次に1つだけ変更を加えて手元でモニターしてい
    る指標の変化を確認する(画像サイズ、Augmentation)。SubmitしてLeader board
    のスコア(通称Public LB)の値と見比べる。手元とPublic LBで極力近い値が出てい
    るか?相関しているか?念入りに検証する。
    ★ ベースラインモデルを作成する!
    訓練データ/検証データ (テストデータ)の分け方は特に注意する。コン
    ペの説明やメタデータをよく見る。

    View Slide

  11. A good CV is half of success. I won’t go to the next step if I can’t
    find a good way to evaluate my model.
    *CV: cross validation, モデルを評価するためにデータを分割する方法の一つで非常によく使われる。
    コンペに参加したらすること
    ➔ とても重要!特にモデルの評価系を確立することは何よりも大切!
    まずはシンプルなパターンで作る。次に1つだけ変更を加えて手元でモニターしてい
    る指標の変化を確認する(画像サイズ、Augmentation)。SubmitしてLeader board
    のスコア(通称Public LB)の値と見比べる。手元とPublic LBで極力近い値が出てい
    るか?相関しているか?念入りに検証する。
    ★ ベースラインモデルを作成する!
    Kaggle Blog, Profiling Top Kagglers: Bestfitting, Currently #1 in the World,
    https://medium.com/kaggle-blog/profiling-top-kagglers-bestfitting-currently-1-in-the-world-58cc0e187b

    View Slide

  12. コンペに参加したらすること
    ➔ とても重要!特にモデルの評価系を確立することは何よりも大切!
    まずはシンプルなパターンで作る。次に1つだけ変更を加えて手元でモニターしてい
    る指標の変化を確認する(画像サイズ、Augmentation)。SubmitしてLeader board
    のスコア(通称Public LB)の値と見比べる。手元とPublic LBで極力近い値が出てい
    るか?相関しているか?念入りに検証する。
    ➔ 公開されているNotebookを活用する。はじめはNotebookを参考にしてもいいし、
    自分で作ってNotebookと照らし合わせながら要所を確認していくのもあり。
    NakamaさんやTitoさんのように強い方が素晴らしいベースラインを公開してくれる
    ことも多いので、積極的に活用して自分のベースラインの質を上げる。
    ★ ベースラインモデルを作成する!

    View Slide

  13. コンペに参加したらすること
    ➔ 分類問題では簡単に予測できたサンプル、誤分類したサンプル、Confusingなサン
    プルを可視化してみる。CAMを出してみる。Segmentationや物体検出の場合は、
    予測結果を可視化してみる。
    ➔ ベースラインが大きく間違っていないことの確認にはなる。リーク対策にもなる。ラ
    ベルノイズが見えてくる。
    ★ 評価指標以外も確認する!

    View Slide

  14. 良いベンチマークができたら
    ➔ まずはパラメタを変更するだけでも良いから、とにかく実験を回して感覚を掴んでい
    く。
    ◆ 画像サイズ
    ◆ Augmentation
    ◆ モデルサイズ(Efficientnet B0 ~ B7)
    これがうまくいったから金メダル!とはいかないけど、強い人たちはちゃんと抑えている。
    ★ とにかく実験する!
    ベースライン+大きい画像サイズで銅メダルくらいはとれるこ
    とも...(あまり誇れることではないが ..)

    View Slide

  15. 良いベンチマークができたら
    ➔ まずはパラメタを変更するだけでも良いから、とにかく実験を回して感覚を掴んでい
    く。
    ◆ 画像サイズ
    ◆ Augmentation
    ◆ モデルサイズ(Efficientnet B0 ~ B7)
    これがうまくいったから金メダル!とはいかないけど、強い人たちはちゃんと抑えている。
    ★ とにかく実験する!
    メインアイディアとして画像サイズを大きく設定していた。もち
    ろんそれだけではないが、基本的なところをちゃんと試してお
    くことは重要。
    Kaggle, 6th place solution,
    https://www.kaggle.com/c/ranzcr-clip-catheter-line-classification/discussion/226616

    View Slide

  16. 良いベンチマークができたら
    ➔ まずはパラメタを変更するだけでも良いから、とにかく実験を回して感覚を掴んでい
    く。
    ◆ 画像サイズ
    ◆ Augmentation
    ◆ モデルサイズ(Efficientnet B0 ~ B7)
    これがうまくいったから金メダル!とはいかないけど、強い人たちはちゃんと抑えている。
    ★ とにかく実験する!
    解像度が重要と気づいた。解像度を稼ぐために、注目領域を
    クロップするようなDetectionモデルを作成した。
    Kaggle, 1st place solution with code,
    https://www.kaggle.com/c/rsna-str-pulmonary-embolism-detection/discussion/194145

    View Slide

  17. 良いベンチマークができたら
    ➔ まずはパラメタを変更するだけでも良いから、とにかく実験を回して感覚を掴んでい
    く。
    ◆ 画像サイズ
    ◆ Augmentation
    ◆ モデルサイズ(Efficientnet B0 ~ B7)
    これがうまくいったから金メダル!とはいかないけど、強い人たちはちゃんと抑えている。
    ★ とにかく実験する!
    メインアイディアとして、 Augmentationの最適化をあげてい
    る。
    Kaggle, RANZCR 1st Place Soluiton Cls Model (small ver.),
    https://www.kaggle.com/haqishen/ranzcr-1st-place-soluiton-cls-model-small-ver

    View Slide

  18. 良いベンチマークができたら
    ➔ まずはパラメタを変更するだけでも良いから、とにかく実験を回して感覚を掴んでい
    く。
    ◆ 画像サイズ
    ◆ Augmentation
    ◆ モデルサイズ(Efficientnet B0 ~ B7)
    これがうまくいったから金メダル!とはいかないけど、強い人たちはちゃんと抑えている。
    ★ とにかく実験する!
    肺のCT画像を用いた別のコンペティションでも、先程の
    Augmentationを使うことで安定して良い精度が出るように
    なった。
    Kaggle, 12th place solution,
    https://www.kaggle.com/c/siim-covid19-detection/discussion/264311

    View Slide

  19. 良いベンチマークができたら
    ➔ 画像以外の情報は使えないか?
    ◆ メタデータの使用
    ◆ マスクの使用
    ★ とにかく実験する!
    Kaggle, 2nd place solution,
    https://www.kaggle.com/c/trends-assessment-prediction/discussion/162765
    3DCNNとテーブルデータの予測値を Stackingすることで精度
    が大きく向上した。

    View Slide

  20. 良いベンチマークができたら
    ➔ 画像以外の情報は使えないか?
    ◆ メタデータの使用
    ◆ マスクの使用
    ★ とにかく実験する!
    Kaggle, 2nd place solution,
    https://www.kaggle.com/c/trends-assessment-prediction/discussion/162765
    CNNで特徴抽出したEmbeddingと、テーブルデータを 2層の
    ニューラルネットに通した Embeddingを結合して予測を行って
    いる。
    さらに、外部データについて追加で評価指標をモニターするこ
    とで、より安定した評価系を構築している。

    View Slide

  21. 良いベンチマークができたら
    ➔ 画像以外の情報は使えないか?
    ◆ メタデータの使用
    ◆ マスクの使用
    ★ とにかく実験する!
    Kaggle, 1st Place Solution. Sequential model wins,
    https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/
    117210
    CTの位置情報を用いて、前後の画像の情報を 1DCNN
    やRNNで加味したモデルを作成している。

    View Slide

  22. 良いベンチマークができたら
    ➔ 画像以外の情報は使えないか?
    ◆ メタデータの使用
    ◆ マスクの使用
    ★ とにかく実験する!
    Kaggle, 1st Place Solution,
    https://www.kaggle.com/c/ranzcr-clip-catheter-line-classification/discussion/2
    26633
    訓練データの一部に追加のアノテーションが合った。
    それを学習させ、マスクとして元の画像と合わせて入
    力に使用している。

    View Slide

  23. 良いベンチマークができたら
    ➔ 画像以外の情報は使えないか?
    ◆ メタデータの使用
    ◆ マスクの使用
    ★ とにかく実験する!
    Kaggle, [placeholder] lb 0.450 (study only) starter kit!,
    https://www.kaggle.com/c/siim-covid19-detection/discussion/240233
    Kaggle, 12th place solution,
    https://www.kaggle.com/c/siim-covid19-detection/discussion/264311
    物体検出のBounding boxの情報をセグメンテーション
    のように用いて、注目したい領域も一緒に学習させる
    ことで精度を向上をさせた。

    View Slide

  24. 良いベンチマークができたら
    ➔ アイディアをコードに落とし込む。
    ◆ 時間がかかるので、思いついたらとにかく早くコードを書いてみる。
    ◆ 上がらなくて当たり前、当たったらチャンス。
    ◆ 自分がやったこと無いことに挑戦する。うまくいかなくても経験として成長できる。
    ◆ 素人思考大歓迎!
    ★ とにかく実験する!
    Kaggle, 5th place solution, 3D fMRI part,
    https://www.kaggle.com/c/trends-assessment-
    prediction/discussion/162742
    3DCNNも用いることで、精度が
    かなり向上した。

    View Slide

  25. 良いベンチマークができたら
    ➔ アイディアをコードに落とし込む。
    ◆ 時間がかかるので、思いついたらとにかく早くコードを書いてみる。
    ◆ 上がらなくて当たり前、当たったらチャンス。
    ◆ 自分がやったこと無いことに挑戦する。うまくいかなくても経験として成長できる。
    ◆ 素人思考大歓迎!
    ★ とにかく実験する!
    Kaggle, 1st Place Solution,
    https://www.kaggle.com/c/land
    mark-recognition-2020/discussi
    on/187821

    View Slide

  26. 良いベンチマークができたら
    ➔ アイディアをコードに落とし込む。
    ◆ 時間がかかるので、思いついたらとにかく早くコードを書いてみる。
    ◆ 上がらなくて当たり前、当たったらチャンス。
    ◆ 自分がやったこと無いことに挑戦する。うまくいかなくても経験として成長できる。
    ◆ 素人思考大歓迎!
    ➔ Discussionを読む。
    ◆ 重要なアイディアはコンペ中に共有されていることも多い
    ◆ 自分で投稿することで学びが得られることも
    ◆ (Upvoteされると嬉しい)
    ★ とにかく実験する!

    View Slide

  27. 勉強としてやったこと

    View Slide

  28. 勉強としてやったこと
    ★ 参加したコンペ、過去コンペの解法をまとめる。
    まとめたらぜひ公開を!
    【Kaggle】2020年に開催された画像分類コンペの
    1位の解法
    を紹介します,
    https://qiita.com/inoichan/items/140cf018d31151d2701a
    Speaker Deck, Inoichan,
    https://speakerdeck.com/inoichan

    View Slide

  29. 勉強としてやったこと
    ★ Youtubeにも勉強になる資料がたくさんある!
    YouTube, Kaggle,
    https://www.youtube.com/c/kaggle/playlists
    YouTube, Takami Sato,
    https://www.youtube.com/channel/UCiECS_auJL
    NpFsvjTi1WuxQ/videos?view=0&sort=p&flow=grid

    View Slide

  30. 最後に
    ➢ 興味があればとにかくコンペに出てみましょう!
    ○ 手を動かした分だけ学びがある。
    ○ 少しでも触っていると解法のわかり味が増す。
    ➢ Kaggleのコミュニティに参加してみましょう!
    ○ KaggleのDiscussionに投稿してみる。
    ○ 日本のKagglerのSlackがある。
    ○ TwitterにもたくさんKagglerがいる。

    View Slide