Python | OpenCV 資料標註
📚 前言
在上一篇 影片資料集建立與品質檢查 中,我們蒐集好了訓練所需的圖片。
接下來要進行的是 資料標註 (Data Annotation),也就是為每張圖片建立「正確答案」,讓模型知道圖片裡有什麼。
標註的品質直接影響模型的學習成效,錯誤或不一致的標註會讓模型學到錯誤的規則。
🔎 標註類型

圖:五種標註類型視覺對比 — 依序為圖片分類、語義分割、物件偵測、實例分割、關鍵點偵測
🏷 依照任務不同,標註方式也不同:
| 任務類型 | 英文名稱 | 標註方式 | 輸出形式 |
|---|---|---|---|
| 圖片分類 | Image Classification | 圖片放入對應類別資料夾 | 目錄結構即標籤,無額外檔案 |
| 語義分割 | Semantic Segmentation | 逐像素標記類別,同類別視為同一區塊 | 與原圖同尺寸的遮罩圖 |
| 物件偵測 | Object Detection | 框出矩形並標記類別,一張圖可多個框 | 每張圖一個 .txt,每行一個框 |
| 實例分割 | Instance Segmentation | 同語義分割,但每個實例有獨立遮罩 | 每個實例一張遮罩圖 |
| 關鍵點偵測 | Keypoint Detection | 標記特定部位座標,如五官、關節 | 座標列表,含 x、y 與可見性 |
🧠 標註格式說明

圖:物件偵測資料標註格式 Pascal VOC、COCO、YOLO 三種標註格式的對比
⚠️ 標註完成後,座標與類別資訊需要存成檔案。不同訓練工具對格式有各自要求,開始標註前先確認格式,避免事後轉換。
| 項目 | Pascal VOC | COCO | YOLO |
|---|---|---|---|
| 檔案類型 | .xml(一圖一檔) |
.json(整個資料集一檔) |
.txt(一圖一檔) |
| 座標系統 | 左上角 + 右下角 | 左上角 + 寬高 | 中心點 + 寬高 |
| 座標數值 | 像素絕對值 | 像素絕對值 | 歸一化(0 ~ 1) |
| 常用工具 | LabelImg | Roboflow、CVAT | LabelImg、CVAT |
| 適用場景 | 部分舊版工具、傳統模型 | 大型比賽、研究開發、模型評測 | YOLO 系列模型訓練 |
Pascal VOC 格式範例:
1 | <annotation> |
COCO 格式範例:
1 | { |
YOLO 格式範例:
1 | <class_id> <x_center> <y_center> <width> <height> |
🛠️ 標註工具介紹
| 工具 | 類型 | 費用 | 自動標記 | 核心限制 / 特性 | 支援格式 | 適合對象 |
|---|---|---|---|---|---|---|
| LabelImg | 本地端 | 完全免費 | ❌ | 開源,無任何功能限制 | YOLO、Pascal VOC | 預算為零、注重資料隱私的個人開發者 |
| CVAT | 網頁(可自架) | 免費(自架)/ 付費(雲端版) | ✅(需掛載模型) | 線上版有儲存空間限制;自架(Docker)完全免費 | YOLO、COCO、Pascal VOC 等 | 需要多人協作但不想支付高額月費的團隊 |
| Roboflow | 雲端 | 免費(公開資料集)/ 付費(私人) | ✅(Auto-Label,付費功能) | 免費版需公開資料集;私人專案與進階功能需付費 | YOLOv5、YOLOv8、COCO 等 | 追求開發效率與資料管理的團隊 |
⚠️ 注意事項
- 開始前先確認格式:標完才換格式需要全部重轉,事先確認訓練工具所需的格式,避免事後麻煩。
- 免費版的資料限制:Roboflow 免費版資料集需公開,涉及商業或隱私資料請在付費前確認授權條款。
- 格式不能混用:同一資料集的所有圖片必須使用同一種標註格式,不同格式混用會導致訓練失敗。
🎯 結語
了解標註類型、格式與工具之後,下一步就是實際動手標註。
下一篇進入 LabelImg 標註工具實戰,從安裝到操作一步步說明,並附上常見 bug 的修正方式。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
LabelImg GitHub
CVAT 官方網站
Roboflow 官方網站
COCO Dataset 格式說明
