ヘルスケア・アプリケーション - 肺炎の分類


この記事は、GitHub* に公開されている「Healthcare Application - Pneumonia Classification」の日本語参考訳です。


詳細
ターゲット OS: Ubuntu* 18.04 LTS
プログラミング言語: Python* 3.5
作業時間: 30 分

肺炎

はじめに

このリファレンス実装では、X 線画像で肺炎の分類を行い、疾患の確率値を算出するヘルスケア・アプリケーションを紹介します。

要件

ハードウェア

  • インテル® Iris® Pro グラフィックスまたはインテル® HD グラフィックスを搭載した第 6 世代~第 8 世代インテル® Core™ プロセッサー

ソフトウェア

  • Ubuntu* 18.04 LTS (英語)
    : カーネル 4.14 以降を使用することを推奨します。
    次の uname コマンドを使用してカーネルバージョンを確認できます。
    uname -a
  • インテル® ディストリビューションの OpenVINO™ ツールキット 2020 R3 リリース

仕組み

アプリケーションは、インテル® ディストリビューションの OpenVINO™ ツールキットに含まれる推論エンジンを使用します。入力ソースは X 線画像です。トレーニング済みのニューラル・ネットワークは、前処理された X 線画像が肺炎である確率を検出して、その確率と推論時間の値をファイルに保存します。

アーキテクチャーの概略図
アーキテクチャーの概略図

セットアップ

コードの取得

リファレンス実装のクローンを作成します。

sudo apt-get update && sudo apt-get install git
git clone https://github.com/intel-iot-devkit/pneumonia-classification.git 

インテル® ディストリビューションの OpenVINO™ ツールキットのインストール

インテル® ディストリビューションの OpenVINO™ ツールキットのインストールおよびセットアップ方法の詳細は、インテル® ディストリビューションの OpenVINO™ ツールキット (Linux* 版) のインストール (英語) を参照してください。

GPU で推論を実行する場合は、下記の手順に従って OpenCL* ランタイムパッケージをインストールします。CPU で推論を実行する場合は不要です。

使用するモデル

このアプリケーションは、/resources ディレクトリーにある事前トレーニング済みのモデル (英語) を使用します。このモデルは、(CC BY-SA 4.0) (英語) ライセンスの下で利用可能な https://data.mendeley.com/datasets/rscbjbr9sj/2 (英語) にあるデータセットを使用してトレーニングされています。モデルでは、トレーニングの手順も紹介されています。アプリケーションで使用される IR (.xml ファイルと .bin ファイル) を生成するため、このモデルをモデル・オプティマイザーに渡す必要があります。

依存ファイルをインストールするため、次のコマンドを実行します。

cd <path_to_the_pneumonia-classification-python_directory>
./setup.sh

設定ファイル

resources/config.json は、アプリケーションで使用されるビデオのパスを含んでいます。

config.json ファイルは、image: <path/to/imagefile> のように、名前/値ペア形式で記述します。

アプリケーションは、検出のため任意の数の画像を使用できます。

使用する入力画像

アプリケーションは、任意の入力 X 線画像で動作します。初回は、NORMAL (英語) と PNEUMONIA 画像 (英語) を使用することを推奨します。例えば、config.json は次のようになります。

{

"inputs": [
	{
		"image": "resources/NORMAL/*.jpeg"
	},
	{
		"image": "resources/PNEUMONIA/*.jpeg"
	}
]
}

ほかの画像を使用するには、config.json ファイルにパスを指定します。

環境の設定

インテル® ディストリビューションの OpenVINO™ ツールキットを使用するには、次のコマンドを実行して、セッションにつき 1 回、環境を設定する必要があります。

source /opt/intel/openvino/bin/setupvars.sh

: このコマンドは、アプリケーションを実行する端末で 1 回のみ実行します。端末を閉じた場合、コマンドを再度実行する必要があります。

アプリケーションの実行

ディレクトリーをシステムの git-cloned アプリケーション・コードの場所に変更します。

cd <path_to_the_pneumonia-classification-python_directory>/application

利用可能なオプションのリストを表示すします。

python3 pneumonia_classification.py -h

必要なモデルを指定してアプリケーションを実行します。

python3 pneumonia_classification.py -m ../resources/FP32/model.xml

出力画像、results.txt、および stats.txt ファイルは、output ディレクトリーに保存されます。

results.txt: このファイルには、肺炎の確率と推論時間が含まれます。

stats.txt: このファイルには、合計平均推論時間が含まれます。

結果を特定のディレクトリーに保存します。

python3 pneumonia_classification.py -m ../resources/FP32/model.xml -o <path-to-the-directory_to_save_the_output_files>

異なるハードウェアで実行する

デバイス・コマンドライン引数 -dCPUGPUMYRIAD、または HDDL のいずれかの値とともに使用することで、実行するターゲットデバイスを指定できます。
複数のデバイスで実行するには、-d MULTI:device1,device2 を使用します (例: -d MULTI:CPU,GPU,MYRIAD)。

CPU で実行する

アプリケーションは、デフォルトでは CPU で実行しますが、次のように -d CPU コマンドライン引数で明示的に指定することもできます。

python3 pneumonia_classification.py -m ../resources/FP32/model.xml -d CPU
統合 GPU で実行する
  • インテルの統合 GPU で 32 ビットの浮動小数点精度 (FP32) でアプリケーションを実行するには、-d GPU コマンドライン引数を使用します。

    python3 pneumonia_classification.py -m ../resources/FP32/model.xml -d GPU

    FP32: FP32 は数の表現に 32 ビットを使用する単精度浮動小数点演算です。大きさ (仮数部) は 8 ビット、精度 (指数部) は 23 ビットです。詳細は、ここをクリックしてください。

  • インテルの統合 GPU で 16 ビットの浮動小数点精度 (FP16) でアプリケーションを実行するには、次のコマンドを使用します。

    python3 pneumonia_classification.py -m ../resources/FP16/model.xml -d GPU

    FP16: FP16 は 16 ビットを使用する半精度浮動小数点演算です。大きさ (仮数部) は 5 ビット、精度 (指数部) は 10 ビットです。詳細は、ここをクリックしてください。

インテル® ニューラル・コンピュート・スティックで実行する

アプリケーションをインテル® ニューラル・コンピュート・スティックで実行するには、-d MYRIAD コマンドライン引数を使用します。

python3 pneumonia_classification.py -m ../resources/FP16/model.xml -d MYRIAD

注: インテル® ニューラル・コンピュート・スティックは FP16 モデルのみ実行できます。-m <path_to_model> コマンドライン引数でアプリケーションに渡されるモデルは、FP16 データ型でなければなりません。

インテル® Movidius™ VPU で実行する

アプリケーションをインテル® Movidius™ VPU で実行するには、-d HDDL コマンドライン引数を使用します。

python3 pneumonia_classification.py -m ../resources/FP16/model.xml -d HDDL

注: インテル® Movidius™ VPU は FP16 モデルのみ実行できます。-m <path_to_model> コマンドライン引数でアプリケーションに渡されるモデルは、FP16 データ型でなければなりません。