| 項目 | 方針 |
|---|---|
| リサイズ | アスペクト比を保って 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 に記録する<label>_<severity> の 9 グループ)で行う.「ややあり除外」の条件で mild を抜いた後も,各分割のクラス比が保たれるようにするため(下記「程度(ややあり)の扱い」).最小のグループは 51 枚で,比率 0.15 なら各分割に 8 枚程度入る
label と severity で決める.同じ患者に複数の severity がある場合(将来の複数枚)は,最も強いもの(strong > mild > normal)を使うStratifiedKFold(shuffle あり・seed 指定.層化ラベルは層化グループ)を使う.評価側を held_out と呼ぶ(fold 内でさらに val を取るかは Step 4・5 で決める).患者数が fold 数に満たないグループがあれば停止するruns/ にのみ保存する.SPEC_01「回収ホワイトリスト」)「ややあり」(mild)は,臨床上は淡紅(正常)と判断されることが多い境界例である(2026-09-27 ユーザー確認).学習に入れるか否かで結果が変わりうるため,入れる場合と入れない場合の両方で実験する.
設定 data.severities(SPEC_01「設定ファイル」)で使う程度を選ぶ.
| 条件 | data.severities | 使う画像 | 枚数 |
|---|---|---|---|
| ややあり込み | [strong, mild, normal](既定) | すべて | 1085 |
| ややあり除外 | [strong, normal] | 「あり」と淡紅(正常) | 754 |
label は元のまま(5 クラス).「ややあり」を淡紅に付け替える扱いは行わないnormal のみ,他の 4 クラスは strong が残るため)data.severities に関わらず,manifest 全体(1085 枚)で 1 回だけ行う.条件ごとの除外は,分割の後に各分割(train / val / test)から該当する画像を取り除いて適用する| 評価 | 対象 | 目的 |
|---|---|---|
| 条件間の比較 | test のうち strong と normal(両条件に共通する部分) | 同じデータで 2 つの条件のモデルを比べる |
| ややあり込みモデルの層別評価 | test 全体と,mild の部分 | 境界例でどれだけ誤るか(「評価指標」の層別評価) |
| ややあり除外モデルに mild を推論させる | test のうち mild | mild の画像が 淡紅と予測される割合と元のクラスと予測される割合を出す.臨床で淡紅と判断されやすいという知見がデータ上でも成り立つかを確かめる |
mild の画像に対して淡紅と予測することを「誤り」と断定しない.上表の割合として報告し,解釈は人間が行う実データのクラス分布は最大 / 最小 = 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 を回して振れ幅を確認する