ホーム » Medical Image

Medical Image」カテゴリーアーカイブ

ClassCat® TF / ONNX Hub : 医療画像処理モデル (胸部レントゲン、血液細胞)

作成者 :(株)クラスキャット セールスインフォメーション
作成日 : 01/10/2019

 

ClassCat® TF / ONNX Hub とは

「ClassCat® TF / ONNX Hub」はクラスキャットが提供する実用性の高い機械学習モデルのレポジトリです。各モデルは TensorFlow 固有フォーマットと ONNX フォーマットの両者で提供されます。 [ClassCat® ONNX Hub 詳細]

  • ONNX (Open Neural Network Exchange) は深層学習モデルのためのオープンなフォーマットで、異なるオープンソースの深層学習フレームワーク間の相互作用を可能にします。

「ClassCat TF / ONNX Hub」で提供されるモデルについてはクラスキャットが検証の上で仕様を公開致しますので、ユーザ企業は希望するモデルを自由に選択することができます。更に (ユーザ企業の保持するデータセットによる) 再調整も含めて配備・実運用するために必要なトータルサポートを提供致します。

本ページでは提供モデル群として 医療画像処理モデル の代表例を紹介致します。

 

医療画像処理モデルの紹介

以下に代表的なモデル例を紹介します :

 

胸部レントゲン画像の肺炎の位置特定

最初に取り上げるモデル例は比較的最近 Kaggle から出題された、RSNA Pneumonia Detection Challenge (RSNA – 北米放射線学会 – 肺炎検出チャレンジ) に対応したモデルです。

医療画像は通常 DICOM 形式で提供されますが、 この課題は一般的なフォーマットに変換すれば後は物体検出タスクになりますのでそれほど難しくはありません。以下の画像例のように信頼度ともに位置特定が可能です :

 

胸部レントゲン画像の疾患の分類

上の例は物体検出課題でしたが、次に NIH (National Institutes of Health) が配布しているデータセット (NIH プレスリリース) を利用して分類モデルを構築してみます。

胸部レントゲン画像の分類では、各種疾患 : 肺炎, 肺拡張不全 (無気肺), 心臓肥大, 合併症, 肺水腫, 肺気腫, 結節, 肺線維症 etc. の画像を認識することができます。

以下は胸部レントゲン画像のサンプルと認識された疾患です。精度は疾患の種類により多少異なりますがおおよそ 80 % 〜 90 % の精度が獲得できます :

正常 心臓肥大 合併症

 

血液細胞検出

医療画像処理では物体検出やセマンティック・セグメンテーション技法が利用されるケースが多いですが、単純なケースでは一般物体検出モデルの再調整だけで対応できます。

以下の画像例は血液細胞検出で、赤血球、白血球そして血小板を検出しています。

 

肺がん検出

より複雑な、CT スキャン画像から肺ガンを検出するモデルとして肺がん検出モデルがあります。さわりだけですが詳細は こちら

 

以上






TensorFlow : 超音波画像の神経構造セグメンテーション


TenosorFlow : 超音波画像の神経構造セグメンテーション

作成 : (株)クラスキャット セールスインフォメーション
日時 : 06/13/2017

 

概要

今回は超音波画像セグメンテーションを TensorFlow で実装してみます。
題材は前回に続いて Kaggle の出題からで、超音波画像のデータセット上で神経構造を識別可能なモデルの構築が求められています :

具体的には以下のサンプル画像のような首の超音波画像の BP セグメンテーションを行ないます。BP は Brachial Plexus, 腕神経叢 (わんしんけいそう) を意味します :

実際に実験してみると、目標が訓練しやすい形式に設定されていることもあってこの課題自体はさほど難しいわけではありませんが、セグメンテーションは医療分野に限らず応用範囲が広い技術です。

 

データセットの概要

訓練用データセットには、腕神経叢の超音波画像とそのセグメンテーション・マップ i.e. セグメンテーションを表わすマスク画像が対になって含まれています。患者毎に 120 枚の超音波画像が含まれ、超音波画像は shape 580 x 420 x 1 のグレースケール画像です。それぞれの超音波画像に対応したマスク画像も併せて用意されています。約 50 人の患者分が用意されていて、つまり約 12,000 (= 120*2*50) 枚の画像が含まれています。

今回はマスク画像が用意されている訓練用データセットを分割して、訓練・検証・テスト用として利用しました。

以下は最初の患者の 1 枚目の超音波画像とそのマスク画像です :

そして以下は最初の患者の (120 枚ある) 超音波画像群のサブセットです :

以下は上の超音波画像のそれぞれに対して対(つい)になっているマスク画像です :

 

モデル

課題はセグメンテーションですが、このケースでは要するにマスク画像を教師信号とする教師あり学習です。

セグメンテーションを行なうモデルは定石としては FCN (Fully Convolutional Network) あるいはその改良版の U-Net が考えられます。U-NET は生物医学でのセグメンテーションに良く利用されるようです。

基本的には Convolutional Auto-encoder の一種と考えられますので、先に VGG-16 による Auto-encoder でも試してみます。入出力が異なるので厳密には Auto-encoder ではありませんが、ここでは便宜上 Auto-encoder と呼称します。

