医療系AIエンジニアの技術メモ

ディープラーニング(主に画像系)の技術メモブログです

Learning Multi-Class Segmentations From Single-Class Datasets

スポンサーリンク


f:id:y_kurashina:20190701002345j:plain
Fig1. 腹腔内臓器のセグメンテーションデータセット

論文URL

http://openaccess.thecvf.com/content_CVPR_2019/html/Dmitriev_Learning_Multi-Class_Segmentations_From_Single-Class_Datasets_CVPR_2019_paper.html
2019年のCVPRで公開

ポイント

  • 医療分野のセグメンテーションデータセットは特定臓器のみの単一クラスデータとなっていることが多い
    • Fig1(b)は肝臓データセット:Sliver07
    • Fig1(c)は膵臓データセット:NHI Pancreas
    • Fig1(d)は肝臓と脾臓のデータセット:著者が独自に用意したデータセットの模様
    • データセットごとに施設やCT機器等の撮像条件が異なっている
  • 個別にモデルを作成するよりも、全てのデータセットで一つのモデルを学習することで性能を向上させる手法を提案
    • 論文では、肝臓(liver)・脾臓(spleen)・膵臓(pancreas)を同時に学習
    • 1回の推論では、どのクラスを推論するかを入力し、そのクラスのセグメンテーションのみ実施
      • 同時に全クラスを推論するモデルは上手く学習できていない。

モデル

f:id:y_kurashina:20190701004503j:plain
Fig2. モデル概要

  • Unet風のネットワーク(Fig2、詳細はSupplementary Material)
    • 各層はDense Block+Leaky ReLU
    • c_mはクラスラベル
    • \varphiはハッシュ関数
      • liver等のクラス名を一意な数値に変換していれば、連番で十分なはず。むしろハッシュ関数では、異なるクラスが同じ数字になる可能性があり、不適切に思える。
    • Fig2(b)(c)はそれぞれ、encoder、decoder部の詳細
      • ablation studyの結果、クラスのハッシュ値はencoderでは使用せず、decoder部でのみ使用

学習結果

f:id:y_kurashina:20190701010650j:plain
Fig3. 学習曲線

  • Fig3(a)~(e)共通 : オレンジの線(プロット上部の水平線)は各データセットごとのこれまでのSOTA性能(DICE係数)
  • Fig3(a) : 部位ごとに学習した結果
  • Fig3(b) : クラス名のハッシュ値を入力せず、3クラス同時に推論するモデルを学習した結果
  • Fig3(c) : クラス名のハッシュ値を保持するチャンネルを入力CT画像に追加した結果
  • Fig3(d) : encoderでクラス名のハッシュ値を使用した結果
  • Fig3(e) : decoderでクラス名のハッシュ値を使用した結果
  • decoderでクラス名のハッシュ値を使用した場合のみ過去のSOTA性能を上回っている。
    • プロットは無いが、encoderとdecoderの両方でハッシュ値を使用すると性能が低下したとのこと。
  • これらのグラフからencoderではクラス情報を入れずにより汎用的な特徴量を学習させることが重要と言える。
  • クラス情報なしのモデル(Fig3(b))が低性能な原因として、学習データのマスクが矛盾しているためと記述されている。
    • 「矛盾」とは、教師データごとに各部位の正解マスクが付いていたり、付いていなかったりすることを指しているものと思われるが、正しくマスクが付いていない部位の出力チャンネルもバックプロパゲーション対象にしてしまっているのではないかと思われる。バックプロパゲーション対象の出力チャンネルを正しくマスクされている部位に絞っていたとしたら、ここまで性能が下がるとは信じがたい。