SlideShare a Scribd company logo
1 of 15
Download to read offline
Data  Science  Bowl  2017
  Winning  Solutions  Survey
Takami  Sato
17-4-18DSB2017  Solutions  Survey 1
Data  Science  Bowl  2017とは
17-4-18DSB2017  Solutions  Survey 2
CT画像(DICOM形式)からの肺がん検知
⼀一⼈人当たり200スライスぐらいの画像があり、学習データは1,500⼈人ほど
h"ps://docs.google.com/presenta3on/d/
1t40mZHzCdogvV3XeuK48SnKrA9tGK5eoaYoeBDYqoHs/edit#slide=id.g1cd534afe0_0_34	
  
有志が⾒見見つけた肺がんの例例
h"ps://www.kaggle.com/c/data-­‐science-­‐bowl-­‐2017	
  
注意
ある程度解釈を加えています
詳細は出典確認お願いします
17-4-18DSB2017  Solutions  Survey 3
2位の手法
17-4-18DSB2017  Solutions  Survey 4
環境
•  Keras  +  windows  64bit
•  ⾃自前の可視化のツール
概要
•  LIDCとLUNA16のデータを使⽤用
•  医者の診断とLUNA16のラベルを使⽤用
•  32*32*32の3d  convnetで学習
•  セグメント切切りはせず、画像全体を使⽤用
•  最⼤大腫瘍の場所から、癌がありそうなスライスを検知
•  疑わしいスライスを、U-‐‑‒Netで腫瘍の場所を検知
•  最後に当該スライスの疑わしい腫瘍の数と諸々特徴をxgboost
•  Public  LBを信⽤用しない
h"ps://www.kaggle.com/c/data-­‐science-­‐bowl-­‐2017/discussion/31551	
  
2位の手法
17-4-18DSB2017  Solutions  Survey 5
•  前処理理
•  全てを1x1x1  mmにスケーリング(恐らく1  pixcel)
•  LUNAとDSBデータを全て同じ向きに変換
•  LUNAとLIDCをあわせるために座標を全て0〜~1にスケール
•  教師ラベル
•  LIDCの医者の診断は全て正とした。(診断医師が⼀一⼈人でも)
•  LUNA16のラベルも正例例として追加
•  負例例を増やすために、肺以外の画像も追加
•  フォーラムの肺部分抽出⼿手法で、抽出されなかった部分を使⽤用
•  40,000データ
•  (100,000の肺以外画像、10,000の偽陽画像、2000のLIDC正例例)
•  偽陽データは、腫瘍だけど悪性でないもの
•  モデルが出来上がった後、⽬目検して癌と偽陽部分にアノテーションを追加
•  LUNA16では3cm以上の腫瘍が正例例になっていないので除外
2位の手法
17-4-18DSB2017  Solutions  Survey 6
•  3d  convnetでの肺腫瘍と癌のあるスライス検知
•  32x32x32  3D  convnetを使⽤用
•  バッチ版のC3Dの構成(VGGに似ている)
•  ネットワークのチューンには殆ど時間を使っていない
•  腫瘍かどうかと悪性かどうかを、同時にマルチタスク学習
•  この⽅方法は、Julianさんでは良良かったがDanielさんは2ステップ
•  データが不不均衡なので、1:20になるよう正例例をoversampling
•  少しの正例例しか必要なかったのには驚きとのこと
•  12m格⼦子のストライドと3種類のズームで癌の組織の場所を検知
•  最⼤大腫瘍とそのz座標(スライス位置)のみ後⼯工程で使⽤用
•  疑わしい腫瘍検知
•  LUNAや過去のDSBから肺がん腫瘍の画像を収集
•  ⼩小さいU-‐‑‒Netを使⽤用して、疑わしいスライスから怪しい腫瘍を抽出
•  全⾝身データや肺気腫のデータも⼊入れたが、⼤大きくは改善せず
2位の手法
17-4-18DSB2017  Solutions  Survey 7
•  最終モデル
•  xgboostで学習
•  ズームの種類、スライスの位置、怪しい組織の数をデータに学習
•  min_̲child_̲weightを60にして、過学習を抑制
•  ⼿手元CVスコアは0.39、最終スコアは0.40117
•  Danielsさんとのアンサンブル
•  彼は64x64x64のResnetライクなモデルを使⽤用
•  肺腫瘍検知と悪性腫瘍検知の2段階
•  LIDCの腫瘍情報も使⽤用
•  2⼈人の予測を平均して、最終submit
7位の手法
17-4-18DSB2017  Solutions  Survey 8
h"ps://www.kaggle.com/c/data-­‐science-­‐bowl-­‐2017/discussion/31576	
  
