如何使用Python分析姿態估計數據集COCO?

當我們訓練姿勢估計模型,比較常用的數據集包括像COCO、MPII和CrowdPose這樣的公共數據集,但如果我們將其與不同計算機視覺任務(如對象檢測或分類)的公共可用數據集的數量進行比較,就會發現可用的數據集并不多。姿態估計問題屬于一類比較復雜的問題,為神經網絡模型建立一個合適的數據集是很困難的,圖像中每個人的每個關節都必須定位和標記,這是一項瑣碎而費時的任務。最流行的姿態估計數據集是COCO數據集,它有大約80類圖像和大約250000個人物實例。如果你檢查此數據集中的一些隨機圖像,你可能會遇到一些與要解決的問題無關的實例。學術界希望達到最高的精度,但在實際生產環境中并不總是如此。在現實世界中,我們可能更感興趣的是在非常特定的環境中工作良好的模型,例如行人、籃球運動員、健身房等。讓我們從COCO數據集中查看此圖像:

你看到紅點了嗎?這是關鍵點:鼻子。有時,你可能不希望網絡看到僅包含頭部一部分的示例,尤其是在幀的底部。在這篇文章中,我會向你展示COCO數據集的一個示例分析COCO數據集COCO數據集是用于許多計算機視覺任務的大規模通用數據集。150萬個對象實例,80個對象類別,25萬人——這些都讓這個數據集令人印象深刻。你可以在源站點上找到更多詳細信息,在那里你還可以下載所有必需的文件:https://cocodataset.org/數據集由圖像文件和注釋文件組成。注釋文件是一個JSON,包含關于一個人(或其他一些類別)的所有元數據。在這里我們會找到邊界框的位置和大小,區域,關鍵點,源圖像的文件名等。我們不必手動解析JSON。有一個方便的Python庫可用使用,即pycocotools(https://github.com/cocodataset/cocoapi/tree/master/PythonAPI)我們需要train2017.zip(https://cocodataset.org/#download),val2017.zip(https://cocodataset.org/#download),annotations_trainval2017.zip(https://cocodataset.org/#download)具體來說,我們只需要人的注釋。zip中有兩個文件:annotations_trainval2017.zip:person_keypoints_train2017.json和person_keypoints_val2017.json我建議將文件放在以下這個文件夾層次結構中:dataset_coco
|---annotations
|---person_keypoints_train2017.json
|---person_keypoints_val2017.json
|---train2017
|---*.jpg
|---val2017
|---*.jpg
下面是顯示如何加載注釋的代碼:from pycocotools.coco import COCO
...
train_annot_path = 'dataset_coco/annotations /person_keypoints_train2017.json'
val_annot_path = 'dataset_coco/annotations/person_keypoints_val2017.json'
train_coco = COCO(train_annot_path) # 加載訓練集的注釋
val_coco = COCO(val_annot_path) # 加載驗證集的注釋
...
# 函數遍歷一個人的所有數據庫并逐行返回相關數據
def get_meta(coco):
ids = list(coco.imgs.keys())
for i, img_id in enumerate(ids):
img_meta = coco.imgs[img_id]
ann_ids = coco.getAnnIds(imgIds=img_id)
# 圖像的基本參數
img_file_name = img_meta['file_name']
w = img_meta['width']
h = img_meta['height']
# 檢索當前圖像中所有人的元數據
anns = coco.loadAnns(ann_ids)
yield [img_id, img_file_name, w, h, anns]
...
# 迭代圖像
for img_id, img_fname, w, h, meta in get_meta(train_coco):
...
# 遍歷圖像的所有注釋
for m in meta:
# m是字典
keypoints = m['keypoints']
...
...
首先,我們必須加載COCO對象,它是json數據的包裝器(第6-7行)在第11行,我們加載所有圖像標識符。在接下來的幾行中,我們為每個圖像加載元數據,這是一個包含圖像寬度、高度、名稱、許可證等一般信息的詞典。在第14行,我們加載給定圖像的注釋元數據,這是一個字典列表,每個字典代表一個人。第27-32行顯示了如何加載整個訓練集(train_coco),類似地,我們可以加載驗證集(val_coco)將COCO轉換為Pandas數據幀讓我們將COCO元數據轉換為pandas數據幀,我們使用如matplotlib、sklearn 和pandas。這可用使得數據的過濾、可視化和操作變得更加容易,此外,我們還可以將數據導出為csv或parquet等。def convert_to_df(coco):
images_data = []
persons_data = []
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 特斯拉Optimus Gen3量產在即,哪些環節最具確定性?
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 4 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 5 Tesla AI5芯片最新進展總結
- 6 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 7 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 8 2026,人形機器人只贏了面子
- 9 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 10 AI Infra產業鏈卡在哪里了?


分享













