Python | OpenCV YOLOv8 推論與匯出
📑 目錄
📚 前言
在上一篇 YOLOv8 訓練結果分析 中,我們確認了模型的訓練品質。
恭喜你!已經完成從資料集準備、預標籤、訓練,到結果分析的完整流程。
現在來到最後一步 —— 把訓練好的模型實際應用起來。
這一篇會教你:
- 如何對單張圖片、影片、即時攝影機進行推論
- 如何自訂繪製偵測結果
- 如何把模型匯出成 ONNX 格式(方便後續與 OpenCV 深度整合)
本篇所有範例都會用到前一篇訓練好的最佳模型:
1 | runs/detect/custom_detector/weights/best.pt |
若檔案不存在,請先確認 YOLOv8 訓練進階設定 的 train_full.py 是否正常跑完。
🎨 範例圖片與影片
圖片
- 來源:Cat Image。
- 下載後將檔名改為
test_cat.jpg,放在assets/,即可用於以下各範例。
影片
- 來源:Cat And Dogs Video。
- 下載後將檔名改為
test_cat_and_dog.mp4,放在assets/,即可用於影片推論範例。
💻 靜態圖片推論
說明:conf=0.5 是信心度門檻,建議從 0.5 開始調整,太低會有很多誤報,太高會漏掉物件。
1 | # inference_image.py |

圖:載入訓練好的 YOLOv8 模型對靜態圖片推論,取得邊界框座標、類別與信心度並儲存結果
💻 批次圖片推論
1 | # inference_batch.py |

圖:批次讀取目錄中的所有圖片一次送入模型推論,輸出各圖片的偵測類別並儲存標註結果
💻 影片推論
1 | # inference_video.py |

圖:對影片檔案執行 YOLOv8 推論,自動儲存標註後的輸出影片
💻 即時攝影機推論
1 | # inference_camera.py |
📝 註:由於本身沒有攝影鏡頭,所以無法示範效果。
💻 手動繪製偵測結果(自訂樣式)
若需要自訂邊界框顏色或字型,可不使用 .plot() 而自行繪製:
1 | # inference_camera_custom.py |
📝 註:由於本身沒有攝影鏡頭,所以無法示範效果。
💻 匯出為 ONNX
匯出 ONNX 後可用 cv2.dnn 或 onnxruntime 推論,不依賴 ultralytics:
1 | # export_onnx.py |

圖:將訓練好的 YOLOv8 模型匯出為 ONNX 格式,供跨平台部署使用
使用 onnxruntime 推論:
1 | # inference_onnx.py |

圖:使用 onnxruntime 載入 ONNX 模型,對圖片進行前處理並執行推論取得原始輸出張量
💡 ONNX 輸出的後處理(NMS、座標還原)較複雜,實際部署建議直接使用 ultralytics 的 Python API,或使用
cv2.dnn.readNetFromONNX搭配 YOLOv8 的後處理邏輯。
💻 其他匯出格式
各格式有平台限制,請依環境選擇:
| 格式 | 需求 | 適用場景 |
|---|---|---|
engine(TensorRT) |
NVIDIA GPU + TensorRT 安裝 | 伺服器端高速推論 |
coreml |
macOS 環境 | iPhone / iPad 部署 |
tflite |
無特殊需求 | Android / 嵌入式裝置 |
⚠️ 注意事項
conf閾值的設定:預設為 0.25,太低會有很多誤報,太高會漏掉低信心的正確偵測,需根據應用場景調整。iou閾值(NMS):預設為 0.7,控制重疊邊界框的過濾,物件密集的場景建議調低(如 0.5)。verbose=False:在即時推論的迴圈中必須設定,否則每幀都會輸出推論資訊,嚴重影響效能。- ONNX 的後處理:YOLOv8 的 ONNX 輸出格式在不同版本間可能略有差異,建議以 ultralytics 的 Python API 為主,ONNX 用於需要脫離 Python 環境的部署場景。
📊 應用場景
- 工廠自動品管:用訓練好的瑕疵偵測模型,對生產線即時攝影機畫面進行偵測。
- 倉庫商品辨識:偵測並定位貨架上的商品,輔助自動化盤點。
- 安全監控:偵測特定人員或行為,即時發出警報。
🎯 結語
至此,完整的 YOLOv8 自訓練物件偵測流程全部走完:
- 環境安裝 → 資料集準備 → 模型訓練 → 結果分析 → 推論與匯出
掌握這個流程,就能針對任何你想偵測的物件,從零開始訓練出專屬的 YOLOv8 模型。
下一篇是 YOLOv8 常見問題 Q&A,整理學完整個流程後最常遇到的問題,包含增加新類別、遷移學習策略與獨立模型的優缺點。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
Ultralytics YOLOv8 官方文件 — Predict
Ultralytics YOLOv8 官方文件 — Export
Ultralytics YOLOv8 官方文件 — Python Usage
ONNX Runtime 官方文件