Newer
Older
TIASJudgeModel / docs / 04_SPEC / SPEC_02_学習・評価仕様.md

学習・評価仕様 (Training & Evaluation)

前処理 (Preprocessing)

項目方針
リサイズアスペクト比を保って 224×224 に収める(事前学習モデルの入力に合わせる)
正規化ImageNet の mean / std(事前学習の統計に合わせる)
マスク外領域データ確認後に確定(黒埋めか平均色埋めか.黒は強いエッジを作るため要検証)

データ拡張 (Augmentation)

色を変える拡張は既定で無効にする. 舌の色そのものが正解ラベルであり,color jitter・彩度変更・ホワイトバランス変更はラベルを壊す.

使う使わない(既定)
左右反転・微小回転・微小スケール・ランダムクロップ色相・彩度・明度ジッタ・グレースケール化・強い正規化

※ 撮影条件差の吸収のために色系の拡張を試す場合は,独立した実験として効果を測る.

モデル (Model)

項目初期設定
アーキテクチャConvNeXt-Tiny(timm・ImageNet 事前学習)
出力5 クラス
学習方式全層ファインチューニング(データが少ないと判断した場合は段階的凍結を試す)
最適化AdamW + cosine annealing(warmup 付き)
早期終了検証セットの macro F1 を基準にする

まず 1 本を通すことを優先し,比較は timm での差し替えで後から行う.

データ分割 (Data Split)

すべての分割は患者単位で行う. 同一患者の画像が複数の分割に跨ってはならない.

局面方式
日常の試行患者単位の単一分割(train / val / test).クラス分布を層化する
結論を出すとき患者単位の 5-fold 交差検証
  • 分割は patient_id と seed から決定的に生成し,config.yaml に記録する
  • test セットはモデル選択に使わない(val で選び,test は最後に一度だけ見る)

クラス不均衡 (Class Imbalance)

初回は対策を入れずに素の結果を見る.混同行列でどのクラスが落ちているかを確認してから,クラス重み付き損失等を独立した実験として追加し,効果を切り分けて評価する.

評価指標 (Metrics)

指標役割
macro F1主指標(クラス不均衡下で少数クラスを無視できないため)
accuracy参考(クラス分布に引っ張られる)
クラス別 precision / recallどのクラスが弱いかの特定
混同行列誤りの方向(隣接クラスとの混同か,飛んだ誤りか)の確認
  • 舌色が順序尺度として扱える(淡白 → 淡紅 → 紅 → 暗赤 → 紫 のような並び)なら,quadratic weighted kappa を追加する.順序の妥当性は TIASjudge の定義と医学的な解釈を確認してから決める(未確定)
  • 医師ラベルの評価者間一致率が分かる場合は,モデル性能の上限の目安として併記する

ベースライン (Baseline)

既存 TIASjudge のルールベース診断を同一テストセットで実行し,同じ指標で並べる.実装の取り込み方(移植 / 別リポジトリ参照)は未定とし,ベースライン実装に着手する時点で決める.

再現性 (Reproducibility)

  • seed を設定ファイルで固定し,config.yaml に git コミットハッシュとともに記録する
  • 完全なビット再現性(torch.use_deterministic_algorithms)は速度とのトレードオフのため求めない.代わりに同一設定で複数 seed を回して振れ幅を確認する
  • 共用サーバのため,使用する GPU は明示的に指定する

未確定事項 (Open Items)

  • マスク外領域の扱い(黒埋め / 平均色埋め)
  • 舌色 5 分類を順序尺度として扱えるか(quadratic weighted kappa の採用可否)
  • 入力解像度 224 で足りるか(舌の微細な色ムラが失われないか)
  • ルールベース診断の取り込み方