マイブログ リスト

医療言語処理講座

2019年9月13日金曜日

医用画像使ったPythonゼミナールを始めまーす


修正履歴:各Pyゼミのリンクを作成しました。また,一部採番が重複していたので修正しました。2019.09.13

年も明けて2019年

ブログを立ち上げてかなり放置していたので,そろそろなんかやってみようかとPCに向かっているところです。
放置している間にBloggerもだいぶ変わった。
医療情報に関連するテーマで少し持続するテーマ,”Pythonで医用画像AI”を考えてみました。

人工知能の流行もやや一段落

人工知能の流行も一時よりはだいぶ熱が冷めた感じですが,医療においてはこれからでしょう。
研究室では,これまでJavaを使ってAIを作ってきましたが,あるきっかけらPythonに移行することにしました。
それれは医療画像規格であるDICOM(Digital Imaging and COmmunication in Medicine)が非常に簡単にPythonで扱えるからでした。

本学,北海道情報大学医療情報学部ではJavaプログラミングが1年生(診療情報管理専攻)で必修科目です。
プログラミングの実習中の学生との雑談でpython勉強中です,という学生もいたりして,彼らにも画像処理結果が見れるので良いテーマでしょう。

PythonでAIやってみる?

本研究室の3,4年生のゼミナールでこれまで勉強してきた内容や作成物を整理して,1年生でもわかるようにブログの中で公開してみようかと考えたわけです。

もちろんここらでちょっと自分もAIに触れてみようと思っている人や学生などを対象に連載を組んでみたいと思っています。読んでもらいたいターゲットとしては

  • python勉強したいけど興味ある分野が見つからない人々
  • とりあえず人工知能に触れてみた大学生,高校生,ひょっとしたら小中高生
  • 修士のテーマにしたいけどどうする,という大学院生
  • 画像がいっぱいあって解析してみたい診療放射線技師や医師など医療スタッフ
  • 会社でAI推進の指示があったが何から手を付けて良いかわからない社会人
  • ネットで色々調べたけど具体的にAIとDICOMをどうくっつけるか迷える人々

環境構築編,DICOM編,GUI編とAI編をはじめます

具体的には以下の内容で進めていきたいと考えています。どこから始めても良いように並行して公開していきます。

0 環境構築編

本ゼミナールではUbuntu上で開発することを前提に進めまていますが,Windows上でのAI開発環境構築やノートPC上でのDual boot環境構築をまとめました。

Pyゼミ0.01 Pythonで医用画像のAIを試すための環境構築 
              
Pyゼミ0.02 Windows10AIしたい
              
Pyゼミ0.03 MSI ノートPCPS42 8RC-009JP)にAI環境を構築する
             
Pyゼミ0.04 MSI P65Dual bootにしてみた

Pyゼミ0.05 備忘録 Ubuntu18.04にTensorFlowとChainerをインストールする 

Pyゼミ0.06 備忘録 Ubuntu20.04にTensorFlowとPyTorchをインストールする New 20221019

Ⅰ DICOM編

医用画像は標準化が進み,DICOM(Digital Imaging and COmmunication in Medicine)が一般的に用いられています。Pydicomを使った簡単な画像の表示,ウィンドニングと呼ばれる最適画像濃度変換処理とJPEG,PNG画像変換や画像ポジションによるソート,画像拡張について紹介します。

Pyゼミ1.01 DICOM画像表示
              
Pyゼミ1.02 DICOMからJPEGなどへの変換
              
Pyゼミ1.03 DICOMのタグ情報を読む
              
Pyゼミ1.04 DICOMのタグ情報(ImagePosition)で画像ファイルをソートする
              
Pyゼミ1.05 DICOM JPEG圧縮画像を解凍する

Pyゼミ1.06 DICOM CT画像をLUTで疑似カラーを付けてみる


Pyゼミ1.07 CT画像にDICOM Color LUTを使ってヒートマップ画像などを重ねてFusion画像を作ってみる

Pyゼミ1.0 番外編 DICOM RDSRを読む 20220502

Pyゼミ1.08 PET画像を読む  20220506 


Ⅱ GUI(Graphical User Interface)編

PyQt5を使ったGUIプログラムを紹介します。
DICOM画像表示,複数DICOM画像のページングとマウスにより任意画像の抽出,DICOM画像上から任意のROIの抽出など画像加工プログラムを紹介します。

Pyゼミ2.01 PyQt5によるDICOM画像表示.画像ファイル渡し
              
Pyゼミ2.02 PyQt5によるDICOM画像表示とページング
              
Pyゼミ2.03 PyQt5によるDICOM画像のセグメンテーション
              
Pyゼミ2.04 PyQt5によるDICOM画像の拡大表示と保存

Pyゼミ2.05 PyQt5によるラジオボタンとチェックボックス new2020.02.16

             

Ⅲ 人工知能編

人工知能のフレームワークであるChainerを使います。
手書き数字認識MNISTのデータから医用画像データへの拡張方法,pythonを使ったChainerの訓練プログラムをGPU対応にする方法などを紹介します。

Pyゼミ3.01 手書き認識のニューラルネットワーク
              
Pyゼミ3.02 手書き画像からDICOM画像へ
              
Pyゼミ3.03 DICOM画像を訓練用とテスト用に分けてみる
              
Pyゼミ3.04 手書き文字認識のニューラルネットワークをDICOMに拡張する
              
Pyゼミ3.05 MNISTのネットワークをAlexnetに対応させる
              
Pyゼミ3.06 ChainerTrainer Extensionを使ってみる
              
Pyゼミ3.07 ChainerGPUを使って学習してみる



プログラムの方針

プログラムのサンプルを探すのであればGitHubに大量のソースコードが保存されています。しかし,初心者がチャレンジしてするには敷居が高いように思います。
そこでPyゼミでは次の点に留意してプログラムを作成しています。

  • 100行程度の長さで,アルゴリズムを容易に理解できる
  • ひとつのプログラム内でアルゴリズムが完結している
  • 実行した結果が複雑ではなく容易に理解が得られる


おわりに

本研究室のゼミナールだけでなく,外部の他の勉強会やセミナーにも参加してみて,周囲の人たちがいろいろな問題をもっていることが分かってきました。
おおよそ図書などで人工知能が使えるようになっても,最初にデータをどのように加工してAIに与えるべきなのか,つまりMNISTのデータで上手くいくのは分かったけどその次どうしたらいいの...という問題にすこしでも参考になればと考えています。

ちょっとお願い

なお本ソースコードの使用にあたって,何らかの具都合や不利益が生じたとしても本研究室で責任を負いかねます.どうぞご了承ください。
本ゼミナールで配布するDICOM画像は私のCT全身像です。実験以外の利用はしないようお願いいたします。
また,ご意見などありましたらメッセージをいただけますでしょうか。

0 件のコメント:

コメントを投稿