深層学習モデルでバーチャルスライドのSemantic segmentation

深層学習モデルでバーチャルスライドのSemantic segmentation

「Semantic segmentaion」と調べれば、街中の写真から人、車、道、木などにラベル(マスク)を付けて分類している画像が出てくるだろう。このようにSemantic segmentationでは同じ意味を持つピクセルを同じ値に分類する。 Semantic segmentationの深層学習モデルでは入力画像と同じサイズのラベル画像を返す。U-Netはその代表例である。医学画像ではレントゲンやMRI画像から腫瘍部の検出に使われる例が多い。 本書では病理画像全体から複数の構造をSemantic segmentationで分類する方法を紹介する。次に示すのが一連のワークフローである。 「QuPathでラベル付け ➔ TensorFlowでSemantic segmentationモデルの訓練 ➔ バーチャルスライドでSemantic segmentation ➔ (必要であれば)再ラベリングと再学習」 ※ 病理画像はバーチャルスライドシステムで取得したものを想定しているが、巨大なtiffファイル等でも同様のアプローチができる。 巨大な画像はそのままでは入力には扱えない。そこで画像を小さくタイル状に分割してモデルの学習、予測に使用する。「タイル画像の切り貼り」、「タイル端に存在する構造の扱い」など、モデルを通す前後の処理も必須になる。 バーチャルスライドデータの操作、学習用画像の用意、予測結果の可視化にはフリーソフトのQuPathを使用する。本書でも必要なQuPathスクリプトは紹介するが不足であれば以下の本を参照してほしい。 https://zenn.dev/rchiji/books/51fbb88213582d ⚫: QuPath ⚪: Python 🔴: Python + Tensorflow 🧱: タイル画像処理 -------------------- 機械学習用のローカル環境としては以下を使用した。 ・Windows 11(16コア/32スレッド、128GBメモリ、CドライブにM2.SSD) ・Tensorflow 2.10 ・NVIDIA GeForce RTX3090 -------------------- ※ 241015~ 最初の章から刷新中です。一部更新されていない箇所がございます。

Chapters
Chapter 01無料公開

はじめに

Chapter 02無料公開

環境構築 - Python, QuPath -

Chapter 03無料公開

----- 【第1部】 正解データの用意 -----

Chapter 04

⚫ デモデータの用意

Chapter 05

⚫ 学習用画像の用意1 - 正解ラベルを付ける領域を書き出す -

Chapter 06

⚫ 学習用画像の用意2 - QuPathでラベル付け -

Chapter 07

⚫ 🧱 学習用画像の用意3 - 正解ラベルタイル画像の書き出し -

Chapter 08無料公開

-----【第2部】 TensorflowでSemantic segmentationモデルの作成 -----

Chapter 09

⚪ 配布pythonファイルについて

Chapter 10無料公開

🔴 モデルに画像を渡す1 - tf.data.Dataset -

Chapter 11無料公開

🔴 モデルに画像を渡す2 - 画像の読み込み機能 -

Chapter 12無料公開

🔴 モデルに画像を渡す3 - データ拡張 -

Chapter 13無料公開

🔴 モデルに画像を渡す4 - 値の範囲/データ型の変更/チャンネル軸操作(One-hot encoding, squeeze) -

Chapter 14無料公開

🔴 モデルに画像を渡す5 - Datasetに機能を適応 -

Chapter 15無料公開

🔴 学習データと検証データに分ける

Chapter 16無料公開

🔴 モデルの用意 - Segmentation-modelsライブラリ -

Chapter 17無料公開

🔴 モデルのコンパイル - 損失関数/評価関数/最適化関数 -

Chapter 18無料公開

🔴 学習の実行

Chapter 19無料公開

🔴 ネットワーク構造の検証 - Segmentation-modelsライブラリ -

Chapter 20無料公開

🔴 損失の検証

Chapter 21無料公開

🔴 訓練途中でのcallback - 早期終了/ReduceLROnPlateau/Checkpoint/TensorBoard -

Chapter 22無料公開

🔴 混合精度の利用

Chapter 23無料公開

🔴 訓練済みモデルの保存と読み込み

Chapter 24無料公開

-----【第3部】 訓練済みモデルでバーチャルスライドを予測 -----

Chapter 25

⚫ 予測画像の用意1 - 予測対象領域の作成 -

Chapter 26

⚫ 🧱 予測画像の用意2 - 予測対象領域からタイル画像を書き出し -

Chapter 27

🔴 バーチャルスライドのタイル画像から予測ラベル作成

Chapter 28

⚪🧱 タイルの貼り合わせ - Center crop -

Chapter 29

⚪🧱 タイルの貼り合わせ - 予測確率の平均 -

Chapter 30

🔴🧱 予測後ラベルを書き出さない方法 - LabelHolder -

Chapter 31

⚪ Whole Slide Labelの書き出し

Chapter 32

⚫ 予測結果をQuPathで可視化する

Chapter 33

⚪ Object座標をjsonファイルとして書き出す

Chapter 34

⚫ 学習用画像の追加作成

Chapter 35

⚫ 再学習用画像に正解ラベル付け

Chapter 36

🔴⚫ モデルの訓練 ~ 予測(2回目以降の流れ)

Chapter 37無料公開

-----【第4部】 Semantic segmentationモデルを自作する -----

Chapter 38無料公開

🔴 モデルの構造を視覚的に確認

Chapter 39無料公開

🔴 モデルを自作してみよう1 - Functional APIのモデル構築例 -

Chapter 40

🔴 モデルを自作してみよう2 - U-Net構築 -

Chapter 41

🔴 モデルを自作してみよう3 - U-Net構築 2 -

Chapter 42

🔴 損失関数を自作する

Chapter 43

🔴 評価関数を自作する

Chapter 44

🔴 損失にclass weightをつける

Chapter 45

🔴 デコーダー各層から損失を求める

Chapter 46

🔴 より複雑なU-netモデル 【 keras-unet-collection 】

Chapter 47

-----【第5部】 OpenSlide -----

Chapter 48

⚪ PythonでOpenSlideを扱う

Chapter 49

⚪ 予測用タイル画像の座標算出

Chapter 50

🔴 予測から1枚絵まで

Chapter 51無料公開

-----【第6部】 QuPath内でPythonスクリプトを実行 -----

Chapter 52

⚫ ProcessBuilderの使い方

Chapter 53

⚫ QuPathからPython仮想環境のGPUを認識させる

Chapter 54

⚪ Pythonスクリプトの用意

Chapter 55

⚫ QuPath内で予測 ➔ Object反映まで

Chapter 56

最後に

Author
Ryota Chijimatsu
Topics
公開
本文更新
NEW
文章量
429,314
価格
500