なお参考まで、FCN の元ペーパーは以下です :

そして U-Net :

 

訓練

損失関数は基本的には類似度が測れれば良いのですが、ここでは ダイス係数 を用いました (MSE では上手くいきません)。
ダイス係数は自然言語処理で良く用いられます :

[Auto-encoder 損失]

[U-Net 損失]

 

予測

さて予測結果です。概ね位置特定については上手くいっているようですが、その範囲については正確性を欠いています。
また、(意外なことに) 普通の Auto-encoder でも U-Net でも予測結果に殆ど違いは見られませんでした。これは課題のセグメンテーションが比較的単純な構造であるためかもしれません。

● 以下の5例は比較的上手くいっている例です。
Auto-encoder による予測、U-Net による予測、そしてマスク画像の正答の順に示します :

患者 1 : 予測 (Auto-encoder)

患者 1 : 予測 (U-Net)

患者 1 : 正答

患者 2 : 予測 (Auto-encoder)

患者 2 : 予測 (U-Net)

患者 2 : 正答

患者 3 : 予測 (Auto-encoder)

患者 3 : 予測 (U-Net)

患者 3 : 正答

患者 4 : 予測 (Auto-encoder)

患者 4 : 予測 (U-Net)

患者 4 : 正答

患者 5 : 予測 (Auto-encoder)

患者 5 : 予測 (U-Net)

患者 5 : 正答

● 以下の2例は上手くいってない例です :

患者 6 : 予測 (Auto-encoder)

患者 6 : 予測 (U-Net)

患者 6 : 正答

患者 7 : 予測 (Auto-encoder)

患者 7 : 予測 (U-Net)

患者 7 : 正答

 
以上

TensorFlow : 肺がん検出 課題


TenosorFlow : 肺がん検出 課題

作成 : (株)クラスキャット セールスインフォメーション
日時 : 06/12/2017

 

今回は肺がん検出の課題を TensorFlow で扱ってみます。題材は以下の記事にわかりやすい説明がありますが :

Kaggle が主催した、CT スキャンの画像から肺ガンを検出するモデルを競うコンテストで提供されているデータセットを利用します。既にコンテスト自体は終了していますが、逆にどのようなアプローチを取れば良いのかある程度は判明していますので、TensorFlow で実装して試してみたいと思います。

Kaggle のチュートリアルにはモデルのベースラインが示されていますが、今回は入門編という位置づけでリサンプリングによる前処理のみを行なった上で基本的なモデルをトレーニングしてみます。

以下の画像はある陽性患者の CT スキャン画像群を再構成して 3D 表示したものです :

 

データセット概要

データセットは以下で提供されています :

データセットの中心は約 1,500 人ほどの患者の CT スキャン画像群で、患者毎に 200 ~ 300 毎程度のグレースケール画像があります。shape は 512 x 512 x 1。画像が意外に粗いのはデータが比較的古いためのようです。各患者には (単純化して言うならば) 陽性/陰性のラベルが張られていて、本来の課題は未知の患者のラベルを予測するものですが、既にコンテストは終了していますのでここではラベルつきの患者のデータセットを分割して利用します。

サンプルデータの例として、以下はある患者の CT スキャン画像のリストの一部です :

そして拡大画像例。上は陽性、下は陰性患者のものです :

 

予備実験

取り敢えず感触をつかむために、特別な前処理は行なわずに訓練してみました。
以下のグラフは左が損失で、右が検証精度です :


一応はトレーニングが収束を見せるのですが、0 にまでは下がりきりません。
また精度も 67 % くらいで頭打ちです。この数字はかなり悪いです。

 

リサンプリングによる改良

生データのままでは精度が上がりませんでしたので、次に前処理の改良を考えます。Kaggle には前処理のチュートリアルが各種用意されていますのでそれらを参考にして、CT スキャン画像を (生データから実測値ベースに線形変換した上で) リサンプリングして再構成しました。補正しないと見にくいですが、以下はその画像例です :


そして以下は (前処理には直接には関係なく) あくまで参考のためですが、リサンプリングしたデータを元にマーチングキューブ法 (コンピュータグラフィックスのアルゴリズム) を使用して骨格を立体画像化したものです :


また、ピクセルデータを変換した CT 値 (or HU, Hounsfield Unit) においては閾値の設定により組織がある程度分別できますので、同じ CT スキャン画像データを元にして異なる組織を立体画像化することもできます :


トレーニング結果

以下がトレーニング結果を示すグラフです。各サンプルのデータ量が大きくなるためにトレーニングには多少工夫が必要となりましたが、今度は損失はきれいに下がりました (グラフのノイズはエポック間の継ぎ目です) :

クロスエントロピー

MSE

訓練精度

しかしながら検証精度は 72 ~ 80 % 程度で、更に false positive/negative のケースを精査してみると特徴が掴めているとは推定できず、この基本モデルでは限界があることも確認できます。簡単に言えば、汎化性能が出ていません。

次回はチュートリアルで提示されているモデルを利用して実験する予定です。

 

以上

AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com