PLAN_01 要件定義書の目的を満たすための実装順序.各ステップは /implement <タスク> で進める(実装 → テスト → リファクタリング → ドキュメント更新).
| Step | 内容 | 前提 |
| 1 | 基盤: 設定スキーマ・合成データ生成・manifest 読み込み・患者単位分割 | なし(手元で完結) |
| 2 | リモート実行ツール(送信・実行・回収・GPU 確認,回収ホワイトリスト) | Step 1 |
| 3 | データセット集計(実データの素性把握) | 臨床データのコピー完了・倫理確認 |
| 4 | 学習パイプライン最小版(ConvNeXt-Tiny を 1 本通す) | Step 2・3 |
| 5 | 評価・レポート生成(指標・混同行列・runs/ 出力) | Step 4 |
| 6 | ベースライン比較(TIASjudge のルールベース) | Step 5 |
| 7 | 実験反復(不均衡対策・モデル比較・解像度検討) | Step 6 |
| 8 | 結論(5-fold 交差検証・評価レポート・配布形式の判断) | Step 7 |
Step 1・2 はデータのコピー待ちの間に進められる.
- 成果物:
schema.py(pydantic 設定),data/manifest.py(読み込み・検証),data/split.py(患者単位分割),scripts/make_synthetic_dataset.py
- 完了条件: 合成 manifest で分割が患者単位に保たれ,同一 seed で再現することがテストで確認できる.不正な manifest が停止する
- 理由: 手元だけで完結し,以降すべての土台になる.最重要の「患者単位分割」をここで固める
- 成果物:
remote/・cli/remote.py(コード送信 / ジョブ実行 / 結果回収 / GPU 空き確認)
- 完了条件: コードを送って合成データの短い学習をサーバで実行し,結果を回収できる.回収ホワイトリストが効いており,画像・manifest が回収対象にならないことがテストで確認できる
- 注意: 非対話 ssh では
uv が PATH に無いため,ツール側で export PATH="$HOME/.local/bin:$PATH" を行う(ENV_02トラブルシューティング)
- 成果物: データセット集計コマンド,
scripts/build_manifest.py,集計レポート(docs/06_TEST/ に記録)
- 完了条件: 枚数・患者数・クラス分布・画像サイズ分布・破損件数が数値で判明し,SPEC_01・SPEC_02の未確定事項(マスク外領域の扱い・入力解像度・患者 ID の追跡可否・ラベルの保存形式)が確定する
- 前提: 研究室 PC → サーバのデータコピーと,倫理審査・データ利用許諾の確認が済んでいること
- 成果物:
models/・training/・学習コマンド,設定 YAML 1 本
- 完了条件: 手元で合成データ 1 エポックが通り,サーバで実データの学習が完走して
runs/<実験ID>/ が生成される
- 方針: 精度は問わない.「落ちずに回り,記録が残る」ことだけを見る
- 成果物:
evaluation/・評価コマンド(macro F1・クラス別指標・混同行列・学習曲線)
- 完了条件: val で選び test を最後に一度だけ見る運用が実装され,指標が既知の混同行列に対してテストで期待値と一致する
- 成果物:
baseline/(TIASjudge のルールベース診断),比較レポート
- 完了条件: 同一テストセットでルールベースと機械学習モデルの指標が並べて出る
- ここで決める: ルールベースを移植するか別リポジトリを参照するか(SPEC_02 の未確定事項)
- 成果物: 実験群(クラス不均衡対策・モデル比較・入力解像度・マスク外領域の埋め方)とその記録
- 完了条件: 各要因の効果が独立した実験として切り分けて記録されている
- 注意: 共用サーバのため使用する GPU を明示的に指定する
- 成果物: 5-fold 交差検証の結果,評価レポート,TIASjudge への引き渡し方針(配布形式)
- 完了条件: PLAN_01 の成功基準 4 項目が満たされ,「組み込むか・手法を変えるか」の判断材料が揃う
- Step 3 の結果で SPEC_01・SPEC_02 を更新してから Step 4 以降に進む(仕様変更は先にドキュメントへ反映する)
- 実験は 1 回の変更で 1 要因のみ変える(効果の切り分けができなくなるため)
- 各ステップ完了時に進捗を記録する(
.claude/rules/progress-log.md)