| 項目 | 方針 |
|---|---|
| リサイズ | アスペクト比を保って 224×224 に収め,余白は黒で埋める(元画像は幅 449〜900・高さ 279〜1025 でばらつく) |
| 正規化 | ImageNet の mean / std(事前学習の統計に合わせる) |
| マスク外領域 | 黒 (0, 0, 0)(実データで確認済み.TEST_01).リサイズ時のパディングも黒で統一する |
色を変える拡張は既定で無効にする. 舌の色そのものが正解ラベルであり,color jitter・彩度変更・ホワイトバランス変更はラベルを壊す.
| 使う | 使わない(既定) |
|---|---|
| 左右反転・微小回転・微小スケール・ランダムクロップ | 色相・彩度・明度ジッタ・グレースケール化・強い正規化 |
※ 撮影条件差の吸収のために色系の拡張を試す場合は,独立した実験として効果を測る.
| 項目 | 初期設定 |
|---|---|
| アーキテクチャ | ConvNeXt-Tiny(timm・ImageNet 事前学習) |
| 出力 | 5 クラス |
| 学習方式 | 全層ファインチューニング(データが少ないと判断した場合は段階的凍結を試す) |
| 最適化 | AdamW + cosine annealing(warmup 付き) |
| 早期終了 | 検証セットの macro F1 を基準にする |
まず 1 本を通すことを優先し,比較は timm での差し替えで後から行う.
すべての分割は患者単位で行う. 同一患者の画像が複数の分割に跨ってはならない.
現在のデータセットは 1 患者 1 枚であることを確認済みのため(2026-09-27.TEST_01),画像単位の分割が患者単位の分割と一致する.ただし実装は常に patient_id 単位で分割し,将来同一患者の複数枚が追加されても正しく動くようにする.
| 局面 | 方式 |
|---|---|
| 日常の試行 | 患者単位の単一分割(train / val / test).クラス分布を層化する |
| 結論を出すとき | 患者単位の 5-fold 交差検証 |
patient_id と seed から決定的に生成し,config.yaml に記録するseverity は層化の条件に含めない(分割が細分化されすぎるため)が,分割後に severity の偏りを確認するStratifiedKFold(shuffle あり・seed 指定)を使う.評価側を held_out と呼ぶ(fold 内でさらに val を取るかは Step 4・5 で決める).患者数が fold 数に満たないクラスがあれば停止するruns/ にのみ保存する.SPEC_01「回収ホワイトリスト」)実データのクラス分布は最大 / 最小 = 380 / 104 ≒ 3.7 倍(TEST_01).中程度の不均衡であり,初回は対策を入れずに素の結果を見る.混同行列でどのクラスが落ちているかを確認してから,クラス重み付き損失等を独立した実験として追加し,効果を切り分けて評価する.
程度ラベル(severity)を含めた 9 クラス分類は採らない(最小クラス 51 枚・不均衡 6.6 倍となり学習が不安定になる.目的は TIASjudge の 5 分類の置き換えであるため).
| 指標 | 役割 |
|---|---|
| macro F1 | 主指標(クラス不均衡下で少数クラスを無視できないため) |
| accuracy | 参考(クラス分布に引っ張られる) |
| クラス別 precision / recall | どのクラスが弱いかの特定 |
| 混同行列 | 誤りの方向(隣接クラスとの混同か,飛んだ誤りか)の確認 |
severity ごと(strong / mild)にクラス別 recall を出す.「ややあり」(mild)は境界例であり誤りが集中すると予想されるため,全体の指標だけでは改善の効果が見えない既存 TIASjudge のルールベース診断を同一テストセットで実行し,同じ指標で並べる.実装の取り込み方(移植 / 別リポジトリ参照)は未定とし,ベースライン実装に着手する時点で決める.
config.yaml に git コミットハッシュとともに記録するtorch.use_deterministic_algorithms)は速度とのトレードオフのため求めない.代わりに同一設定で複数 seed を回して振れ幅を確認する