Skip to main content

米国国立衛生研究所(National Institutes of Health: NIH)胸部X線データセットの二項分類による肺疾患予測

このレポートでは、NIH胸部X線データセットの二項分類を行います。
Created on July 1|Last edited on February 17



概要

医療画像を用いた機械学習は、有望な分野であるとされてきました。実際にML中心の診断は具体的になってきています。しかし、検出漏れや誤検出は患者にとって大きな問題となるため、この分野の業界や研究者はまだ暫定的な段階に留まっています。
胸部X線は、ほとんどの医療画像と同様に、データの観点からはかなり理想的です。サイズと角度がほとんど統一されており、多くは一般に公開されています(もちろん個人識別情報は編集されています)。
今回は、このような画像のNIHデータセットを活用し、肺疾患の診断を予測できるかどうかを見ていきます。具体的には、肺が正常か異常かの予測をアウトプットとします。
実行タスク: 二項分類
インプットのタイプ: 画像
アウトプット: 肺の正常・異常を示す予測スコア
では、詳しく見て行きましょう。

データセット

NIH胸部X線データセットは、3万805名の個別患者による11万2120のX線画像です。この画像には、テキストマイニングした14の疾患ラベルがついています。ラベルの内容は無気肺、心臓肥大、硬化、浮腫、滲出液、肺気腫、線維症、ヘルニア、浸潤、腫瘤、結節、胸膜肥厚、肺炎、気胸です。
これらのラベル作成にあたり、Natural Language Processing(自然言語処理)を使用し、関連する放射線レポートから疾患分類をテキストマイニングしました。このラベルは90%を超える精度で、弱教師あり学習に適していると予想されます。

ライセンスおよび帰属

  • このNIH胸部X線画像の使用に制限はありません
  • データは米国国立衛生研究所(National Institutes of Health: NIH)から提供されたもので、NIHダウンロードサイトから入手できます: https://nihcc.app.box.com/v/ChestXray-NIHCC/folder/36938765345
  • Wang, et al. 「ChestX-ray8: 病院規模の胸部X線データベースおよび、一般的な胸部疾患の弱教師あり分類およびローカライズのベンチマーク」 ArXiv:1705.02315 [cs.CV], May 2017. arXiv.org, https://arxiv.org/abs/1705.02315.
(このデータは Kaggleデータセットとしても使用できます)

Model:v1

問題のモデル化

このモデルの目的は、特定のX線画像を正常(疾患に関連がないもの)または異常(1つ以上の疾患があるもの)として予測することです。したがってこのモデルは二項分類が実行できます。

想定される使用例

  • 研究: コンピューター支援診断(CAD)のための自動深層学習ベースの「胸部X線読み取り」分野における研究を促進させる。
  • 事前トレーニング済みの重み: X線画像を含むダウンストリームタスクに事前トレーニング済みの重みを提供する。
  • 促進: モデルの報告にモデルカードの使用を促進する。

回避すべき使用例

  • このバージョンのモデルは、本番環境においては、X線画像が肺疾患に関連しているかどうかを判断することはできません。
  • これはSoTA(最高精度)とは見なされていません。

トレーニングデータ

NIH胸部X線データセットの 51759 サンプルには、1つまたは複数の疾患ラベル(複数ラベル)が付いています。このようなサンプルのラベルは1に変換されます。
残りのサンプルには、No Findingというラベルが付きます。このデータセットの作成者が使用したNLPベースのラベリング法では、これらのサンプルに疾患を関連付けることはできませんでした。このようなサンプルのラベルは0に変換されます。
v0のトレーニング・検証・テストに、トレーニング画像2万点、検証画像5000点、テスト画像1万点が使用されました。
前処理: 元の画像サイズは (1024 x 1024) ピクセルで、(256 x 256) ピクセルにサイズ変更されます。サイズ変更されたイメージは縮小されています。

図1: 二項分類のトレーニングセットサンプル


モデルアーキテクチャ

model:v1 は、バックボーンアーキテクチャとしてResNet-50で最初からトレーニングされたものです。
Global Max Poolingの出力は、512ユニットでreluアクティベーションのDenseネットワークを通過します。次にドロップアウトレイヤ(ドロップレート0.2)が続きます。アウトプットレイヤがsigmoidでアクティブ化されます。
図2: モデルアーキテクチャ

トレーニング関連の詳細

  • 学習率0.001のAdamオプティマイザーを使用。
  • クロスエントロピー損失を使用。
  • モデルは早期打ち切りでトレーニングされている。

Run set
1


評価

評価は、ホールドアウトテストセットで実行します。ROC曲線 とテストエラー率を評価指標として使用します。

Run set 2
3


モデルの偏り

NIH胸部X線のData_Entry_2017_v2020.csvには、クラスラベルと患者データが含まれています。提供される患者データは次のとおりです。
  • 性別: 男性または女性
  • Age: 連続値
トレーニングでは、年齢や性別に関する情報は提供していません。

性別の偏り

モデルは、テストデータの男性のみ(青)と女性のみ(オレンジ)のサブセットで評価します。

考察

  • このモデルは、男性のカテゴリに属する​​X線に、より良い予測を提供します。
  • これは、性別というコンテキストにおいて、トレーニングデータセットに不均衡があることを示しています。
  • この偏りはデータセットによるものです。



Run set
2


年齢層の偏り

連続する年齢をバケット化(グループ分類)します。[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
各バケット(グループ)のモデルパフォーマンスを学習するためにバケットごとにモデルを評価します。

考察

  • 肺に関連する病気は、特定の年齢層(中年層)でよく見られるはずです。
  • テストエラー率は、0〜20歳のグループで高いですが許容範囲内です。
  • 年齢層 70~90歳のデータサンプル数は少なくなります。
これは、ドメイン知識の適応で、より適切に定量化できます。

Run set
19


ダウンロード

model:v1のダウンロード

# initialize wandb run
run = wandb.init()

# download model_nih_1.h5 as artifact
artifact = run.use_artifact('wandb/model-card-NIH-Chest-X-ray-binary/model:latest')
artifact_dir = artifact.download()

# close the run
run.join()

制限

データセット

  • トレーニングに使用するデータセットは、完全なデータセットのごく一部です。
  • 画像ラベルはNLP抽出されるため、誤ったラベルが表示される可能性があります。NLPラベリングの精度は90%を超えると推定されています。

モデル

  • X線など、自然に存在する画像でない場合、バニラの畳み込みニューラルネットワークベースの画像分類子は不十分です。

Iterate on AI agents and models faster. Try Weights & Biases today.