環境 •  TensorFlow  +  Ubuntu  14.04
概要
•  LUNAとLIDCの腫瘍アノテーションを信頼
•  その後、DSBの悪性腫瘍ラベルを使⽤用
•  以下の3ステップで予測を実施
•  ピクセル毎の腫瘍の存在確率率率計算
•  腫瘍領領域の検知
•  悪性腫瘍の検知
•  モデルチューニングには多くの時間を割いていない
7位の手法
•  ピクセル毎の腫瘍の存在確率率率計算
–  128x128のU-‐‑‒Netを使⽤用
–  LUNAとLIDCの腫瘍のアノテーションを使⽤用
–  ランダムなスライスを作って学習
–  最終的には軸に沿ったスライスに予測し、3次元腫瘍存在確率率率テンソルを計算
•  各ピクセル3回計算されるので平均する
•  腫瘍領領域の検知
–  以下の⼿手順で腫瘍の場所を特定
•  ⼩小さい閾値を設定(0.2)
•  閾値以上のpixcelの塊を列列挙
•  塊のサイズが⼀一定以上だった場合は、閾値を上げて再実⾏行行
–  腫瘍の中⼼心から64x64x64の領領域を切切り取る
–  領領域の腫瘍存在確率率率の和が⼤大きい順に20領領域を選択
–  LIDCの悪性腫瘍情報を使うべきだったとの事
17-4-18DSB2017  Solutions  Survey 9
7位の手法
•  悪性腫瘍の検知
–  ⼀一⼈人当たり、20個の64x64x64のデータが存在
–  3D  resnetを使⽤用
–  1チャネル⽬目にピクセルの値を⼊入れて、2チャネル⽬目に腫瘍存在確率率率を⼊入れた
–  (20,  64,  64,  64,  2)の5次元テンソルがラベルに紐紐づく
–  3D  resnet後は20個の予測が出揃い、そのmax値を取るのが最も良良かった
•  Noisy-‐‑‒ANDやNoisy-‐‑‒ORなども試したらしい
•  解釈としても妥当
–  ここに機械学習⼿手法を⽤用いたが、改善せず
•  腫瘍存在確率率率の並び順は間違ってる家の姓があり、並び順に依存しないmax等が良良いとのこと
17-4-18DSB2017  Solutions  Survey 10
9位の手法
17-4-18DSB2017  Solutions  Survey 11
h"ps://www.kaggle.com/c/data-­‐science-­‐bowl-­‐2017/discussion/31548	
  
h"ps://eliasvansteenkiste.github.io/machine%20learning/lung-­‐cancer-­‐pred/	
  
	
環境 •  不不明
概要
•  ブログ記事が詳細に書かれている
•  予測は以下のステップで構成
•  腫瘍検知
•  良良性腫瘍の除外
•  悪性腫瘍確率率率の付与
•  最終モデル
•  LBがハックされて使い物にならず、モチベ低下した
9位の手法
17-4-18DSB2017  Solutions  Survey 12
•  腫瘍検知
–  LUNAデータのアノテーションで腫瘍の位置を学習
–  1  voxcelが1x1x1  mm  cubeになるようにスケーリング
–  学習にはU-‐‑‒Netベースのネットワークを使⽤用
–  ⽬目的関数は、Dice類似度度を使⽤用
–  LUNAのアノテーションは32x32x32だが、⼊入⼒力力は64x64x64にして
内部のアノテーションを回転したり歪ませたりして、データを増加
–  検知された領領域からDifference  of  Gaussian法で腫瘍を検知
–  このままだと、⾮非常に多くの腫瘍が検知されるので、次に良良性腫瘍を除外する
9位の手法
17-4-18DSB2017  Solutions  Survey 13
•  良良性腫瘍の除外
–  肺領領域の検知
•  肺領領域以外の腫瘍は、肺がんではないので除外
•  肺領領域の検知⽅方法は、カーネル上で議論論しているのを参考にした
•  最終的には3Dで肺を含む凸包から、肺以外っぽい領領域を除外するアプローチ
–  3D  Resnetベースモデルでの良良性腫瘍の除外
•  LUNAの偽陽性判定トラックのラベルを使⽤用
•  48x48x48サイズの⼊入⼒力力のネットワークを作成
•  詳細はブログを参照
•  悪性腫瘍の予測
–  LIDCデータに腫瘍の悪性度度のデータがあることを、終了了2週前に発⾒見見
–  FPRネットワークベースのモデルで各腫瘍に悪性度度を付与
9位の手法
17-4-18DSB2017  Solutions  Survey 14
•  最終モデル
–  腫瘍の悪性度度を、患者の癌ラベルに変換する
–  2つのアプローチを使⽤用
•  P(患者が肺がん)  =  1  –                (腫瘍iが良良性)
–  直感的だが、ある腫瘍が悪性だとモデルが確信している場合、それ以上学習が進まない
•  Log  Mean  Exponet
–  ログをとって、⼩小さい確率率率は超⼩小さくした状態で平均取って戻すので、
ソフトバージョンのmax関数的に動く
–  モデルと共にFine-‐‑‒tuneできる
–  上記⼿手法で30予測を作成し、アンサンブルして最終スコアを作成
•  最終の2  submitを以下で構成
•  Defensive  Ensemble
–  各モデルの混合⽐比率率率をCVで決定
–  ただし、結果的に最良良モデルの予測1つだけが選択された
•  Aggressive  Ensemble
–  どのモデルを使うかをCVで学習して、選ばれたモデルの単純平均で構成
意見募集中
スピード重視で資料を作ったので
おかしな点がありましたら、
Twitterの@tkm2261までメンション頂けると助かります
17-4-18DSB2017  Solutions  Survey 15

