본 논문에서 제안하는 모델은 single forward pass에서 여러명의 사람과 2d pose에 대한 bbox를 검출하는 방법을 학습하므로 bottom-up, top-down 방식의 장점을 모두 가진다고 제안합니다. 이러한 접근방식은 검출된 keypoint 들을 skeleton으로 그룹화 하기 위한 post-processing이 필요 없다고 합니다. 왜냐면 anchor와 연결된 keypoint는 이미 그룹화 되어있기 때문에 추가적인 그룹화 작업이 필요 없다고 합니다. post-processing이 아예 없는 것은 아니고, object detection에서 사용하는 표준 NMS를 사용한다고 하네요. 또한 COCO validation 세트에서 SOTA를 달성합니다.
기존 문제
본 논문에서는 기존 heatmap 기반 two-stage 방식이 end-to-end로 학습이 불가능하고, 학습 시 evaluation metric에 최적화 되지 않은 L1 Loss에 의존한다는 것을 지적합니다.
Main Contribution
scale variation 및 occlusion과 같은 주요 문제는 공통적인 문제이기 때문에 object detection에 따라 multi-person pose estimation 하는 방법을 소개합니다. 이 두 분야를 하나로 통합하기 위한 first step 이라고 하네요.
heatmap이 없는 접근 방식은 pixel level NMS, adjustment, refinement, line-integral, various grouping algorithm 등 을 포함하는 복잡한 post-processing 대신 object detection의 post-processing을 사용합니다.
box detection에서 keypoint로 IoU loss 개념을 확장했습니다. OKS(object keypoint similarity)는 evaluation에서만 사용되는 것이 아니라 학습 시에도 loss로 사용하게 됩니다. OKS loss는 scale-invariant 하며 본질적으로 다른 keypoint에 각 다른 가중치를 부여하게 됩니다.
~4x 정도 적은 컴퓨팅으로 SOTA AP50을 달성합니다. 예를 들어 coco test-dev2017 데이터세트에서 Yolo5m6-pose는 AP50 기준 283.0 GMACS에서 89.4의 성능을 달성한 SOTA DEKR과 비교하여 66.3 GMACS을 달성하게 됩니다.
joint detection 및 pose estimation framework를 제안합니다. pose estimation은 object detection network에서 거의 무료로 제공된다고 표현하고 있네요 ㅋㅋ
EfficientHRNet과 같은 real-time 중심 모델 보다 성능이 훨씬 뛰어나고, 복잡성이 낮은 변형된 모델을 제안합니다.
참고 : GMACS - ChatGPT 답변
GMACS는 "Giga Multiply-Accumulates per Second"의 약어입니다. 이는 컴퓨터 시스템의 성능을 측정하는 지표 중 하나로, 매 초당 수행 가능한 곱셈 및 누적 연산의 양을 나타냅니다. GMACS는 주로 신경망과 같은 연산 집약적인 작업에 대한 성능을 평가하는 데 사용됩니다. 높은 GMACS 값을 갖는 시스템은 복잡한 연산을 빠르게 처리할 수 있으며, 딥러닝과 같은 AI 응용 분야에서 효율적인 작업을 수행할 수 있습니다.
Method
YOLO-Pose 모델은 YOLOv5 모델을 따릅니다. overall prediction vector는 다음과 같이 정의됩니다.
YOLO-Pose는 CSP-darknet53을 backbone으로 사용하고, backbone에서 다양한 scale의 feature를 합치기 위해 PANet을 사용합니다.
참고로 PANet은 FPN 구조와 비교하였을 때 아래와 같습니다.
그 다음 크기가 다른 4개의 detection head가 존재하고, 마지막으로 box와 keypoint를 예측하기 위한 2개의 분리된 head가 존재합니다. 이 작업에서 본 논문에서는 복잡성을 150 GMACS로 제한하고, 그 내에서 경쟁력 있는 결과를 달성하게 됩니다.
주어진 이미지에 대해 사람과 일치하는 anchor는 bbox와 함께 전체 2d pose를 저장하고, bbox 좌표는 anchor 중심으로 변환되는 반면, box scale은 anchor의 높이와 너비에 대해 normalization 됩니다. 마찬가지로 keypoint의 위치도 anchor center로 변환됩니다. 그러나 keypoint는 anchor의 높이와 너비로 normalization 하지 않습니다. keypoint 와 bbox 모두 anchor 중심으로 예측됩니다. 따라서 anchor의 너비와 높이와 무관하기 때문에 YOLOX, FCOS와 같은 anchor-free 기반 접근 방식으로 쉽게 확장이 가능합니다.
IoU Based Bounding-box Loss Function
bbox supervision을 위해 CIoU를 사용합니다. 참고로 CIoU는 overlap area, central point distance, aspect ratio를 모두 고려하는 metric 입니다.
Human Pose Loss Function Formulation
일반적으로 heatmap 기반 pose estimation 방법에서 사용하는 L1 loss는 최적의 OKS를 얻는데 적합하지 않을 수 있습니다. L1 Loss는 굉장히 단순하며 객체의 scale이나 keypoint의 type을 고려하지 않습니다. heatmap은 probability map 이기 때문에 순수 heatmap OKS를 사용할 수 없습니다. OKS는 keypoint 위치를 regression 할 때만 loss function으로 사용할 수 있습니다. OKS Loss는 scale-invariant이며, 특정 keypoint에 더 많은 중요성을 부여하게 됩니다. 예를 들면 사람 머리의 키포인트(눈, 코, 귀)는 사람 신체의 키포인트(어깨, 무릎, 엉덩이 등)보다 동일한 픽셀 수준 오류(pixel-level error)에 대해 더 많은 패널티를 받습니다.
keypoint의 confidence는 BCE Loss를 사용하게 됩니다. 여기서 v는 visible을 의미합니다.
Total Loss
total loss는 아래와 같습니다.
Experiments
COCO 데이터세트 (test-dev)에서 평가한 결과는 아래와 같습니다.
OKS Loss, L1 Loss에 따른 실험 결과는 아래와 같습니다. OKS Loss를 사용하였을 때 L1 Loss에 비해 AP 기준 약 5% 정도 성능 향상이 있네요. 임팩트 있는 결과 같습니다.
Paper : https://openaccess.thecvf.com/content/CVPR2022W/ECV/papers/Maji_YOLO-Pose_Enhancing_YOLO_for_Multi_Person_Pose_Estimation_Using_Object_CVPRW_2022_paper.pdf GitHub : https://github.com/TexasInstruments/edgeai-yolov5/tree/yolo-pose
논문 개요
본 논문에서 제안하는 모델은 single forward pass에서 여러명의 사람과 2d pose에 대한 bbox를 검출하는 방법을 학습하므로 bottom-up, top-down 방식의 장점을 모두 가진다고 제안합니다. 이러한 접근방식은 검출된 keypoint 들을 skeleton으로 그룹화 하기 위한 post-processing이 필요 없다고 합니다. 왜냐면 anchor와 연결된 keypoint는 이미 그룹화 되어있기 때문에 추가적인 그룹화 작업이 필요 없다고 합니다. post-processing이 아예 없는 것은 아니고, object detection에서 사용하는 표준 NMS를 사용한다고 하네요. 또한 COCO validation 세트에서 SOTA를 달성합니다.
기존 문제
본 논문에서는 기존 heatmap 기반 two-stage 방식이 end-to-end로 학습이 불가능하고, 학습 시 evaluation metric에 최적화 되지 않은 L1 Loss에 의존한다는 것을 지적합니다.
Main Contribution
참고 : GMACS - ChatGPT 답변
Method
YOLO-Pose 모델은 YOLOv5 모델을 따릅니다. overall prediction vector는 다음과 같이 정의됩니다.
YOLO-Pose는 CSP-darknet53을 backbone으로 사용하고, backbone에서 다양한 scale의 feature를 합치기 위해 PANet을 사용합니다. 참고로 PANet은 FPN 구조와 비교하였을 때 아래와 같습니다.
그 다음 크기가 다른 4개의 detection head가 존재하고, 마지막으로 box와 keypoint를 예측하기 위한 2개의 분리된 head가 존재합니다. 이 작업에서 본 논문에서는 복잡성을 150 GMACS로 제한하고, 그 내에서 경쟁력 있는 결과를 달성하게 됩니다.
주어진 이미지에 대해 사람과 일치하는 anchor는 bbox와 함께 전체 2d pose를 저장하고, bbox 좌표는 anchor 중심으로 변환되는 반면, box scale은 anchor의 높이와 너비에 대해 normalization 됩니다. 마찬가지로 keypoint의 위치도 anchor center로 변환됩니다. 그러나 keypoint는 anchor의 높이와 너비로 normalization 하지 않습니다. keypoint 와 bbox 모두 anchor 중심으로 예측됩니다. 따라서 anchor의 너비와 높이와 무관하기 때문에 YOLOX, FCOS와 같은 anchor-free 기반 접근 방식으로 쉽게 확장이 가능합니다.
IoU Based Bounding-box Loss Function bbox supervision을 위해 CIoU를 사용합니다. 참고로 CIoU는 overlap area, central point distance, aspect ratio를 모두 고려하는 metric 입니다.
Human Pose Loss Function Formulation 일반적으로 heatmap 기반 pose estimation 방법에서 사용하는 L1 loss는 최적의 OKS를 얻는데 적합하지 않을 수 있습니다. L1 Loss는 굉장히 단순하며 객체의 scale이나 keypoint의 type을 고려하지 않습니다. heatmap은 probability map 이기 때문에 순수 heatmap OKS를 사용할 수 없습니다. OKS는 keypoint 위치를 regression 할 때만 loss function으로 사용할 수 있습니다. OKS Loss는 scale-invariant이며, 특정 keypoint에 더 많은 중요성을 부여하게 됩니다. 예를 들면 사람 머리의 키포인트(눈, 코, 귀)는 사람 신체의 키포인트(어깨, 무릎, 엉덩이 등)보다 동일한 픽셀 수준 오류(pixel-level error)에 대해 더 많은 패널티를 받습니다.
keypoint의 confidence는 BCE Loss를 사용하게 됩니다. 여기서 v는 visible을 의미합니다.
Total Loss total loss는 아래와 같습니다.
Experiments
COCO 데이터세트 (test-dev)에서 평가한 결과는 아래와 같습니다.
OKS Loss, L1 Loss에 따른 실험 결과는 아래와 같습니다. OKS Loss를 사용하였을 때 L1 Loss에 비해 AP 기준 약 5% 정도 성능 향상이 있네요. 임팩트 있는 결과 같습니다.
논문 리뷰 full version https://eehoeskrap.tistory.com/687