以前より脳のMRI画像の解析に興味があったが、Kaggleでちょうどいい題材があったので、参加してみた。一年以上前にKaggleには登録はしていたが、敷居が高く初心者が手を出せるものではないと決めつけていたことがあり、これまでほとんどスルーしてしていた。今回のテーマもアナウンスがあったときに興味を持ったが、自分の参加意欲がスキル面の不安を上回ったのはラスト一ヶ月でそこからの参加となった。最終的にはSubmitすることができなかったが、学んだことを整理しておきたい。

https://www.kaggle.com/c/rsna-miccai-brain-tumor-radiogenomic-classification

課題

MGMT遺伝子のプロモーター領域のメチル化を見つけることで、脳腫瘍の発見や化学療法に対する反応性を知る手掛かりになるが、そのためには細胞を取るための手術が必要だったり、結果が出る前に時間が出るといった課題がある。そのため、MGMTプロモーターのメチル化とMRI画像を紐づけることで、MRI画像から正確に予測することを目的としている。これができると非侵襲的にMGMTプロモーターのメチル化を見つけることができ、脳腫瘍患者の命を救える確率をあげられるかもしれない。

今回対象とするのは膠芽腫(こうがしゅ:Glioblastoma)と呼ばれる脳や脊髄に発生する悪性の腫瘍で、アストロサイトと呼ばれる細胞が悪性化したものになる。ステージ4の悪性腫瘍。ちなみにアストロサイトはグリア細胞の一種で、神経細胞に栄養を与えたり、過剰なイオンや神経伝達物質を除去する働きをしている。

データ

データは患者IDごとに4種類のMRIの画像(FLAIR/T1w/T1wCE/T2w)があり、DICOMフォーマットで提供されている。DICOM(ダイコム)はMRI画像の標準フォーマット。それぞれのIDに対してMGMTプロモーターのメチル化の有無のラベルが与えられている。

種類説明
T1w脂肪が白く、水が黒く描かれる。脳の形がわかりやすく、形態的な異常が捉えやすい
T1wCE (TIGd)造影剤を用いたT1撮影で、腫瘍の位置、大きさ、形が最もよく反映される方法
T2w水が白く描かれる。病変が白く写り、病変の評価に適している
FLAIRT2だと水も病変も白く映るため、水を黒くすることで病変を探しやすくしている

DICOMフォーマットは今回初めて知ったが、CTやMRIなどの医療用画像のフォーマットの標準規格らしい。画像データだけでなく、メタ情報として患者名,ID番号,生年月日,撮影日,撮影施設,部位などの個人情報が含まれる。(もちろん今回使用するデータはそういったところは全て削除されている)

今回はこのDICOMに加えて、NIfTiフォーマットへの変換コードもあった。DICOMが1スライス=1ファイルであるのに対して、NIfTiは1シリーズ=1ファイルなので、3次元的に扱うことができる。

データ前処理

MRI画像はスキャンする方向が統一されてないので、画像のスキャン方向や画像の向きもバラバラである。今回の画像も下の図のSatittal/Axial_Coronalが混じっておりそのためデータの前処理が必要。TorchIOというライブラリがあり、3Dの医療用画像をPytorchで扱うためのデータ処理全般が行えるものがある。非常に便利なのでこちらでデータ処理を検討。

アルゴリズム

自分の現時点でのAI開発スキルは、フレームワークを使いこなせるわけではなく、あくまで初心者レベルなので、他の人のEfficientNet-3Dのコードの理解から始める。EfficinetNetは2019年にGoogleから発表された画像認識モデルで、少ないパラメータで高い精度が出せるらしい。モデルの精度を上げようとすると画像の解像度を上げたり、層数を深くしたりするが、それをむやみに手作業で任意に行うのでなく、一定の係数を使ってそれぞれの次元を均一にスケールアップする手法らしい。

https://developers-jp.googleblog.com/2019/07/efficientnet-automl-google.html

参考にしたコードでは、Pytorchで4つのMRI種類ごとにこのEfficientNet-3Dでモデルを作ってアンサブルで判定する手法。ただ参考にしたコードはデータ処理の部分でTorchIOは使ってないため、TorchIOとEfficientNetとのつなぎこみに結局四苦八苦して結局時間切れとなってしまった。

補足情報

課題が明確に与えられているので、データ分析の際にはそもそもMGMTがどんなもので、何でそれが腫瘍に関係するのかというところを理解せずに進めていたが、MGMTはDNA修復遺伝子らしい。メチル化とはDNAの塩基の炭素原子にメチル基修飾というのが付加されて遺伝子の発現を抑制してしまい、癌細胞がMGMTを産生しなくなってしまう。またMGMTプロモータのメチル化状態によって化学療法に対しての反応や予後が異なってくるらしい。

所感

Kaggleはデータサイエンティストの腕を競い合う場ということで、データ分析経験のない自分には不相応なところと決めつけていたが、今回参加して、今まで縁のなかった医療用画像についての知識や、Pythonでのプログラミング、Pytorchの使い方など色々と学ぶことが多かった。

一方で、Pytorchなどのフレームワークを自由に使いこなすレベルまで向上させる必要があることを実感。また、もっと時間をかけてのデータ分析・前処理方法などの検討も必要で、参加タイミングを早めてじっくり取り組む必要がある。Kaggle notebookは処理が20分行われないと切られてしまうし、GPUの使用時間も週単位で決められているので、意外と不自由に感じた。今回の経験を元に次からはしっかりとマイルストーンを作ってチャレンジしていきたい。