「サイバー大学」のゼミナールとしての制作物です。目的と背景については医師は多数の患者を同時に担当することが多く、限られた時間の中で診断結果を精査し、治療の優先度を判断する必要があると考えました。そこで、診断結果の進行度に基づいて患者情報を整理・絞り込める機能を実装することで、短時間でより的確な判断と対応を支援することを目的としたシステムを制作しました。本システムは、Kaggleにて公開されている Obuli Sai Naren 氏による「Multi Cancer Dataset」を使用しています。このデータセットは CC BY-NC-SA 4.0(表示・非営利・継承) ライセンスのもとで提供されています。
工夫した点
ユーザー権限の設計
管理者・医師・検査技師それぞれの立場に応じて操作可能な機能を明確に分離し、誤操作や情報漏洩を防ぐよう設計しました。これにより、システムの安全性と使いやすさの両立を図りました。
業務効率化を意識したフィルター機能
医師アカウントでは、AIが予測した診断結果(白血病の進行度)に応じて担当患者を絞り込み表示できるようにし、限られた時間の中でも重症度の高い患者に迅速に対応できるよう工夫しました。
問題点
今回はKaggleの公開データセット(約20,000枚)を用いてモデルの学習を行い、高い精度(約100%)を達成しましたが、これは同一データセット内での評価結果であり、実際の運用環境での汎用性が担保されていない可能性があります。 また、現場で使用される医療機材や撮影条件が異なる場合、モデルの性能が低下するリスクも想定されます。
改善点・今後の課題
今回のデータセットに対しては、高精度で分類することができましたが、過学習が起こっていないかを判断するために、現場などの画像を基に分類を行い判断していく必要があり、過学習が起こっていた場合には、早期終了やDropoutの実装、アンサンブル学習、事前学習済みモデルをファインチューニングする方法に変更などを検討したいと考えています。また、実用化のためには現場の医療器材で取得されたデータセットの収集により、ノイズのあるデータでの学習も必要になると予想しています。
技術スタック・構成
- Djangoを用いたWebアプリケーション
- ユーザー権限別のログイン認証とダッシュボード機能
- PyTorch による画像分類モデルと連携し、患者画像の AI 推論
- Pillow や torchvision による画像前処理パイプライン
- 画像をアップロードすると、その場でAIが分類を行い、結果を表示します(Django同期処理 + PyTorchモデル)
機能の紹介
01管理ユーザー
管理ユーザーがログインすると、「患者」、「医師」、「検査技師」のデータを一覧で確認、作成することができます。
02検査技師の診断画像アップロード
検査技師のアカウントでログインをすると、患者をカルテ番号から絞り込み急性リンパ性白血病の診断画像をアップロードすることができ、AIによって進行度を予測し、最新の診断結果をデーターベースに保持します。
03進行度で絞り込む
医師のアカウントでログインをすると、担当患者が一覧表示され、診断画像で予測した進行度で患者を絞り込むことができます。