본문 바로가기
반응형
반응형

ML | DL/Pose estimation5

반응형
PoseNet keypoint로 skeleton 그리기 Pose Estimation model로 신체의 좌표를 추출하였을 때 제대로 추출되어있는지 확인하는 과정이 필요하다. 해당 코드는 PoseNet의 좌표를 matplotlib을 이용해 스켈레톤으로 그리는 코드이다. skeleton_plot 함수에 하나의 Frame에 대한 좌표값 -> sample 그리고 'ro' or 'bo' 같이 원하는 컬러를 입력하면 된다. -> color 다른 모델을 사용할때에는 각 관절에 맞게 코드 변환이 필요하다. def plot_line(a, b): # 관절마다 선긋기 if (a.any()> 0 and b.any()>0): plt.plot([a[0], b[0]], [a[1], b[1]], 'k-') def draw_skeleton(sample, pattern): keypoint .. 2022. 3. 17.
PoseNet keypoint로 신체 각도 구하기 해당 코드를 사용하기 위해서는 Pose Estimation model을 통하여 포즈의 좌표를 추출한 다음 원하는 신체 부위의 값을 입력해야 한다. posenet으로 예를 들어 왼쪽어깨의 각도를 추출하고 싶으면 p1 - left shoulder, p2 - left elbow, p3 - left hip 이처럼 변수에 좌표 xy값을 입력한다. angle_vec의 True, False 여부로 시계방향, 반시계방향으로 각도를 얻을 수 있다. def get_angle(p1 : list, p2 : list ,p3 : list, angle_vec : bool) -> float: """ 세점 사이의 끼인 각도 구하기 """ rad = np.arctan2(p3[1] - p1[1], p3[0] - p1[0]) - np.ar.. 2022. 3. 17.
ml5 PoseNet KNN Classification 사용방법 PoseNet은 실시간 인간 포즈 추정을 허용하는 기계 학습 모델이다. 단일 포즈 또는 다중 포즈를 추정하는 데 사용할 수 있다. 즉, 이미지/비디오에서 한 사람만 감지할 수 있는 알고리즘 버전과 이미지/비디오에서 여러 사람을 감지할 수 있는 하나의 버전이 있다. KNN은 원래 데이터셋에서 새로운 데이터가 들어왔을 때 가장 가까운 k개를 찾아 분류를 하는 모델 이다. 두개의 모델을 이용해 만들어진 프레임워크인 ml5는 사람의 포즈를 구분하고 해당 데이터를 저장해서 classification을 할 수 있다. 준비물은 자신을 찍을 수 있는 캠코더만 준비하면 된다. 해당 주소로 접속한다. https://editor.p5js.org/ml5/sketches/KNNClassification_PoseNet p5.js.. 2022. 3. 17.
Pose Similarity - Weight Distance Python 코드 코사인 거리는 매우 훌륭하고 좋은 결과 값을 주긴 하지만 아직 큰 결함이 있다. Confidence Score는 Pose를 추정할 때 이 좌표에는 어떤 키포인트가 있을지 얼마나 확신하는지 알려주는 정도이다. 이 정보를 무시한다면 우리는 매우 중요한 정보를 버리는 것이다. def weightedDistanceMatching(poseVector1, poseVector2, score): """ poseVector1 = [120(x), 230(y) ...] poseVector2 = [324(x), 232(y) ...] score = [0.2, 0.3 ....] """ # test coordinate vector1PoseXY = poseVector1 vector1Confidences = score # test t.. 2022. 3. 17.
반응형