More Related Content

More from Takami Sato

Kaggle Santa 2019で学ぶMIP最適化入門
Kaggle Santa 2019で学ぶMIP最適化入門Kaggle Santa 2019で学ぶMIP最適化入門
Kaggle Santa 2019で学ぶMIP最適化入門Takami Sato
 
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeNIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeTakami Sato
 
Kaggle&競プロ紹介 in 中田研究室
Kaggle&競プロ紹介 in 中田研究室Kaggle&競プロ紹介 in 中田研究室
Kaggle&競プロ紹介 in 中田研究室Takami Sato
 
Quoraコンペ参加記録
Quoraコンペ参加記録Quoraコンペ参加記録
Quoraコンペ参加記録Takami Sato
 
Overview of tree algorithms from decision tree to xgboost
Overview of tree algorithms from decision tree to xgboostOverview of tree algorithms from decision tree to xgboost
Overview of tree algorithms from decision tree to xgboostTakami Sato
 
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesIcml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesTakami Sato
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Takami Sato
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門Takami Sato
 

More from Takami Sato (9)

Kaggle Santa 2019で学ぶMIP最適化入門
Kaggle Santa 2019で学ぶMIP最適化入門Kaggle Santa 2019で学ぶMIP最適化入門
Kaggle Santa 2019で学ぶMIP最適化入門
 
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision TreeNIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
NIPS2017読み会 LightGBM: A Highly Efficient Gradient Boosting Decision Tree
 
Kaggle&競プロ紹介 in 中田研究室
Kaggle&競プロ紹介 in 中田研究室Kaggle&競プロ紹介 in 中田研究室
Kaggle&競プロ紹介 in 中田研究室
 
Quoraコンペ参加記録
Quoraコンペ参加記録Quoraコンペ参加記録
Quoraコンペ参加記録
 
Overview of tree algorithms from decision tree to xgboost
Overview of tree algorithms from decision tree to xgboostOverview of tree algorithms from decision tree to xgboost
Overview of tree algorithms from decision tree to xgboost
 
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entriesIcml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
Icml2015 論文紹介 sparse_subspace_clustering_with_missing_entries
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門
 

