以 PyTorch 訓練並執行 Inception-v2 影像分類模型的命令列(主控台)範例,可在 Windows 11 與 Ubuntu Linux 24.04 執行。核心程式位於 src/examples/imagenet/,並可透過 --arch 參數選用多種網路架構,預設為 Inception-v2。內附的範例資料集 plate 為鋼板表面瑕疵影像,共 6 個類別(CR、IN、PA、PS、RS、SC),並隨附已訓練好的 Inception-v2 權重,因此可以直接進行推論。
[資料夾結構]
- CLAUDE.md / AGENT.md:程式規格文件,兩個檔案內容完全相同。
- CHANGELOG.md:版本變更紀錄。
- copyright.txt:版權聲明。
- 1512.00567.pdf:Inception-v2 / v3 參考論文。
- data/{dataset}/:labels_map.txt(類別清單,訓練時會重新產生),以及 train/、val/、test/ 三組資料夾,採用 torchvision ImageFolder 結構(每個類別各一個子資料夾)。
- model/{dataset}/:model_best.pth.tar(最佳權重)、checkpoint.pth.tar(最新權重)、logs/(TensorBoard 記錄)。
- tool/tools.py:共用工具函式。
- src/:包裝後的進入點、核心程式(examples/imagenet/)、啟動腳本與本說明文件。
- venv/:Python 虛擬環境,由步驟 01 建立。
[操作步驟及說明]
1. 01_venv_create.bat / 01_venv_create.sh
刪除舊的 venv/,建立全新的虛擬環境,並安裝 src/requirements.txt 中的相依套件。若 pip 安裝失敗,會直接中止並顯示錯誤訊息。
2. 02_venv_activate.bat / 02_venv_activate.sh
啟用虛擬環境。Linux 請以 source 方式執行:source src/02_venv_activate.sh。
3. 03_train.bat / 03_train.sh
訓練分類模型。預設參數:資料集 plate、架構 inception_v2、批次大小 32、影像尺寸 512、500 個 epoch、學習率 0.0001。若 model_best.pth.tar 已存在,會自動接續訓練。
4. 04_tensorboard.bat / 04_tensorboard.sh
開啟 TensorBoard 檢視 model/{dataset}/logs 的訓練記錄。位置參數為 [資料集] [連接埠],預設為 plate 與 6066。
5. 05_inference.bat / 05_inference.sh
對單張影像進行分類,預設使用 data/plate/test/IN/IN-1.png。
6. 06_inference_folder.bat / 06_inference_folder.sh
對整個資料夾中的影像進行分類,預設為 data/{dataset}/test,並輸出 Acc@1 與 Acc@5 準確率。
7. 07_inference_folder_topk.bat / 07_inference_folder_topk.sh
資料夾推論的另一種版本,輸出漏檢率(underkill)、過殺率(overkill)與正確率統計。
8. 99_venv_clear.bat / 99_venv_clear.sh
刪除 venv/ 虛擬環境資料夾。
[Python 程式進入點]
src/train.py
- --dataset plate:資料集名稱
- --arch inception_v2:網路架構
- --batch-size 32:批次大小
- --image-size 512:影像尺寸
- --epochs 500:訓練回合數
- --learning-rate 0.0001:學習率
- --workers 4:資料載入的執行緒數量
- --num-classes:類別數量(選用)
- --resume:接續訓練的權重檔路徑
- --pretrained:預訓練權重檔路徑
類別數量會依 data/{dataset}/train 底下的類別資料夾自動判斷。若 model/{dataset}/model_best.pth.tar 已存在,預設會自動接續訓練;加上 --resume "" 則從頭訓練。權重會存到 model/{dataset}/,TensorBoard 記錄存到 model/{dataset}/logs/(每次執行都會清空重建)。
src/inference.py
- --dataset plate:資料集名稱
- --arch inception_v2:網路架構
- --source:輸入來源,可以是單一影像或整個資料夾
- --batch-size 64:批次大小
- --image-size 512:影像尺寸
- --num-classes:類別數量(選用)
- --weights:使用的權重檔路徑(選用)
- --topk-right:資料夾模式改為輸出漏檢、過殺與正確率統計(選用)
- --show:顯示每張影像(選用,需要有桌面環境)
給檔案路徑會分類單張影像;給資料夾則會針對所有影像輸出 Acc@1 與 Acc@5 準確率。
[快速開始]
Windows 11
src\01_venv_create.bat
src\05_inference.bat
src\06_inference_folder.bat
src\03_train.bat
src\04_tensorboard.bat
Ubuntu 24.04
bash src/01_venv_create.sh
bash src/05_inference.sh
bash src/06_inference_folder.sh
bash src/03_train.sh
bash src/04_tensorboard.sh
由於隨附了已訓練好的權重,推論可以直接執行。Inception-v2 在 512 影像尺寸下運算量相當大,訓練實務上建議搭配 NVIDIA GPU,而以 CPU 進行資料夾推論也會很慢。
[GPU 設定]
在 Windows 上,PyPI 預設安裝的 torch 只支援 CPU。若要使用 NVIDIA GPU,請先以 nvidia-smi 確認驅動程式的 CUDA 版本,再安裝對應的版本,例如 CUDA 12.8:
pip uninstall -y torch torchvision
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
程式會自動偵測 CUDA,若無法使用則自動改用 CPU。
[參考資料]
- Rethinking the Inception Architecture 論文(Szegedy 等人 2015,隨附於 1512.00567.pdf):arxiv.org/abs/1512.00567
- EfficientNet-PyTorch(內含的原始專案):github.com/lukemelas/EfficientNet-PyTorch
- 其他網路架構來源:zjZSTU/GoogLeNet、weiaicunzai/pytorch-cifar100、d-li14/mobilenetv3.pytorch
- PyTorch 安裝說明:pytorch.org/get-started/locally
這個 SDK 內建於 MYAI Studio 人工智慧開發工具。
單獨購買價格:3,000元,永久授權,單一 SDK 授權,單機授權,一次下載,一年電子郵件範例諮詢服務。如果是軟體客製化問題,請購買我們的客製化顧問服務點數。