155 lines
5.8 KiB
Markdown
155 lines
5.8 KiB
Markdown
# 胃試鏡疾病判斷系統
|
||
|
||
## 項目概述
|
||
|
||
本項目是一個基於深度學習的胃試鏡疾病自動診斷系統,主要用於檢測和分類胃部疾病,特別是胃癌(CA)。系統採用了分割和分類的兩階段方法,首先對胃試鏡圖像進行分割以識別可疑區域,然後對這些區域進行分類以確定是否存在疾病。
|
||
|
||
* 資料集類別: 3分類(胃癌、非胃癌但有病、正常資料)
|
||
* 基礎模型: Xception
|
||
|
||
## 主要功能
|
||
|
||
- **圖像預處理**:包括直方圖均衡化、自適應直方圖均衡化、銳化、HSV調整、伽馬校正等多種圖像增強方法
|
||
- **數據增強**:通過圖像生成器擴充訓練數據集
|
||
- **疾病分割**:使用GastroSegNet模型對胃試鏡圖像中的可疑區域進行分割
|
||
- **疾病分類**:使用修改版Xception模型對分割後的區域進行分類,分為正常(Normal)、胃癌(CA)和待確認(Have_Question)三類
|
||
- **結果可視化**:提供混淆矩陣、訓練曲線等可視化工具
|
||
|
||
## 系統架構
|
||
|
||
系統採用了兩階段的處理流程:
|
||
|
||
1. **分割階段**:使用GastroSegNet模型對輸入圖像進行分割,識別可疑區域
|
||
2. **分類階段**:
|
||
- 第一組分類器:區分正常(Normal)和其他(Others)
|
||
- 第二組分類器:區分胃癌(CA)和待確認(Have_Question)
|
||
|
||
## 環境要求
|
||
|
||
- Python 3.8+
|
||
- PyTorch 1.8+
|
||
- CUDA(推薦用於加速訓練)
|
||
- 其他依賴庫:torchvision, numpy, opencv-python, scikit-image, pandas等
|
||
|
||
## 使用方法
|
||
|
||
### 數據準備
|
||
|
||
1. 將訓練數據放置在`../Dataset/Training`目錄下
|
||
2. 將測試數據放置在`../Dataset/Testing`目錄下
|
||
3. 標註數據(XML格式)放置在`../Label_Image`目錄下
|
||
|
||
### 訓練模型
|
||
|
||
```bash
|
||
uv run main.py
|
||
```
|
||
|
||
訓練過程將自動執行以下步驟:
|
||
1. 數據預處理和增強
|
||
2. 訓練分割模型(GastroSegNet)
|
||
3. 使用分割模型處理圖像
|
||
4. 訓練分類模型(修改版Xception)
|
||
|
||
### 結果查看
|
||
|
||
訓練結果將保存在`../Result`目錄下,包括:
|
||
- 訓練曲線圖:`../Result/Training_Image`
|
||
- 混淆矩陣:`../Result/Matrix_Image`
|
||
- 訓練結果數據:`../Result/Training_Result`
|
||
- 最佳模型:`../Result/save_the_best_model`
|
||
|
||
## 項目結構
|
||
|
||
- `main.py`:程序入口點
|
||
- `experiments/`:實驗相關代碼
|
||
- `experiment.py`:實驗主流程
|
||
- `Training/`:訓練相關代碼
|
||
- `Models/`:模型定義
|
||
- `Image_Process/`:圖像處理相關代碼
|
||
- `Model_Loss/`:損失函數定義
|
||
- `Training_Tools/`:訓練工具
|
||
- `utils/`:工具函數和配置
|
||
|
||
## 配置說明
|
||
|
||
系統配置在`utils/Stomach_Config.py`中定義,主要包括:
|
||
|
||
- `Image_Enhance`:圖像增強方法
|
||
- `Loading_Config`:數據加載配置
|
||
- `Training_Config`:訓練參數配置
|
||
- `Model_Config`:模型參數配置
|
||
- `Save_Result_File_Config`:結果保存路徑配置
|
||
|
||
## 模型說明
|
||
|
||
### 分割模型(GastroSegNet)
|
||
|
||
用於識別胃試鏡圖像中的可疑區域,輸出分割掩碼。
|
||
|
||
### 分類模型(修改版Xception)
|
||
|
||
基於Xception架構,針對胃試鏡圖像分類任務進行了修改,主要用於區分正常、胃癌和待確認三類。
|
||
* 主執行檔: main.py
|
||
|
||
## load_process
|
||
### 負責讀取影像檔案、分割獨立資料(測試、驗證)、讀取獨立資料、一般檔案的操作
|
||
* File_Process : 檔案操作的主程式,包含開檔、創立檔案、判斷檔案是否存在等都是他負責的範圍。是一般物件也是LoadData的父物件
|
||
* LoadData : 讀檔主程式,一切讀檔動作由他開始。繼承File_Process(子物件)
|
||
* Cutting_Indepentend_Image : 讀取獨立資料(testing、Validation)的物件
|
||
|
||
## Calculate_Process
|
||
### 計算模型的評估指標的內容
|
||
* Calculate: 計算模型的評估指標的平均跟標準差,並將結果儲存到檔案中
|
||
|
||
## Image_Process
|
||
### 負責進行資料擴增、影像處理等的操作
|
||
* Image_Generator : 負責製造資料擴增的資料,並將資料存到檔案中。
|
||
* image_enhancement : 負責進行影像處理將資料強化。
|
||
*
|
||
|
||
## all_models_tools
|
||
### 模型的調控細節,如early stop、降低學習率和儲存最佳模型
|
||
* all_model_tools: call back的方法
|
||
|
||
## Model_Tools
|
||
### 負責進行模型的基礎架構,包含Convolution、Dense、以及其他模型的配件
|
||
* All_Model_Tools : 所有模型的附加工具,是所有的父類別
|
||
|
||
## CNN
|
||
### 包含所有CNN的工具與應用架構
|
||
* CNN_Tools : 為卷積層的工具,包含一維、二維、三維捲積。CNN_Application的父類別,繼承All_Model_Tools(子類別)
|
||
* CNN_Application : 為Convolution的應用架構。繼承CNN_Tools(子類別)
|
||
|
||
## Dense
|
||
### 包含所有Dense的應用
|
||
* Dense_Application : 為全連階層工具,包含一般Dense layer與增加正則化之Dense layer。繼承All_Model_Tools()
|
||
|
||
## Model_Construction
|
||
### 包含所有要進行實驗的模型架構
|
||
* Model_Constructions : 所有模型的實驗架構
|
||
|
||
## Data_Merge
|
||
### 負責進行資料的合併
|
||
* Merge : 負責合併Dict、List到List並匯出
|
||
|
||
## initalization
|
||
### 負責初始化特定物件
|
||
* Img_initalization : 針對影像資料的初始化
|
||
* Data_Initalization : 針對數據資料的初始化
|
||
|
||
## Validation_Program
|
||
### 負責驗證程式碼內的資料型態或輸入錯誤等問題
|
||
* Validation : 驗證程式碼錯誤
|
||
|
||
## draw_tools
|
||
### 負責畫圖的工具
|
||
* draw : 畫出混淆矩陣、走勢圖的工具
|
||
* Grad_CAM : 畫出模型可視化的熱力圖的工具
|
||
|
||
## Experiment
|
||
### 執行實驗的主程式
|
||
* Experiment : 負責執行讀檔、設定模型與實驗的細節、執行訓練、驗證結果等功能
|
||
* Model_All_Step : 執行模型的訓練流程設定與細節參數設定
|
||
* pytorch_Model: 設定模型的架構
|