[Paper Review] SimCC 논문 이해하기
『 SimCC: a Simple Coordinate Classification Perspective for Human Pose Estimation. ECCV. 2022. 』
이번에 소개할 논문은 기존 Human Pose Estimation의 Head 부분에서 주로 사용하던 Heatmap 방식을 Classification으로 다르게 해석하여 더 효율성을 높인 방법을 소개한 SimCC 논문이다. 기존 Heatmap 방식에서 발생하던 문제점을 해결하고 성능을 해결한 방식을 소개하고 있다. SimCC는 추후 변형을 통해 성능 개선을 많이 이끌어 내었으므로 꼭 주목하여 읽어볼 것! (초창기 이름은 SimDR이었다고 한다)
doi : https://link.springer.com/chapter/10.1007/978-3-031-20068-7_6
github : https://github.com/leeyegy/SimCC
0. Abstract
지금까지 Human Pose Estimation 기법에서 주로 사용하던 2D Heatmap 기반의 접근법은 Quantization Error로 인해 여러 단점을 가진다.
- 저해상도 입력에서 성능이 제한됨
- Localization Precision을 향상시키기 위해 비용이 많이 드는 다수의 Upsampling Layer가 필요함
- Quantization Error를 줄이기 위해 추가적인 Post-Processing이 필요함
본 논문에서는 이러한 문제를 해결하기 위해 Human Pose Estimation을 가로 및 세로 좌표를 가지고 Classification하는 Task로 재구성하는 방식인 SimCC를 제안한다. SimCC는 각 픽셀을 여러 개의 세분화 된 bin으로 균일하게 나누어 sub-pixel 수준의 위치 정밀도와 낮은 Quantization Error를 달성하였다.
또한 이를 통해 추가적인 Post-Processing을 생략할 수 있으며, Upsampling layer를 배제하여 더 간단하고 효율적인 파이프라인을 구축할 수 있다.
1. Introduction
2D Human Pose Estimation은 최근 Heatmap 기반의 방법들이 사실상 표준으로 자리잡았다. 하지만 Heatmap 기반의 방법은 연속된 좌표 값을 2D Heatmap 상에 discrete하게 mapping하는 과정에서 발생하는 Quantization Error 문제를 가진다.
실제 Keypoint 좌표는 연속적인 값으로 표현된다. 하지만, Heatmap은 픽셀 단위의 grid 구조를 가져, 좌표를 Heatmap에 매핑할 때, 정수형 픽셀 좌표로 Quantization할 필요가 있다. 이 과정에서 발생하는 미세한 차이를 Quantization Error라고 한다.
좌표 형태를 Heatmap 형식으로 바꾸어 주는 이유는 Neural Network가 좌표를 직접적으로 예측하는 것(Regression)보다 Heatap을 활용하는 것이 학습 및 추론에서 더 효과적이기 때문이다(이전 연구 논문들이 증명).
이러한 Quantization Error는 다음과 같은 단점을 가진다.
- Quantization Error를 완화하기 위한 고비용의 Upsampling Layer가 필요함
(Heatmap의 해상도가 낮을 수록 Continuous 좌표와 Discrete 좌표간의 오차가 커지기 때문에) - 예측 결과를 다시 좌표 형태로 복원하기 위해 Post-Processing이 필요함
- 저해상도 입력의 경우 Quantization Error가 크게 발생함
물론 Quantization Error를 해결하려는 방법론들이 존재하였지만, 우선 고해상도 Heatmap을 생성하려는 접근 방식은 계산 비용이 너무 높았고, Fig. 1의 1D Heatmap-based 방식처럼 2D Heatmap을 1D Heatmap으로 분리하고 해상도를 높이는 방식은 추가적인 모듈이 필요하여 더 복잡한 파이프라인을 구성하게 되었다.
따라서 본 논문에서는 2D Heatmap 기반 방법을 대체할 수 있는 새로운 SimCC 방법론을 제안한다. SimCC는 Human Pose Estimation을 가로 및 세로 좌표에 대한 2개의 분류 작업으로 재구성하는 단순하고 효과적인 Coordinate Classification Pipeline이다.
SimCC는 모델 Head에 들어가는 방법론으로 일반적으로 CNN이나 Transformer 기반의 Backbone으로 나오는 Keypoint Representation을 Input으로 받는다. 입력받은 Representation을 기반으로 가로 및 세로 좌표에 대해 각각 독립적으로 Coordinate Classification을 진행하여 최종 예측 값을 도출한다. 이 때 Quantization Error를 줄이기 위해 SimCC에서는 각 Pixel을 몇개의 bin으로 나누어 sub-pixel 수준(pixel보다 더 세밀한 수준)의 Localization Precision을 달성하였다.
이러한 방법론으로 인해 다수의 Deconvolution Layer를 도입하지 않고 2개의 선형 Classifier만을 사용하였고, 비용이 많이 드는 Post-Processing 과정을 생략할 수 있었다.
주요 Contribution은 다음과 같다.
- Human Pose Estimation 문제를 가로 및 세로 좌표에 대한 분류 작업으로 재구성한 SimCC Pipeline을 제안하여 CNN이나 Transformer 기반의 Backbone 모델과 쉽게 통합될 수 있는 구조를 제공한다.
- 기존 Heatmap 기반의 방법들이 사용하던 Upsampling, Post-Processing 단계를 제거하여 효율적인 Pipeline 구조를 가진다.
- COCO, CrowdPose, MPII 데이터 셋을 대상으로 다양한 Backbone, Input size를 활용한 실험을 통해 제안된 방법의 효과를 검증하였다.
결국 이 논문은 지금까지 주를 이루고 있던 Heatmap 기반의 방법만이 정답이 아니라는 것을 시사하고, 추후 다른 연구 방법을 통해 더 좋은 Estimation 성능을 가지는 방법론을 찾아낼 수 있는 가능성을 열어주었다.
2. Related Work
Regression-Based HPE
Human Pose Estimation의 초창기 연구 단계에서는 Regression 기반의 연구가 다수 이루어졌지만 Keypoint 좌표를 그대로 Regression 하는 방식의 성능이 좋지 않았기 때문에 Heatmap 기반의 연구로 많이 넘어가게 되었다. 그러나 최근 Residual Log-Likelihood를 활용해 Heatmap 기반의 방법과 동일한 수준의 성능을 달성하였고(Human pose regression with residual log-likelihood estimation), 이는 이 논문의 연구와 보완적인 관계에 있다.
2D Heatmap-Based HPE
일반적인 Heatmap 기반의 연구는 특정 좌표를 기준으로 Gaussian 분포를 가지는 Heatmap을 학습 및 평가에 사용하는 것이었다. Hourglass, HRNet 등의 연구가 존재하며 수년간 높은 성능을 유지하였지만, Quantization Error 문제가 저해상도 입력에서 아직 큰 장애물로 남아있다.
Quantization Error
앞서 설명한대로 Quantization Error는 Continuous한 Keypoint Coordinate를 Discrete한 Heatmap으로 변환할 때 발생한다. 이를 완화하기 위해 Taylor-expansion 기반의 근사를 하는 Post-Processing이나 2D Heatmap을 1D Heatmap으로 변환하고 1D 상태에서 해상도를 높이는 식의 연구가 존재한다.
1D Heatmap Regression in Facial Landmark
Human Pose Estimation 외에도 1D Heatmap 방법은 Facial Landmark Detection 분야에서 활용되었다. 하지만, 추가적인 계산 비용을 발생시킨다는 한계점이 존재한다.
Coordinate Classification
본 연구와 유사하게(아이디어를 얻은) Pix2Seq 모델은 Object Detection을 Language Modeling Task로 변환하였다. Object는 5개의 Discrete Token으로 표현되며, 분류를 통해 최종 결과가 도출된다.
특정 Task의 main representation을 분류 형태로 바꿨다는 아이디어를 가져와 본 모델에 차용한 것으로 생각한다.
3. SimCC: Reformulating HPE from Classification Perspective
SimCC의 핵심 아이디어는 Human Pose Estimation을 수직 및 수평 좌표에 대한 2개의 분류 작업으로 재구성하는 것이다. Fig. 2를 통해 SimCC의 구조를 확인할 수 있으며 Backbone 네트워크 뒤에 붙어오는 2개의 Classification Head가 핵심 역할을 수행한다.
Backbone
CNN 또는 Transformer 기반의 Network를 Backbone으로 사용하여 n개의 Keypoint에 대한 Representation을 각각 뽑아낸다.
Head
Fig. 2에서 볼 수 있듯이 수직, 수평 Classifier가 Backbone 뒤에 추가되며 각각 하나의 linear layer로 구성되어 있다. 따라서 Backbone에서 CNN 기반 모델을 사용하였다면 H x W 형태의 vector로 flatten된다. 도식에서 볼 수 있듯이 SimCC Head는 고비용의 Deconvolution과 달리 훨씬 가볍고, 간단한 구조를 가진다.
Coordinate Classification
SimCC에서는 continuous한 coordinate를 class label로 변환하기 위해 이를 정수형태로 균일하게 이산화(Discretization)한다.
$$c_x \in [1, N_x], c_y \in [1, N_y]$$
- $k$ : splitting factor(bin을 몇개로 나눌지), k>=1로 지정하여 sub-pixel 수준의 정밀도 달성
- $N_x, N_y$ : 수평, 수직 축에 대한 bin의 개수, $N_x = W \cdot K, N_y = H \cdot k$
최종 예측은 n개의 Keypoint Representation을 기반으로 수직 및 수평 좌표 classifier를 독립적으로 실행 후 예측하며, Loss Function으로는 Kullback-Leibler divergence를 사용한다.
Label Smoothing
Traditional Classification Task에서는 모델 성능을 높이기 위해 Label Smoothing을 많이 사용한다. SimCC에서는 이러한 Label Smoothing 기법 중 Equal Label Smoothing 기법을 활용하였다. Equal Label Smoothing 기법은 잘못된 Label에 대해 전부 같은 Penalty를 부과한다. 하지만, Human Pose Estimation의 특성상 인접 Label은 공간적으로 연관이 있기 때문에 이러한 점을 고려하여 SimCC에서는 Equal Label Smoothing뿐만 아니라 Laplace, Gaussian 기반의 Label Smoothing 기법을 같이 탐구하였다.
3.1. Comparisons to 2D heatmap-based approaches
이 파트에서는 SimCC 방법을 사용하는 것이 2D Heatmap 기반 접근법보다 어떤 점에서 더 좋은지를 알아본다.
Quantization Error
- Heatmap 기반 접근법 : Quantization Error를 해결하기 위해서는 고해상도 Feature Map을 유지해야 하지만 계산 비용이 많이 든다는 문제로 $\lambda$ 크기만큼 Downscale된 Feature Map을 출력하여 Quantization Error가 크게 발생함
- SimCC : 각 Pixel을 $k$개의 bin으로 균일하게 분할하여 Quantization Error를 줄이고 Sub-pixel 수준의 Localization Precision을 제공함
이론상 k가 많아질수록 Precision의 정도가 높아지는 것으로 보인다.
Refinement Post-Processing
- Heatmap 기반 접근법 : DARK같은 Post-Processing 방법에 크게 의존하여 Quantization Error를 줄인다. 하지만 Post-Processing을 제거하면 성능이 크게 감소
-> DARK는 Taylor Expansion을 사용하여 고차 미분 계산을 요구하기 때문에 계산비용이 높아 실용적이지 않음 - SimCC : Sub-pixel 수준의 Localization Precision을 가져 별다른 Post-Processing 없이도 효과적임 + 간단한 구조
Low/high Resolution Robustness
- Heatmap 기반 접근법 : Fig. 3에서처럼 낮은 해상도에서 성능이 크게 감소한다.
- SimCC : 낮은 Quantization Error 덕분에 다양한 입력 해상도에서 Heatmap 기반 접근법보다 높은 성능을 보이며 특히 저해상도 입력에서 뚜렷한 이점을 보인다.
Speed
- Heatmap 기반 접근법 : 계산 비용이 높은 Deconvolution 모듈을 사용하기 때문에 속도가 느림
- SimCC : Deconvolution layer를 제거하여 계산량과 속도를 크게 개선함
4. Experiments
본 논문에서 실험에 사용한 데이터 셋은 COCO, CrowdPose, MPII이다.
4.1. COCO Keypoint Detection
평가지표로는 OKS Evaluation Metric을 사용하였다.
실험의 Baseline Backbone으로는 CNN기반 방법 중 SimpleBaseline과 HRNet, Transformer 기반 방법 중 TokenPose 모델을 사용하였다. Label Smoothing 계수로는 0.1을 사용하였으며 자세한 Implementation은 논문을 참고.
Table 1에서 볼 수 있듯이 본 논문에서는 우선 다양한 입력 해상도에 따른 성능 평가 결과를 분석하였다. 결과를 살펴보면 크게 SimCC를 사용한 방법론이 저해상도에서 성능이 더 좋으며, 기존 Heatmap 기반 방법에서 Dark 후처리를 뺐을 경우 성능이 크게 하락했다는 점을 확인할 수 있다.
Table 2에서는 SimCC를 사용한 결과가 Heatmap 기반의 방법론보다도 더 좋은 성능을 내었다는 것을 보여준다.
또한 논문에서는 Inference Speed를 모델의 장점으로 내세웠는데, Deconvolution Layer가 없는만큼 더 적은 파라미터수와 FLOPS를 기록했다는 것을 Table 3를 통해 보이고 있다.
4.2. Ablation Study
Splitting factor $k$는 하나의 픽셀 당 몇 개의 bin으로 나눌지를 결정한다. Fig. 4의 결과처럼 HRNet, SimpleBaseline에서는 $k$=2일 때가 좋은 성능을 보였다고 한다.
Fig. 4가 꺾은선 그래프로 되어있는데 k는 {1, 2, 3, 4} 중 하나의 값이다. 그럼 2개의 막대그래프로 나타내는 것이 맞지 않나? 연속성이 있다고 볼 수 있을지 잘 모르겠다.
Table 4에서는 Upsampling Module(Deconvolution)에 대한 실험을 진행하였으며 SimCC를 사용함으로써 Upsampling 없이도 좋은 성능을 보였음을 나타내고 있다.
Table 5는 Label Smoothing 기법에 대한 실험 결과이다. 조금이지만 기법에 따라 성능에 차이가 존재했고 이에 대한 분석을 Future Work로 남겨두고 있다.
4.3. CrowdPose
CrowdPose는 COCO 데이터셋보다 Multi-Person에 초점을 맞추어 제작된 데이터 셋이다. Table 6에서는 SimCC를 사용한 방법이 기존 Heatmap을 사용한 방법보다 군중 장면을 잡아내는데에 더 효과적이라는 걸 보여준다.
4.4. MPII Human Pose Estimation
MPII 데이터 셋은 16개의 Keypoint Format을 가지는 데이터로 PCKh 평가지표를 사용하였을 때, 모든 관절에서의 성능이 SimCC가 좋은 것을 확인하였다.
5. Limitations
SimCC의 문제점은 Top-Down이 아닌 Bottom-Up 방법론으로 가면 x좌표와 y좌표 후보간의 매칭 과정에어떤 좌표가 어떤 사람의 좌표인지 알지 못한다는 것이다. 본 논문에서는 이를 이는 Associative Embedding처럼 추가적인 Embedding을 넣어 좌표별로 고유한 식별 번호를 주어 극복할 수 있다고 말하고 있다.
6. Conclusion
SimCC는 Human Pose Estimation Task를 수행하는데 있어 기존의 2D Heatmap 방식을 고수하는 것이 아닌, 수평과 수직 축에 대한 독립적인 분류 문제로 단순화하였다. 이를 통해 1D 벡터 크기에서의 연산을 가능케 만들었고, 그만큼 계산량이 줄어 경량화된 모델을 만드는데에도 도움을 주었다.
개인적으로 생각하는 논문의 아쉬운 점은 SimCC Head라는 방법론을 제안하였지만, 실험에 있어 활용한 Backbone이 3가지에 불과하다는 것이다. 게다가 경량화를 장점이라고 말하고 있지만, Table 1을 보면 SimpleBaseline 모델을 제외하면 그다지 계산 Parameter 수가 감소하지 않는 것을 확인할 수 있다. 따라서 더 많은 모델을 가지고 실험하여 Head의 성능 개선 효과를 더 보여주었으면 좋았겠다는 아쉬움이 있다.
실제로 SimCC를 활용한 코드를 돌려보면 파라미터 수가 많이 나오는 것을 확인할 수 있는데, 대표적인 예시로 HRNet을 들면 Backbone의 Output이 Input Resolution을 그대로 받아 나오기 때문에 이를 별다른 Convolution 없이 바로 flatten후 Classification을 진행하면 연산량이 더 많아질 수 밖에 없다고 생각한다.
세 줄 요약
1. SimCC는 Human Pose Estimation에서 기존 2D Heatmap 기반의 방법이 가지는 Quantization Error 문제를 극복하기 위해 수직, 수평 축에 대한 분류 문제로 변환하였다.
2. Classification Head를 사용하는 것으로 Quantization Error 감소, Post-Processing 과정 제거, 저해상도 성능 증가 , 경량화된 모델 설계 등의 효과를 낼 수 있었다.
3. CNN 기반, Transformer 기반의 Backbone을 사용하였을 때 기존 Heatmap 기반의 방법보다 SimCC Head를 사용하는 것이 더 좋은 성능을 보였다.