這是使用 YOLOv7-seg(PyTorch)進行實例分割(instance segmentation)的主控台/終端機流程,支援 Windows 11 與 Ubuntu Linux 24.04。實例分割不只找出物件位置,還會描出每一個物件的實際輪廓,因此同一類別的兩個物件也能分開。核心引擎為 WongKinYiu/yolov7 的 u7/seg 分支(GPL),各資料集的設定由 coco.yaml、yolov7-seg.yaml 與 hyp.scratch-high.yaml 控制。內附兩組附有訓練好權重的範例資料集:nucleus(細胞核,預設)與 CT(肝臟電腦斷層)。推論可以直接執行,用 CPU 也跑得起來;訓練則實際上需要 NVIDIA GPU。標註使用內附的網頁工具,以 Labelme JSON(多邊形)模式進行。
[資料夾結構]
- CLAUDE.md / AGENT.md:程式規格書(內容相同)。
- CHANGELOG.md:變更紀錄。
- copyright.txt:版權聲明。
- 2207.02696.pdf:YOLOv7 的參考論文。
- data/{dataset}/:label.names、coco.yaml、yolov7-seg.yaml、hyp.scratch-high.yaml、由步驟 5 產生的 train.txt 與 val.txt 影像清單,以及 train/ 與 val/(各自有 images/、annotations/、labels/)與 test/images/。
- model/{dataset}/:best.pt(訓練好的權重,訓練時會被覆蓋)、logs/(TensorBoard 紀錄)、output/(標註後的結果影像)。
- src/:核心引擎(segment/、models/、utils/),以及包裝程式、啟動腳本與本說明文件。
- src/annotation/:內附的 aiohttp 標註伺服器,由步驟 3 啟動。
- tool/tools.py:共用函式。
- venv/:Python 虛擬環境,由步驟 1 建立。
[執行環境需求]
- 作業系統:Windows 11 或 Ubuntu Linux 24.04。
- Python 3 與 pip。
- 推論可在 CPU 執行;訓練則實際上需要 NVIDIA GPU。
- 攝影機推論(步驟 10)需要桌面環境與攝影機。
- 相依套件記錄於 src/requirements.txt,由步驟 1 自動安裝。
[操作步驟及說明]
步驟 1:建立虛擬環境
刪除舊的 venv/,重新建立虛擬環境並安裝 src/requirements.txt。若電腦有 NVIDIA 顯示卡,請改用 GPU 版的腳本,它會換成 CUDA 12.8(cu128)版的 torch,需要驅動程式的 CUDA 版本在 12.8 以上(可用 nvidia-smi 確認)。
Windows 11(CPU):src\01_venv_create.bat
Windows 11(GPU):src\01_venv_create_gpu.bat
Ubuntu 24.04(CPU):bash src/01_venv_create.sh
Ubuntu 24.04(GPU):bash src/01_venv_create_gpu.sh
步驟 2:啟用虛擬環境
啟用剛才建立的虛擬環境。Linux 請使用 source 的方式執行,否則環境變數不會套用到目前的終端機。
Windows 11:src\02_venv_activate.bat
Ubuntu 24.04:source src/02_venv_activate.sh
步驟 3:標註影像(使用自己的資料才需要)
啟動標註網頁工具(連接埠 8801),以 Labelme JSON(多邊形)模式畫出物件輪廓。可用 --dataset 與 --split train|val|test 指定要標註的資料集與分割。
Windows 11:src\03_annotation.bat
Ubuntu 24.04:bash src/03_annotation.sh
步驟 4:將標註轉成 YOLO-seg 格式(使用自己的資料才需要)
把 Labelme 的多邊形標註轉成 YOLO-seg 的標註 txt,train 與 val 都會處理。
Windows 11:src\04_convert_yolo_format.bat
Ubuntu 24.04:bash src/04_convert_yolo_format.sh
步驟 5:建立影像清單(使用自己的資料才需要)
產生訓練時要讀取的 train.txt 與 val.txt 影像清單。
Windows 11:src\05_prepare.bat
Ubuntu 24.04:bash src/05_prepare.sh
步驟 6:訓練模型(選用)
訓練 YOLOv7-seg。請注意這一步會覆蓋 model/{dataset}/best.pt,若想保留內附的權重,請先自行備份。
Windows 11:src\06_train.bat
Ubuntu 24.04:bash src/06_train.sh
步驟 7:觀察訓練過程(選用)
以連接埠 6066 啟動 TensorBoard,讀取 model/{dataset}/logs/。按 Ctrl+C 可停止。
Windows 11:src\07_tensorboard.bat
Ubuntu 24.04:bash src/07_tensorboard.sh
步驟 8:對單一影像推論
對一張影像做分割,預設使用 test 資料夾的第一張影像,門檻值為 0.5,結果會存到 model/{dataset}/output/。
Windows 11:src\08_inference.bat
Ubuntu 24.04:bash src/08_inference.sh
步驟 9:對整個資料夾推論並統計
一次處理整個資料夾,並依檔名前綴統計漏檢(underkill)、誤檢(overkill)與正確的比例。
Windows 11:src\09_inference_folder_1.bat
Ubuntu 24.04:bash src/09_inference_folder_1.sh
步驟 10:對攝影機畫面推論(選用)
以視窗顯示攝影機的即時分割結果,需要桌面環境。
Windows 11:src\10_inference_webcam.bat
Ubuntu 24.04:bash src/10_inference_webcam.sh
步驟 11:清除虛擬環境(選用)
不再需要時,可刪除 venv/ 資料夾以釋放磁碟空間。
Windows 11:src\99_venv_clear.bat
Ubuntu 24.04:bash src/99_venv_clear.sh
[使用自己的資料集]
- 要切換到內附的第二組資料集,在任何指令後面加上 --dataset CT 即可。
- 使用自己的資料時,先執行 03_annotation 畫出多邊形標註。
- 修改 label.names,並複製與調整 coco.yaml 與 yolov7-seg.yaml 以符合自己的類別。
- 依序執行 04_convert_yolo_format、05_prepare、06_train(可用 07_tensorboard 觀察),最後以步驟 8、9 做推論。
[GPU 設定]
- PyPI 預設的 torch 套件在 Windows 上只支援 CPU。若要使用 NVIDIA GPU,請安裝與驅動程式 CUDA 版本相符的 torch(可用 nvidia-smi 查看)。
- 最簡單的做法是直接執行 01_venv_create_gpu。
- 若要手動安裝,以 CUDA 12.8 的驅動程式為例:
pip uninstall -y torch torchvision
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
啟動腳本會自動偵測 CUDA。
[參考資料]
- YOLOv7 論文(Wang et al. 2022,已附於 2207.02696.pdf):arxiv.org/abs/2207.02696
- yolov7 u7/seg 分支(本範例的引擎來源,GPL):github.com/WongKinYiu/yolov7/tree/u7/seg
- PyTorch 安裝說明:pytorch.org/get-started/locally
這個 SDK 內建於 MYAI Studio 人工智慧開發工具。
單獨購買價格:5,000元,永久授權,單一 SDK 授權,單機授權,一次下載,一年電子郵件範例諮詢服務。如果是軟體客製化問題,請購買我們的客製化顧問服務點數。