一、Keypoints AP
Keypoints AP是一種評估人類姿態估計準確性的指標,是對人體關鍵點的檢測和姿態估計的評估標準。在深度學習領域中,一般使用COCO數據集進行Keypoints AP的計算。
Keypoints AP可以通過以下方式計算:
import pycocotools.coco as coco
from pycocotools.cocoeval import COCOeval
# 加載預測結果和真實結果
cocoGt = coco.COCO('path/annotations/person_keypoints_val2017.json')
cocoDt = cocoGt.loadRes('path/annotations/person_keypoints_val2017_fakekeypoints100_results.json')
# 初始化評估類
cocoEval = COCOeval(cocoGt, cocoDt, 'keypoints')
# 運行評估
cocoEval.evaluate()
cocoEval.accumulate()
cocoEval.summarize()
Keypoints AP: (AP, AP50, AP75, APm, APl, AR, AR50, AR75, ARm, ARl)
二、Keypoints熒光筆
Keypoints熒光筆是一種可視化方法,可以將預測的人體關鍵點標記在圖片上。在python中,可以使用OpenCV庫進行Keypoints熒光筆的繪製。
以下是Keypoints熒光筆的示例代碼:
import cv2
import numpy as np
# 加載圖片和預測結果
img = cv2.imread('path/image.jpg')
points = np.array([[10, 20], [30, 40], [50, 60]])
# 用紅色圓圈標記關鍵點
for point in points:
cv2.circle(img, tuple(point), 5, (0, 0, 255), -1)
# 展示結果
cv2.imshow('Keypoints', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、文獻中列出的keypoints
在人體姿態估計領域的文獻中,常見的Keypoints包括17個關鍵點、18個關鍵點、25個關鍵點和68個關鍵點等多種方式。以下是常見的兩種Keypoints:
1、17個關鍵點: 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。
2、25個關鍵點: 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, neck, background, left_palm, right_palm, spine, left_instep, right_instep。
四、difficultpoints
人體姿態估計中,有一些關鍵點是難以準確預測的,稱為difficultpoints。如手和足底等部位,通常會對這些部位進行特殊處理,如使用更多的注意力機制、額外的數據增強等方法來提高精度。
以下是使用PyTorch處理difficultpoints的示例代碼:
import torch
# 定義網絡和損失函數
model = Model()
criterion = LossFunction()
# 初始化優化器
optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
# 加載訓練數據和測試數據
train_dataset = Dataset(train=True)
test_dataset = Dataset(train=False)
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)
# 訓練模型
for epoch in range(10):
for i, batch in enumerate(train_loader):
# 加載數據
inputs, targets, is_difficult = batch
# 前向傳播
outputs = model(inputs)
# 計算損失
loss = criterion(outputs, targets, is_difficult)
# 反向傳播和優化
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 在測試集上驗證模型
with torch.no_grad():
test_loss = 0
for i, batch in enumerate(test_loader):
inputs, targets, is_difficult = batch
outputs = model(inputs)
test_loss += criterion(outputs, targets, is_difficult)
test_loss /= len(test_loader)
print('Epoch: {}, Test Loss: {}'.format(epoch+1, test_loss))
五、如何把Keypoints轉化成CPU
在使用GPU進行人體姿態估計時,有時需要將Keypoints轉化成CPU,方便進行後續的處理和可視化等操作。以下是PyTorch中將Keypoints轉化成CPU的示例代碼:
import torch # 定義Keypoints keypoints = torch.randn(2, 17, 3).cuda() # 轉化成CPU keypoints_cpu = keypoints.cpu()
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/192750.html
微信掃一掃
支付寶掃一掃