據(jù)集解析:從 58,945 張圖像的 17 關(guān)鍵點(diǎn)標(biāo)注到 YOLO26-pose 實(shí)戰(zhàn)訓(xùn)練)
Ultralytics COCO-Pose 數(shù)據(jù)集解析從 58,945 張圖像的 17 關(guān)鍵點(diǎn)標(biāo)注到 YOLO26-pose 實(shí)戰(zhàn)訓(xùn)練【免費(fèi)下載鏈接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics導(dǎo)讀COCO-Pose 是 Ultralytics 項(xiàng)目在人體姿態(tài)估計(jì)Pose Estimation任務(wù)上使用的主力訓(xùn)練與基準(zhǔn)數(shù)據(jù)集。它以微軟 COCO Keypoints 2017 為基礎(chǔ)將 58,945 張圖像中 156,165 個(gè)標(biāo)注人物組織為標(biāo)準(zhǔn)的 17 關(guān)鍵點(diǎn) YOLO 格式。本文基于倉(cāng)庫(kù)中該數(shù)據(jù)集的官方文檔與其配套源碼數(shù)據(jù)集 YAML、任務(wù)文檔、模型配置完整講解 COCO-Pose 的數(shù)據(jù)規(guī)模、目錄與標(biāo)注結(jié)構(gòu)、數(shù)據(jù)集 YAML 各字段語義、評(píng)測(cè)指標(biāo)并給出用yolo26n-pose.pt在 Python 與 CLI 下訓(xùn)練、驗(yàn)證、推理的端到端方案。讀完本文你可以理解 COCO-Pose 與普通 COCO 檢測(cè)數(shù)據(jù)集的區(qū)別并獨(dú)立完成從數(shù)據(jù)自動(dòng)下載到 YOLO26-pose 模型訓(xùn)練的完整流程。數(shù)據(jù)集概覽與在項(xiàng)目中的定位COCO-Pose 將 COCOCommon Objects in Context數(shù)據(jù)集改造為適合關(guān)鍵點(diǎn)/姿態(tài)估計(jì)任務(wù)的形式從 COCO Keypoints 2017 挑戰(zhàn)賽中選取了 58,945 張圖像以 17 關(guān)鍵點(diǎn)keypointschema 對(duì)其中的人物進(jìn)行標(biāo)注共覆蓋 156,165 個(gè)標(biāo)注人物、1,710,498 個(gè)獨(dú)立關(guān)鍵點(diǎn)。它是項(xiàng)目?jī)?nèi)用于訓(xùn)練與基準(zhǔn)測(cè)試關(guān)鍵點(diǎn)模型如 YOLO26-pose的標(biāo)準(zhǔn)數(shù)據(jù)集。在 Ultralytics 倉(cāng)庫(kù)中COCO-Pose 與用于快速冒煙測(cè)試的迷你版 COCO8-Pose 形成大訓(xùn)練集 小驗(yàn)證集搭配COCO8-Pose 僅取 COCO train2017 前 8 張圖像4 訓(xùn)練 / 4 驗(yàn)證約 1 MB格式與 COCO-Pose 完全一致同為 17 關(guān)鍵點(diǎn)、單 person 類、相同flip_idx適合先跑通訓(xùn)練管線再切換到完整 COCO-Pose。屬性COCO-PoseCOCO8-Pose圖像總數(shù)58,945train 56,599 val 2,3468train 4 val 4標(biāo)注人物156,165少量驗(yàn)證用關(guān)鍵點(diǎn) schema17 個(gè)17 個(gè)類別person1 類person1 類下載體積約 20.2 GB首次使用約 1 MB用途正式訓(xùn)練與基準(zhǔn)管線排錯(cuò)與快速實(shí)驗(yàn)對(duì)應(yīng)的配置文件分別位于 ultralytics/cfg/datasets/coco-pose.yaml 與 ultralytics/cfg/datasets/coco8-pose.yaml兩者共享完全相同的 17 關(guān)鍵點(diǎn)與flip_idx定義這保證了小數(shù)據(jù)驗(yàn)證 → 大數(shù)據(jù)訓(xùn)練的無縫遷移。17 關(guān)鍵點(diǎn)標(biāo)注體系與關(guān)鍵特性每個(gè) person 標(biāo)注使用 17 種關(guān)鍵點(diǎn)類型按索引順序依次為鼻子nose0、左眼1、右眼2、左耳3、右耳4、左肩5、右肩6、左肘7、右肘8、左腕9、右腕10、左髖11、右髖12、左膝13、右膝14、左踝15、右踝16。這一索引順序在 姿態(tài)估計(jì)任務(wù)文檔 中被明確列出并在 coco-pose.yaml 的kpt_names中以 YAML 列表形式完整復(fù)現(xiàn)。標(biāo)注格式上每個(gè)關(guān)鍵點(diǎn)以(x, y, visibility)三元組存儲(chǔ)x、y關(guān)鍵點(diǎn)在圖像中的像素坐標(biāo)visibility可見性標(biāo)志0表示該點(diǎn)未標(biāo)注1表示已標(biāo)注但可能被遮擋2表示已標(biāo)注且可見。因此在數(shù)據(jù)集的kpt_shape: [17, 3]中17是關(guān)鍵點(diǎn)數(shù)量、3表示每點(diǎn)存儲(chǔ)x, y, visible三個(gè)維度若無需可見性標(biāo)志可寫作 2。這一維度約定同樣出現(xiàn)在 yolo26-pose.yaml 模型配置中說明數(shù)據(jù)集與模型的kpt_shape必須保持一致。除標(biāo)注格式外COCO-Pose 還有以下幾個(gè)關(guān)鍵特性標(biāo)準(zhǔn)化評(píng)測(cè)指標(biāo)沿用 COCO 的 Object Keypoint SimilarityOKS等指標(biāo)用于姿態(tài)估計(jì)任務(wù)的模型橫向?qū)Ρ绕湓u(píng)測(cè)通過標(biāo)準(zhǔn) mAPpose50-95、mAPpose50 等呈現(xiàn)左右翻轉(zhuǎn)支持?jǐn)?shù)據(jù)增強(qiáng)階段做水平翻轉(zhuǎn)時(shí)需要將左右對(duì)稱的關(guān)鍵點(diǎn)成對(duì)交換如左眼?右眼、左肩?右肩數(shù)據(jù)集 YAML 中的flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]正是這一映射索引 0 鼻子保持不變其余成對(duì)交換COCO8-Pose 與之完全相同下載體積提示首次使用約需 20.2 GBtrain2017.zipval2017.zip 標(biāo)簽文件。7 GB 的test2017.zip不會(huì)被自動(dòng)拉取因?yàn)槠鋱D像的真值ground truth被官方保留僅在向 CodaLab 的 test-dev2017 評(píng)測(cè)服務(wù)器提交時(shí)需要。數(shù)據(jù)集目錄結(jié)構(gòu)三個(gè)子集與自動(dòng)下載腳本從倉(cāng)庫(kù) coco-pose.yaml 的頭部注釋可以看到推薦目錄布局?jǐn)?shù)據(jù)集根目錄為datasets/coco-pose由path: coco-pose定義訓(xùn)練與驗(yàn)證通過.txt文件索引圖像列表。COCO-Pose 定義了下述三個(gè)子集Train201756,599 張圖像來自 COCO 2017 train 集用于訓(xùn)練姿態(tài)估計(jì)模型Val20172,346 張圖像用于訓(xùn)練過程中的驗(yàn)證Test-dev2017完整 40,670 張 test2017 圖像中的 20,288 張其真值被官方保留。YAML 中test: test-dev2017.txt指向該劃分僅用于向 COCO test-dev keypoints 評(píng)測(cè)服務(wù)器 提交。由于只保留含關(guān)鍵點(diǎn)標(biāo)注人物的圖像其標(biāo)注劃分比完整 COCO 的對(duì)應(yīng)集合更小。與完整 COCO 檢測(cè)集不同這里的 person 是唯一類別即names: {0: person}。YAML 末尾還內(nèi)嵌了可選的download腳本段首次使用時(shí)可自動(dòng)完成數(shù)據(jù)準(zhǔn)備from pathlib import Path from ultralytics.utils import ASSETS_URL from ultralytics.utils.downloads import download dir Path(yaml[path]) # dataset root dir # 先下載 pose 專用標(biāo)簽coco2017labels-pose.zip urls [f{ASSETS_URL}/coco2017labels-pose.zip] download(urls, dirdir.parent) # 再下載 train201719G/118k 圖與 val20171G/5k 圖test2017 因真值保留不自動(dòng)拉取 urls [ http://images.cocodataset.org/zips/train2017.zip, http://images.cocodataset.org/zips/val2017.zip, ] download(urls, dirdir / images, threads3)從上述腳本與配置可推斷Ultralytics 會(huì)自動(dòng)將下載的圖像與 COCO 關(guān)鍵點(diǎn)標(biāo)簽以 COCO JSON 組織解析并轉(zhuǎn)換為 YOLO 格式的txt標(biāo)簽每個(gè)關(guān)鍵點(diǎn)為class x1 y1 x2 y2 x3 y3 ...即邊界框后跟17 × 3個(gè)數(shù)值。這種規(guī)模的數(shù)據(jù)準(zhǔn)備適合在 GPU 算力托管的場(chǎng)景下進(jìn)行這也是文檔中建議大規(guī)模訓(xùn)練使用 Ultralytics Platform 管理計(jì)算資源、監(jiān)控訓(xùn)練任務(wù)的原因。深入解讀 coco-pose.yaml 數(shù)據(jù)集配置以下為倉(cāng)庫(kù)中 ultralytics/cfg/datasets/coco-pose.yaml 的關(guān)鍵字段與語義# 路徑數(shù)據(jù)集根目錄與三個(gè)劃分相對(duì) path path: coco-pose # 根目錄實(shí)際解析為 父目錄/coco-pose下載于此約 20.2 GB train: train2017.txt # 訓(xùn)練索引56599 張 val: val2017.txt # 驗(yàn)證索引2346 張 test: test-dev2017.txt # 測(cè)試劃分40670 中的 20288 張?zhí)峤恢?CodaLab # 關(guān)鍵點(diǎn)結(jié)構(gòu) kpt_shape: [17, 3] # 關(guān)鍵點(diǎn)數(shù) 17維度 3 表示 (x, y, visible) flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15] # 水平翻轉(zhuǎn)時(shí)左右配對(duì)交換索引 # 類別與關(guān)鍵點(diǎn)名 names: 0: person # 唯一類別 kpt_names: 0: [nose, left_eye, right_eye, left_ear, right_ear, left_shoulder, right_shoulder, left_elbow, right_elbow, left_wrist, right_wrist, left_hip, right_hip, left_knee, right_knee, left_ankle, right_ankle]字段說明要點(diǎn)path / train / val / test三者的取值可以是目錄、文件路徑如這里的train2017.txt圖像列表或路徑列表train、val、test均相對(duì)于path解析kpt_shape第一維是關(guān)鍵點(diǎn)數(shù)量第二維是每點(diǎn)的坐標(biāo)維度2 對(duì)應(yīng)(x, y)3 對(duì)應(yīng)(x, y, visible)。COCO-Pose 的[17, 3]與 COCO8-Pose 配置 及 YOLO26-pose 模型配置 完全一致flip_idx數(shù)據(jù)增強(qiáng)執(zhí)行水平翻轉(zhuǎn)時(shí)用于交換左右成對(duì)關(guān)鍵點(diǎn)。相比類別翻轉(zhuǎn)姿態(tài)任務(wù)還必須保持身體左右對(duì)稱點(diǎn)配對(duì)正確否則訓(xùn)練會(huì)因標(biāo)簽錯(cuò)位而顯著掉點(diǎn)names、kpt_names指定類別與每類關(guān)鍵點(diǎn)的可讀名稱前者供檢測(cè)/分類使用后者用于關(guān)鍵點(diǎn)可視化與輸出組織download一段 Python 腳本或 URL供 Ultralytics 數(shù)據(jù)準(zhǔn)備邏輯在檢測(cè)到數(shù)據(jù)缺失時(shí)自動(dòng)執(zhí)行。如果需要將該配置用于自定義姿態(tài)數(shù)據(jù)推薦先以 coco8-pose.yaml約 1 MB、立即可下載驗(yàn)證整套流程再切換到完整的coco-pose.yaml。COCO-Pose 預(yù)訓(xùn)練模型與性能基準(zhǔn)下表匯總了倉(cāng)庫(kù)在 COCO-Pose 上預(yù)訓(xùn)練的 YOLO26-pose 各尺寸模型指標(biāo)來源為 docs/macros/yolo-pose-perf.md其中 mAPpose50-95(e2e) 為端到端模式下的指標(biāo)模型輸入尺寸 (pixels)mAPpose50-95(e2e)mAPpose50(e2e)CPU ONNX (ms)T4 TensorRT10 (ms)參數(shù)量 (M)FLOPs (B)YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.5YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.423.9YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.1YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.3YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6201.7指標(biāo)口徑見 docs/en/tasks/pose.mdmAPval為 COCO Keypoints val2017 上的單模型單尺度驗(yàn)證結(jié)果可通過yolo val pose datacoco-pose.yaml device0復(fù)現(xiàn)Speed為 COCO val 圖像在 Amazon EC2 P4d 實(shí)例上的平均耗時(shí)可通過yolo val pose datacoco-pose.yaml batch1 device0|cpu復(fù)現(xiàn)Params 與 FLOPs為model.fuse()之后的融合模型數(shù)值合并 Conv 與 BatchNorm并對(duì)端到端模型移除輔助的 one-to-many 檢測(cè)頭預(yù)訓(xùn)練 checkpoint 保留完整訓(xùn)練結(jié)構(gòu)數(shù)值可能略高。從 yolo26-pose.yaml 可以看到這些模型共享同一套骨架以 P3/8–P5/32 三尺度特征輸出nc: 80COCO 類別經(jīng)Pose26(P3, P4, P5)檢測(cè)頭產(chǎn)生關(guān)鍵點(diǎn)end2end: True表明 YOLO26 使用端到端模式而reg_max: 1指定 DFL bins。模型配置中的kpt_shape: [17, 3]再次印證了它正是為 COCO-Pose 這類 17 關(guān)鍵點(diǎn)數(shù)據(jù)所設(shè)計(jì)??s放系數(shù)n/s/m/l/x通過[depth, width, max_channels]復(fù)合縮放控制模型大小如 n 版 363 層、約 374 萬參數(shù)。使用 COCO-Pose 訓(xùn)練 YOLO26-pose 模型用 Python 訓(xùn)練from ultralytics import YOLO # 加載模型推薦加載預(yù)訓(xùn)練權(quán)重進(jìn)行微調(diào) model YOLO(yolo26n-pose.pt) # load a pretrained model (recommended for training) # 在 COCO-Pose 上訓(xùn)練 100 個(gè) epoch輸入尺寸 640 results model.train(datacoco-pose.yaml, epochs100, imgsz640)用 CLI 訓(xùn)練# 從預(yù)訓(xùn)練 *.pt 權(quán)重開始訓(xùn)練 yolo pose train datacoco-pose.yaml modelyolo26n-pose.pt epochs100 imgsz640數(shù)據(jù)量較小時(shí)例如剛驗(yàn)證完 COCO8-Pose也可以從模型 YAML 直接構(gòu)建或先轉(zhuǎn)存預(yù)訓(xùn)練權(quán)重# 從 YAML 構(gòu)建新模型并從頭訓(xùn)練 yolo pose train datacoco8-pose.yaml modelyolo26n-pose.yaml epochs100 imgsz640 # 從 YAML 構(gòu)建模型并遷移預(yù)訓(xùn)練權(quán)重后訓(xùn)練 yolo pose train datacoco8-pose.yaml modelyolo26n-pose.yaml pretrainedyolo26n-pose.pt epochs100 imgsz640完整可調(diào)參數(shù)請(qǐng)查閱 Training 模式文檔。值得說明的是CLI 中的yolo pose train通過 入口模塊 的任務(wù)分發(fā)將datacoco-pose.yaml等鍵值參數(shù)傳給訓(xùn)練引擎coco-pose.yaml的文件名會(huì)被解析為倉(cāng)庫(kù)配置目錄下的數(shù)據(jù)集定義。驗(yàn)證ValCOCO-Pose 數(shù)據(jù)規(guī)模較大訓(xùn)練中通常使用其 val2017 劃分評(píng)估模型。訓(xùn)練完成后無需重復(fù)指定數(shù)據(jù)集——model會(huì)保留訓(xùn)練時(shí)的data與參數(shù)作為模型屬性from ultralytics import YOLO model YOLO(yolo26n-pose.pt) # 官方模型 model YOLO(path/to/best.pt) # 自定義訓(xùn)練模型 metrics model.val() # 無需參數(shù)自動(dòng)使用訓(xùn)練時(shí)的數(shù)據(jù)集與設(shè)置 metrics.box.map # box mAP50-95 metrics.pose.map # pose mAP50-95對(duì)應(yīng) mAP^pose 50-95 metrics.pose.map50 # pose mAP50 metrics.pose.map75 # pose mAP75 metrics.pose.maps # 每個(gè)類別各自的 mAP50-95(P) 列表 metrics.pose.image_metrics # 逐圖像 pose 指標(biāo)字典含 precision/recall/F1/TP/FP/FN對(duì)應(yīng)的 CLI 命令為yolo pose val modelyolo26n-pose.pt # 驗(yàn)證官方模型 yolo pose val modelpath/to/best.pt # 驗(yàn)證自定義模型推理Predict訓(xùn)練好的模型可用model.predict或yolo pose predict直接對(duì)圖像、視頻與實(shí)時(shí)流做姿態(tài)估計(jì)每個(gè)檢測(cè)到的人物實(shí)例輸出 17 組關(guān)鍵點(diǎn)及其可見性from ultralytics import YOLO model YOLO(yolo26n-pose.pt) results model(https://ultralytics.com/images/bus.jpg) for result in results: xy result.keypoints.xy # (N, 17, 2)像素坐標(biāo) xyn result.keypoints.xyn # (N, 17, 2)歸一化坐標(biāo) kpts result.keypoints.data # (N, 17, 3)含可見性/置信度CLI 形式為yolo pose predict modelyolo26n-pose.pt sourcehttps://ultralytics.com/images/bus.jpg。關(guān)鍵點(diǎn)推理結(jié)果的字段結(jié)構(gòu)在 任務(wù)文檔的 Results 部分 有完整說明其底層類型Keypoints與后處理實(shí)現(xiàn)在 推理結(jié)果模塊 中定義。評(píng)測(cè)指標(biāo)OKS 與 mAPposeCOCO-Pose 繼承自 COCO因此評(píng)測(cè)遵循 COCO 關(guān)鍵點(diǎn)挑戰(zhàn)的標(biāo)準(zhǔn)協(xié)議。核心指標(biāo)是Object Keypoint SimilarityOKS用于度量預(yù)測(cè)關(guān)鍵點(diǎn)與真值標(biāo)注的吻合程度$$ \mathrm{OKS} \frac{\sum_i \exp(-d_i^2 / 2 s^2 \kappa_i^2) \cdot \delta(v_i 0)}{\sum_i \delta(v_i 0)} $$其中d_i為第i個(gè)關(guān)鍵點(diǎn)的預(yù)測(cè)與真值歐氏距離s為目標(biāo)尺度κ_i為各關(guān)鍵點(diǎn)的歸一化常數(shù)per-keypoint sigmav_i為可見性標(biāo)志只有v 0的標(biāo)注關(guān)鍵點(diǎn)參與計(jì)算。匯總各 OKS 閾值0.50–0.95即可得到 mAPpose50-95這是表格中橫比模型精度的主要數(shù)字。由于只有被標(biāo)注可見或遮擋但已標(biāo)注的關(guān)鍵點(diǎn)才計(jì)入 OKS(x, y, visibility)三元組中的可見性字段直接參與評(píng)測(cè)這正是標(biāo)簽質(zhì)量影響模型成績(jī)的關(guān)鍵環(huán)節(jié)之一。應(yīng)用場(chǎng)景COCO-Pose 用于訓(xùn)練與評(píng)估關(guān)鍵點(diǎn)檢測(cè) / 姿態(tài)估計(jì)深度學(xué)習(xí)模型其大規(guī)模標(biāo)注與標(biāo)準(zhǔn)化評(píng)測(cè)使其成為人體姿態(tài)方向研究與工程實(shí)踐的基石資源典型應(yīng)用包括運(yùn)動(dòng)分析、健身動(dòng)作監(jiān)測(cè)、醫(yī)療康復(fù)輔助、人機(jī)交互等。如需進(jìn)一步了解模型在關(guān)鍵點(diǎn)檢測(cè)之外的使用方式可參考 Pose Estimation 任務(wù)文檔若需要自定義關(guān)鍵點(diǎn)數(shù)據(jù)也可以參考倉(cāng)庫(kù)中同目錄下的 Dog-Pose、Tiger-Pose、Hand Keypoints 等專門數(shù)據(jù)集。引用與致謝如果在研究或開發(fā)中使用 COCO-Pose 數(shù)據(jù)集請(qǐng)按 COCO 慣例引用以下論文misc{lin2015microsoft, title{Microsoft COCO: Common Objects in Context}, author{Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár}, year{2015}, eprint{1405.0312}, archivePrefix{arXiv}, primaryClass{cs.CV} }常見問題COCO-Pose 數(shù)據(jù)集是什么如何與 Ultralytics YOLO 姿態(tài)模型搭配使用COCO-Pose 將 COCO Keypoints 2017 的圖像與標(biāo)注轉(zhuǎn)換為 YOLO 關(guān)鍵點(diǎn)格式58,945 張圖像、17 關(guān)鍵點(diǎn) schema。將任何 Ultralytics YOLO pose 模型指向它即可訓(xùn)練即datacoco-pose.yaml其余可調(diào)參數(shù)見 Training 模式文檔。如何用 YOLO26 在 COCO-Pose 上訓(xùn)練加載yolo26n-pose.pt并調(diào)用model.train(datacoco-pose.yaml, epochs100, imgsz640)Python 與 CLI 的完整示例見上文使用 COCO-Pose 訓(xùn)練 YOLO26-pose 模型一節(jié)。COCO-Pose 提供哪些評(píng)測(cè)指標(biāo)與原始 COCO 類似核心是 OKSObject Keypoint Similarity用于評(píng)估預(yù)測(cè)關(guān)鍵點(diǎn)相對(duì)真值的精度進(jìn)而匯總為 mAPpose50-95、mAPpose50 等指標(biāo)實(shí)現(xiàn)不同模型間的公平比較。數(shù)據(jù)集如何劃分COCO-Pose 提供兩個(gè)含標(biāo)注的劃分56,599 張 train2017 與 2,346 張 val2017。第三個(gè)劃分 test-dev2017完整 40,670 張 test2017 中的 20,288 張真值保持私有其 YAML 配置關(guān)聯(lián)到 COCO test-dev keypoints 評(píng)測(cè)服務(wù)器。關(guān)鍵特性與應(yīng)用有哪些COCO-Pose 使用 17 種人體關(guān)鍵點(diǎn)類型并繼承 COCO 的標(biāo)準(zhǔn)化指標(biāo)含 OKS適合運(yùn)動(dòng)分析、醫(yī)療健康與人機(jī)交互等人體姿態(tài)場(chǎng)景。各尺寸的預(yù)訓(xùn)練 YOLO26-pose 權(quán)重列表參見上文性能基準(zhǔn)表。【免費(fèi)下載鏈接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考