使用 MobileNetV3-SSDLite-300(Single Shot MultiBox Detector,PyTorch)進行物件偵測的命令列(主控台)流程,可在 Windows 11 與 Ubuntu Linux 24.04 執行。引擎程式(qfgaohao/pytorch-ssd)位於 src/ssd/。內附範例資料集 steel(鋼材表面瑕疵,共 4 個類別:inclusion、patches、rolled_in_scale、scratches)與訓練完成的檢查點,因此推論可直接執行,即使只有 CPU 也能跑。訓練是從零開始(沿用原始 Notebook 的設定),實務上建議使用 NVIDIA GPU,訓練過程可透過 TensorBoard 觀察。

[資料夾結構]

  • CLAUDE.md / AGENT.md:程式規格文件,兩個檔案內容完全相同。
  • CHANGELOG.md:版本變更紀錄。
  • copyright.txt:版權聲明。
  • 1905.02244.pdf:MobileNets 參考論文。
  • data/{dataset}/labels.txt:以逗號分隔的類別清單,供訓練讀取(步驟 04 產生)。
  • data/{dataset}/voc-model-labels.txt:第一行為 BACKGROUND,之後每行一個類別,供推論讀取(步驟 04 產生,訓練時會重新產生)。
  • data/{dataset}/train/ 與 valid/:各自包含 image/ 與 annotation/(Pascal VOC XML),以及步驟 04 產生的 train.txt / valid.txt。
  • data/{dataset}/test/:包含 image/ 與 annotation/,是保留下來供推論(步驟 07 至 09)使用的測試集。
  • model/{dataset}/:mb3-ssd-lite-Epoch-37920.pth(訓練完成的檢查點)、logs/(TensorBoard 紀錄)、output/(標註後的推論結果),以及訓練過程的檢查點。
  • src/ssd/:引擎程式(train_ssd.py、run_ssd_example.py、inference_folder_1.py、vision/)。
  • src/annotation/:內建的 aiohttp 標註伺服器(步驟 03)。
  • tool/tools.py:共用工具函式。
  • src/:包裝程式進入點、啟動腳本與本說明文件。
  • venv/:Python 虛擬環境,由步驟 01 建立。

[操作步驟及說明]

1. 01_venv_create.bat / 01_venv_create.sh

刪除舊的 venv/,建立全新的虛擬環境,並安裝 src/requirements.txt 中的相依套件。若 pip 安裝失敗,會直接中止並顯示錯誤訊息。

 

2. 01_venv_create_gpu.bat / 01_venv_create_gpu.sh

與步驟 01 相同,但會接著把 torch 換成 CUDA 12.8(cu128)版本,適用於配備 NVIDIA GPU 的機器(驅動的 CUDA 版本需 >= 12.8,可用 nvidia-smi 查詢)。

 

3. 02_venv_activate.bat / 02_venv_activate.sh

啟用虛擬環境。Linux 請以 source 方式執行:source src/02_venv_activate.sh。

 

4. 03_annotation.bat / 03_annotation.sh

啟動標註網頁介面,預設連接埠為 8801。參數:--dataset、--split(train / valid / test)、--port。

 

5. 04_prepare.bat / 04_prepare.sh

依據影像與標註檔,產生 train.txt、valid.txt 以及兩個類別清單檔案。

 

6. 05_train.bat / 05_train.sh

訓練 MobileNetV3-SSDLite-300。從零開始訓練,並自動偵測 GPU;按 Ctrl+C 即可停止。

 

7. 06_tensorboard.bat / 06_tensorboard.sh

在連接埠 6066 啟動 TensorBoard,讀取 model/{dataset}/logs/;按 Ctrl+C 停止。

 

8. 07_inference.bat / 07_inference.sh

對單張影像進行物件偵測,預設影像為 data/steel/test/image/inclusion-9.jpg,門檻值 0.6。

 

9. 08_inference_folder.bat / 08_inference_folder.sh

對整個資料夾中的所有影像進行偵測,預設為測試集,門檻值 0.5。

 

10. 09_inference_folder_1.bat / 09_inference_folder_1.sh

