一、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-tw/n/192750.html