MediSeg.AIは、深層学習ベースの医用画像セグメンテーション技術の習得を目指す研究開発プロジェクトです。画像解析の経験(例:ガラス傷検出)を活用し、医療診断という挑戦的で影響力のある分野に応用します。
- 基礎習得: 標準データセットを使用して、データ前処理からモデル評価までのセマンティックセグメンテーションパイプラインの理解を構築
- 医療応用: 特殊なフォーマットと課題を扱いながら、実世界の医用画像データセットにこれらの技術を適応・応用
- 比較分析: 異なるモデルアーキテクチャとデータ拡張戦略の性能を実験・比較
- ベースライン: Pascal VOC 2012検証セットでIoU(Intersection over Union)スコア0.75以上を達成
- 医療タスク: 選択した医療データセット(例:BraTS2020検証セット)でDice係数0.80以上を達成
- 最終成果物: すべてのソースコード、訓練済みモデル重み、実験結果を含む文書化されたGitHubリポジトリ
- 少なくとも2つのセグメンテーションモデル(例:U-Net、DeepLabV3+)の実装と訓練
- 標準(Pascal VOC)と医療(例:BraTS、ISIC)データセットの両方のデータローダー開発
- NIfTI(.nii)やDICOMなどの医療画像フォーマットの処理
- 堅牢な評価指標(IoU、Dice係数)の実装
- データ拡張技術の系統的な実験
- 分析のためのセグメンテーション結果の可視化
- 実験管理システム(Weights & Biases、TensorBoard)の実装
- コード品質管理(Black、Flake8、MyPy)の導入
- 当初スコープ外としていた GUI・Web アプリ・API については、現在 Web GUI および REST API を提供しています。起動方法・API 一覧は USAGE.md および docs/FRONTEND_BACKEND.md を参照してください。
- リアルタイム臨床使用のためのデプロイメントは対象外です。
- プログラミング言語: Python 3.8+
- 深層学習フレームワーク: PyTorch, TensorFlow/Keras
- GPU環境: Google Colaboratory(推奨)、またはNVIDIA GPU搭載のローカルマシン
- 画像処理: OpenCV, Albumentations(データ拡張用), Scikit-image
- 医用画像: SimpleITK, Nibabel(NIfTI/DICOMファイル処理用)
- データ処理: NumPy, Pandas, Matplotlib, Seaborn
- 開発環境: Jupyter Notebook, Git & GitHub
- 実験管理: Weights & Biases (wandb), TensorBoard
- コード品質: Black(フォーマッター), Flake8(リンター), MyPy(型チェッカー)
- テスト: Pytest
- 仮想環境: uv venv(推奨)。原則として
uv runでコマンド実行し、手動の activate は不要
このプロジェクトは3つの主要フェーズに分かれています。
- 目標: エンドツーエンドのセグメンテーションパイプラインの習得
- タスク:
- [1週目]: 開発環境のセットアップ(uv venv使用)。U-Netアーキテクチャの深掘り
- [2週目]: Pascal VOC 2012データセットのデータローダー実装。訓練と検証ループの実装
- [3週目]: U-Netモデルの訓練。IoUを使用した評価の実装と結果の可視化。ベースライン成功指標の達成
- 目標: 医療セグメンテーションタスクのためのパイプラインの適用と改良
- タスク:
- [4週目]: 主要医療データセットの研究と選択(下記提案参照)。NIfTIなどのフォーマットを読み込み・処理するための
NibabelやSimpleITKの使用方法を学習 - [5-6週目]: 選択した医療データセットのカスタムデータローダー実装。3Dデータの処理(該当する場合)、正規化、特定の前処理ステップを含む
- [7-8週目]: U-Netモデルの適応と新しいデータセットでの再訓練。ハイパーパラメータの微調整とDice係数を使用した結果の分析
- [4週目]: 主要医療データセットの研究と選択(下記提案参照)。NIfTIなどのフォーマットを読み込み・処理するための
- 目標: モデル性能の向上と理解の深化
- タスク:
- [9-10週目]: 医療画像に特化した高度なデータ拡張技術(例:弾性変形、ガンマ補正)の実装とテスト
- [11-12週目]: **DeepLabV3+**のようなより高度なモデルの実装とU-Netベースラインとの性能比較
- [継続]: すべての知見の文書化。コードの可読性向上とGitHubへの公開
-
BraTS(Brain Tumor Segmentation)チャレンジ:
- 説明: 脳腫瘍のセグメンテーション用MRIスキャン。3Dデータ(スライスごとまたは完全な3D畳み込み)の作業に最適なチャレンジ
- フォーマット: NIfTI(.nii.gz)
- 取得方法: BraTS公式サイトでの申請が必要
-
ISIC(International Skin Imaging Collaboration)チャレンジ:
- 説明: 皮膚病変セグメンテーション用のダーモスコピー画像。メラノーマ検出に直接適用可能な優れた2Dセグメンテーションタスク
- フォーマット: JPEG
- 取得方法: ISIC公式サイトからダウンロード可能
-
COVID-19放射線データベース:
- 説明: COVID-19の影響を受けた領域をセグメンテーションするための胸部X線画像のコレクション
- フォーマット: PNG
- 取得方法: Kaggleからダウンロード可能
ISICから始めることが推奨されることが多く、2D画像を扱うため、Pascal VOCからの移行がスムーズです。BraTSは3Dデータの処理という挑戦に最適なフォローアップです。
MediSeg-AI/
├── .venv/ # 仮想環境
├── data/ # データセット格納
│ ├── pascal_voc/ # Pascal VOC 2012
│ ├── medical/ # 医療データセット
│ │ ├── isic/ # ISIC データセット
│ │ └── brats/ # BraTS データセット
├── backend/ # バックエンド (Python)
│ ├── mediseg_ai/ # メインパッケージ
│ │ ├── models/ # モデル定義
│ │ │ ├── unet.py # U-Net実装
│ │ │ └── deeplabv3plus.py
│ │ ├── data_loaders/ # データローダー
│ │ ├── training/ # 訓練スクリプト
│ │ ├── evaluation/ # 評価スクリプト
│ │ └── utils/ # ユーティリティ
│ ├── gui/ # GUI関連 (Web/Desktop)
│ └── tests/ # テストコード
├── frontend/ # フロントエンド (React/Vite)
├── notebooks/ # Jupyter Notebook
├── configs/ # 設定ファイル
├── results/ # 実験結果
├── main.py # メイン実行スクリプト
├── pyproject.toml # プロジェクト設定
├── .gitignore # Git除外設定
├── README.md # プロジェクト説明
└── USAGE.md # 使用方法ガイド
# 仮想環境(任意): uv venv で作成可能。uv run は自動で .venv を利用するため activate 不要
uv venv
# 依存関係のインストール(uv.lock から再現。開発・Web GUI 用は --extra を指定)
uv sync --extra dev --extra gui-web
# 実行はアクティベート不要
uv run python main.py demo# デモ実行(データセット不要)
uv run python main.py demo
# 実際の訓練(データセット準備後)
uv run python main.py train --data-dir data/pascal_voc- 深層学習: torch>=1.12.0, torchvision>=0.13.0
- 画像処理: opencv-python>=4.6.0, albumentations>=1.3.0
- 医用画像: SimpleITK>=2.2.0, nibabel>=4.0.0
- 実験管理: wandb>=0.13.0, tensorboard>=2.10.0
- 開発ツール: black>=22.0.0, flake8>=4.0.0, mypy>=0.950
- ✅ データローダー: Pascal VOC、ISIC用の完全なデータローダー実装
- ✅ モデルアーキテクチャ: U-Net、DeepLabV3+の完全実装
- ✅ 評価指標: IoU、Dice係数、感度、特異度の包括的実装
- ✅ 実験管理システム: Weights & Biases、TensorBoard対応
- ✅ コード品質管理: Black、Flake8、MyPyの設定完了
- ✅ 医療画像拡張: 弾性変形、ガンマ補正等の高度な拡張技術
- ✅ モデル比較システム: U-Net vs DeepLabV3+の性能比較機能
- 完全なU-Netアーキテクチャ: 医療画像セグメンテーション用
- DeepLabV3+モデル: 高度なセグメンテーションモデル
- 包括的な評価指標: Dice係数、IoU、感度、特異度
- 医療画像特化のデータ拡張: 弾性変形、ガンマ補正等
- 実験管理システム: Weights & Biases、TensorBoard対応
- モデル比較機能: 性能と効率の比較
- 完全な設定システム: YAML設定ファイル
- 詳細なドキュメント: 使用方法とAPI説明
# デモ実行
uv run python main.py demo
# Pascal VOC での訓練
uv run python main.py train --data-dir data/pascal_voc
# 医療画像での訓練
uv run python main.py train-medical --data-dir data/medical/isic
# モデル比較
uv run python main.py compare --dataset pascal_voc --data-dir data/pascal_voc詳細な使用方法については USAGE.md を参照してください。フロントエンドとバックエンドの連携(開発/本番の動かし方)は docs/FRONTEND_BACKEND.md を参照してください。
- フェーズ1: ✅ 完了 - 標準データセットでの基盤構築
- フェーズ2: ✅ 完了 - 医療画像への適応
- フェーズ3: ✅ 完了 - 実験・発展
- データセットのダウンロード: Pascal VOC 2012、ISIC
- 依存のインストール:
uv sync(必要に応じてuv sync --extra dev --extra gui-web) - デモの実行:
uv run python main.py demo - 実際の訓練: データセット準備後に
uv run python main.py train ...で訓練開始 - Google Colab で実行: docs/COLAB.md を参照し、MediSeg_AI_Colab.ipynb を Colab で開く。Colab で学習する手順は docs/COLAB_TRAINING_GUIDE.md を参照
- 学習環境のコスト比較(手持ちPC vs クラウド): docs/TRAINING_COST_COMPARISON.md
- 完全なセグメンテーションパイプライン: データローダーから評価まで
- 2つの高度なモデル: U-Net、DeepLabV3+
- 医療画像特化機能: 医用画像フォーマット対応、医療特化拡張
- 実験管理システム: 完全なログ機能と可視化
- 比較分析機能: モデル性能の定量的比較
- 医学研究: 皮膚病変、脳腫瘍、COVID-19等のセグメンテーション
- 教育用途: 深層学習と医療画像処理の学習
- 産業応用: 医療画像解析システムの基盤技術
- 学術研究: セグメンテーション手法の比較研究