資料夾推論並輸出統計數據:依檔名前綴判定類別(例如 inclusion-9.jpg 對應 inclusion),計算漏檢率(underkill)、過殺率(overkill)與正確率(right rate)。

 

11. 99_venv_clear.bat / 99_venv_clear.sh

刪除 venv/ 虛擬環境資料夾。

 

[Python 程式進入點]

src/annotation_server.py

  • --dataset steel:資料集資料夾名稱
  • --split:train、valid 或 test
  • --port 8801:連接埠
  • --no-browser:不自動開啟瀏覽器

內建的 Pascal VOC XML 標註介面,標註結果會寫入 data/{dataset}/{split}/annotation/。

 

src/prepare.py

  • --dataset steel:資料集資料夾名稱

產生影像清單、labels.txt(逗號分隔,供訓練讀取)與 voc-model-labels.txt(第一行 BACKGROUND,之後每行一個類別,供推論讀取)。

 

src/train.py

  • --dataset steel:資料集資料夾名稱
  • --epochs 200000:訓練回合數
  • --batch-size 8:批次大小
  • --learning-rate 0.01:學習率
  • --validation-epochs 20:每幾個 epoch 進行一次驗證
  • --workers 0:資料載入的執行緒數,Windows 請保持 0
  • --pretrained:預訓練權重路徑(選用)
  • --resume:接續訓練的檢查點路徑(選用)
  • --clear-logs:清空既有的 TensorBoard 紀錄(選用)

每次驗證都會將 mb3-ssd-lite-Epoch-{N}-Loss-{L}.pth 儲存至 model/{dataset}/,TensorBoard 紀錄則寫入 model/{dataset}/logs/。當驗證損失已達可接受的程度時,按 Ctrl+C 即可停止訓練。

 

src/tensorboard_server.py

  • --dataset steel:資料集資料夾名稱
  • --port 6066:連接埠
  • --no-browser:不自動開啟瀏覽器

用於檢視訓練曲線的 TensorBoard。

 

src/inference.py

  • --dataset steel:資料集資料夾名稱
  • --source:輸入影像路徑
  • --weights:模型權重路徑
  • --threshold 0.6:偵測門檻值
  • --show:顯示結果影像

標註後的影像會輸出至 model/{dataset}/output/。若系統沒有 GPU,會自動以 CPU 執行。

 

src/inference_folder.py

  • --dataset steel:資料集資料夾名稱
  • --source:輸入資料夾路徑
  • --weights:模型權重路徑
  • --threshold 0.5:偵測門檻值
  • --stats:輸出漏檢率、過殺率與正確率統計
  • --show:顯示結果影像

[快速開始]

Windows 11

src\01_venv_create.bat

src\07_inference.bat

src\05_train.bat(需 GPU 機器)

 

Ubuntu 24.04

bash src/01_venv_create.sh

bash src/07_inference.sh

bash src/05_train.sh(需 GPU 機器)

 

若要使用自己的資料,完整流程為:03_annotation(標註 train 與 valid)→ 04_prepare → 05_train(以 06_tensorboard 觀察,按 Ctrl+C 停止)→ 07 至 09 進行推論,並以 --weights model/{dataset}/mb3-ssd-lite-Epoch-{N}-Loss-{L}.pth 指定訓練好的權重。

[GPU 設定]

PyPI 預設的 torch 套件在 Windows 上僅支援 CPU。若要使用 NVIDIA GPU,請安裝與顯示卡驅動的 CUDA 版本相符的套件(可用 nvidia-smi 查詢)。例如驅動為 CUDA 12.8 時:

pip uninstall -y torch torchvision

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128

 

或是直接執行 01_venv_create_gpu 即可。引擎會自動偵測 CUDA,若無法使用則自動改以 CPU 執行。

[參考資料]

 

這個 SDK 內建於 MYAI Studio 人工智慧開發工具。

 

單獨購買價格:3,000元,永久授權,單一 SDK 授權,單機授權,一次下載,一年電子郵件範例諮詢服務。如果是軟體客製化問題,請購買我們的客製化顧問服務點數。