Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

良いベンチマークができたら ➔ まずはパラメタを変更するだけでも良いから、とにかく実験を回して感覚を掴んでい く。 ◆ 画像サイズ ◆ 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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

良いベンチマークができたら ➔ 画像以外の情報は使えないか? ◆ メタデータの使用 ◆ マスクの使用 ★ とにかく実験する! 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の情報をセグメンテーション のように用いて、注目したい領域も一緒に学習させる ことで精度を向上をさせた。

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

勉強としてやったこと

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

勉強としてやったこと ★ 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

Slide 30

Slide 30 text

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