Data Science Bowl 2017 Winning Solutions Survey

  • 1. Data  Science  Bowl  2017  Winning  Solutions  Survey Takami  Sato 17-4-18DSB2017  Solutions  Survey 1
  • 2. Data  Science  Bowl  2017とは 17-4-18DSB2017  Solutions  Survey 2 CT画像(DICOM形式)からの肺がん検知 ⼀一⼈人当たり200スライスぐらいの画像があり、学習データは1,500⼈人ほど h"ps://docs.google.com/presenta3on/d/ 1t40mZHzCdogvV3XeuK48SnKrA9tGK5eoaYoeBDYqoHs/edit#slide=id.g1cd534afe0_0_34   有志が⾒見見つけた肺がんの例例 h"ps://www.kaggle.com/c/data-­‐science-­‐bowl-­‐2017  
  • 4. 2位の手法 17-4-18DSB2017  Solutions  Survey 4 環境 •  Keras  +  windows  64bit •  ⾃自前の可視化のツール 概要 •  LIDCとLUNA16のデータを使⽤用 •  医者の診断とLUNA16のラベルを使⽤用 •  32*32*32の3d  convnetで学習 •  セグメント切切りはせず、画像全体を使⽤用 •  最⼤大腫瘍の場所から、癌がありそうなスライスを検知 •  疑わしいスライスを、U-‐‑‒Netで腫瘍の場所を検知 •  最後に当該スライスの疑わしい腫瘍の数と諸々特徴をxgboost •  Public  LBを信⽤用しない h"ps://www.kaggle.com/c/data-­‐science-­‐bowl-­‐2017/discussion/31551  
  • 5. 2位の手法 17-4-18DSB2017  Solutions  Survey 5 •  前処理理 •  全てを1x1x1  mmにスケーリング(恐らく1  pixcel) •  LUNAとDSBデータを全て同じ向きに変換 •  LUNAとLIDCをあわせるために座標を全て0〜~1にスケール •  教師ラベル •  LIDCの医者の診断は全て正とした。(診断医師が⼀一⼈人でも) •  LUNA16のラベルも正例例として追加 •  負例例を増やすために、肺以外の画像も追加 •  フォーラムの肺部分抽出⼿手法で、抽出されなかった部分を使⽤用 •  40,000データ •  (100,000の肺以外画像、10,000の偽陽画像、2000のLIDC正例例) •  偽陽データは、腫瘍だけど悪性でないもの •  モデルが出来上がった後、⽬目検して癌と偽陽部分にアノテーションを追加 •  LUNA16では3cm以上の腫瘍が正例例になっていないので除外
  • 6. 2位の手法 17-4-18DSB2017  Solutions  Survey 6 •  3d  convnetでの肺腫瘍と癌のあるスライス検知 •  32x32x32  3D  convnetを使⽤用 •  バッチ版のC3Dの構成(VGGに似ている) •  ネットワークのチューンには殆ど時間を使っていない •  腫瘍かどうかと悪性かどうかを、同時にマルチタスク学習 •  この⽅方法は、Julianさんでは良良かったがDanielさんは2ステップ •  データが不不均衡なので、1:20になるよう正例例をoversampling •  少しの正例例しか必要なかったのには驚きとのこと •  12m格⼦子のストライドと3種類のズームで癌の組織の場所を検知 •  最⼤大腫瘍とそのz座標(スライス位置)のみ後⼯工程で使⽤用 •  疑わしい腫瘍検知 •  LUNAや過去のDSBから肺がん腫瘍の画像を収集 •  ⼩小さいU-‐‑‒Netを使⽤用して、疑わしいスライスから怪しい腫瘍を抽出 •  全⾝身データや肺気腫のデータも⼊入れたが、⼤大きくは改善せず
  • 7. 2位の手法 17-4-18DSB2017  Solutions  Survey 7 •  最終モデル •  xgboostで学習 •  ズームの種類、スライスの位置、怪しい組織の数をデータに学習 •  min_̲child_̲weightを60にして、過学習を抑制 •  ⼿手元CVスコアは0.39、最終スコアは0.40117 •  Danielsさんとのアンサンブル •  彼は64x64x64のResnetライクなモデルを使⽤用 •  肺腫瘍検知と悪性腫瘍検知の2段階 •  LIDCの腫瘍情報も使⽤用 •  2⼈人の予測を平均して、最終submit
  • 8. 7位の手法 17-4-18DSB2017  Solutions  Survey 8 h"ps://www.kaggle.com/c/data-­‐science-­‐bowl-­‐2017/discussion/31576   環境 •  TensorFlow  +  Ubuntu  14.04 概要 •  LUNAとLIDCの腫瘍アノテーションを信頼 •  その後、DSBの悪性腫瘍ラベルを使⽤用 •  以下の3ステップで予測を実施 •  ピクセル毎の腫瘍の存在確率率率計算 •  腫瘍領領域の検知 •  悪性腫瘍の検知 •  モデルチューニングには多くの時間を割いていない
  • 9. 7位の手法 •  ピクセル毎の腫瘍の存在確率率率計算 –  128x128のU-‐‑‒Netを使⽤用 –  LUNAとLIDCの腫瘍のアノテーションを使⽤用 –  ランダムなスライスを作って学習 –  最終的には軸に沿ったスライスに予測し、3次元腫瘍存在確率率率テンソルを計算 •  各ピクセル3回計算されるので平均する •  腫瘍領領域の検知 –  以下の⼿手順で腫瘍の場所を特定 •  ⼩小さい閾値を設定(0.2) •  閾値以上のpixcelの塊を列列挙 •  塊のサイズが⼀一定以上だった場合は、閾値を上げて再実⾏行行 –  腫瘍の中⼼心から64x64x64の領領域を切切り取る –  領領域の腫瘍存在確率率率の和が⼤大きい順に20領領域を選択 –  LIDCの悪性腫瘍情報を使うべきだったとの事 17-4-18DSB2017  Solutions  Survey 9
  • 10. 7位の手法 •  悪性腫瘍の検知 –  ⼀一⼈人当たり、20個の64x64x64のデータが存在 –  3D  resnetを使⽤用 –  1チャネル⽬目にピクセルの値を⼊入れて、2チャネル⽬目に腫瘍存在確率率率を⼊入れた –  (20,  64,  64,  64,  2)の5次元テンソルがラベルに紐紐づく –  3D  resnet後は20個の予測が出揃い、そのmax値を取るのが最も良良かった •  Noisy-‐‑‒ANDやNoisy-‐‑‒ORなども試したらしい •  解釈としても妥当 –  ここに機械学習⼿手法を⽤用いたが、改善せず •  腫瘍存在確率率率の並び順は間違ってる家の姓があり、並び順に依存しないmax等が良良いとのこと 17-4-18DSB2017  Solutions  Survey 10
  • 11. 9位の手法 17-4-18DSB2017  Solutions  Survey 11 h"ps://www.kaggle.com/c/data-­‐science-­‐bowl-­‐2017/discussion/31548   h"ps://eliasvansteenkiste.github.io/machine%20learning/lung-­‐cancer-­‐pred/   環境 •  不不明 概要 •  ブログ記事が詳細に書かれている •  予測は以下のステップで構成 •  腫瘍検知 •  良良性腫瘍の除外 •  悪性腫瘍確率率率の付与 •  最終モデル •  LBがハックされて使い物にならず、モチベ低下した
  • 12. 9位の手法 17-4-18DSB2017  Solutions  Survey 12 •  腫瘍検知 –  LUNAデータのアノテーションで腫瘍の位置を学習 –  1  voxcelが1x1x1  mm  cubeになるようにスケーリング –  学習にはU-‐‑‒Netベースのネットワークを使⽤用 –  ⽬目的関数は、Dice類似度度を使⽤用 –  LUNAのアノテーションは32x32x32だが、⼊入⼒力力は64x64x64にして 内部のアノテーションを回転したり歪ませたりして、データを増加 –  検知された領領域からDifference  of  Gaussian法で腫瘍を検知 –  このままだと、⾮非常に多くの腫瘍が検知されるので、次に良良性腫瘍を除外する
  • 13. 9位の手法 17-4-18DSB2017  Solutions  Survey 13 •  良良性腫瘍の除外 –  肺領領域の検知 •  肺領領域以外の腫瘍は、肺がんではないので除外 •  肺領領域の検知⽅方法は、カーネル上で議論論しているのを参考にした •  最終的には3Dで肺を含む凸包から、肺以外っぽい領領域を除外するアプローチ –  3D  Resnetベースモデルでの良良性腫瘍の除外 •  LUNAの偽陽性判定トラックのラベルを使⽤用 •  48x48x48サイズの⼊入⼒力力のネットワークを作成 •  詳細はブログを参照 •  悪性腫瘍の予測 –  LIDCデータに腫瘍の悪性度度のデータがあることを、終了了2週前に発⾒見見 –  FPRネットワークベースのモデルで各腫瘍に悪性度度を付与
  • 14. 9位の手法 17-4-18DSB2017  Solutions  Survey 14 •  最終モデル –  腫瘍の悪性度度を、患者の癌ラベルに変換する –  2つのアプローチを使⽤用 •  P(患者が肺がん)  =  1  –                (腫瘍iが良良性) –  直感的だが、ある腫瘍が悪性だとモデルが確信している場合、それ以上学習が進まない •  Log  Mean  Exponet –  ログをとって、⼩小さい確率率率は超⼩小さくした状態で平均取って戻すので、 ソフトバージョンのmax関数的に動く –  モデルと共にFine-‐‑‒tuneできる –  上記⼿手法で30予測を作成し、アンサンブルして最終スコアを作成 •  最終の2  submitを以下で構成 •  Defensive  Ensemble –  各モデルの混合⽐比率率率をCVで決定 –  ただし、結果的に最良良モデルの予測1つだけが選択された •  Aggressive  Ensemble –  どのモデルを使うかをCVで学習して、選ばれたモデルの単純平均で構成