본문 바로가기

AI 논문 정리/3D Vision

[Paper Review 3] 3D human pose estimation in video with temporal convolutions and semi-supervised training

Conference on Computer Vision and Pattern Recognition (CVPR) 2019

https://arxiv.org/abs/1811.11742 

1. Introduction


2D keypoint -> 3D pose estimates

이 논문에서는 비디오에서 3D human pose estimation을 다룬다. 추정 문제를 해결하기 위해, 2D keypoint detection과 3D pose estimation, 두 방법으로 분할해서 해결하게 된다. 하지만, 이 방법은 여러 3D pose들이 같은 2D 키포인트에 매핑이 될 수 있는 등, 모호성이 내재되어있기도 하다. 기존의 연구들은 Recurrent Neural Network (RNN)을 사용해서 모호성을 해결해왔다. 반면에, CNN 모델을 사용하면, 여러 프레임의 병렬 처리가 가능해지는 등, temporal information을 모델링하는 과정이 크게 성공적이었다. 

 

이 논문에서 2D 키포인트들에 대하여 Temporal Convolution을 기반으로 하는 Fully Convolutional model의 적용하여 비디오의 3D pose prediction을 수행하게 된다. 또한, 이 논문에서는 unlabeled video data를 사용한 semi-supervised training을 위해, back-projection이라는 방법을 소개하였다. 

 

간략하게 설명하자면, back-projection은 unlabeled video에 대하여 예측이 되었던 2D 키포인트를 시작으로 해서, 3D pose를 추정하고, 해당 3D pose를 다시 2D 공간으로 매핑을 하는 방식으로 진행이 된다. 

 

이 논문의 핵심적인 두 가지 contribution은 다음과 같다.

1. 2D 키포인트 궤적 (2D keypoint trajectory)에 dilated temporal convolution을 기반으로 비디오에서의 3D human pose estimation을 간단하게 접근할 수 있게 됨

-> 논문 모델이 RNN보다 효율적임.

 

2. unlabeled video을 사용하는 semi-supervised approach를 사용함.

-> 이전과는 다르게, ground-truth 2D annotation, extrinstic camera parameter가 있는 multi-view imagery을 활용하지 않고, camera intrinsic parameter를 사용하였다.

 

3. Temporal dilated convolutional model


 

이 논문의 모델은 Residual connection을 포함한 fully convolutional architecture이다. 해당 모델에서는 2D pose sequence를 input으로 받아, temporal convolution을 거쳐서 변환을 시킨다. Convolutional model에서 input과 output 사이의 기울기 경로는 sequence의 길이에 상관없이 고정된 값을 가지는데, 이는 RNN의 단점인 vanishing gradient와 exploding gradient 문제를 완화시킨다. 

 

Convolutional Architecture는 temporal receptive field를 정교하게 컨트롤을 할 수 있도록 해주는데, 이는 3D pose estimation의 temporal dependecy를 모델링하는데 큰 도움이 된다. 또한, 이 논문에서 long-term dependency를 모델링하기 위해서 dilated convolution을 도입한다. (이는 Audio generation, semantic segmentation에서 효과적으로 사용되어져 왔다.)

 

Dilated Convolution??

-> Sparse structure를 가진 convolution의 일종이다. Kernel point는 균등한 간격으로 배치되어 있고, 간격은 0으로 채우게 된다. 

ex) h = [1 2 3]의 dilation factor = 2이면, [1 0 2 0 3]이 된다. dilation factor = 3이면 [1 0 0 2 0 0 3]이 된다.

Dilated convolution을 통해, zero point에 대한 계산과정을 생략할 수 있게 되어, 효율적으로 모델을 구성할 수 있다. 

 

Input은 각 프레임에 대한 J joint의 (x, y) 좌표를 받는다. 입력받은 뒤, 커널의 크기 W와 출력 채널 C을 가지고 temporal convolution을 적용한다. 그 다음, skip connection으로 둘러싸인 ResNet-style-block인 B가 이어진다. 각 block은 커널의 크기가 W이고 dilation factor가 D = WB인 1D convolution을 수행하고, 커널의 크기가 1인 convolution을 수행한다. 

 

Convolutions -> Batch Normalization -> Rectified Linear Units (ReLU) -> Dropout 순으로 이어진다. (**마지막 레이어 제외)

 

각 block은 W의 계수만큼 Receptive Field를 증가시키는 반면, parameter의 개수는 선형적으로 증가한다. 마지막 레이어는 과거와 미래 데이터를 모두 사용하여 모든 프레임에 대한 3D pose를 최종적으로 예측한다.

 

Convolutional Layer에서 C = 1024 output 채널과 W = 3으로 커널의 크기를 설정하였다. 또한, dropout rate은 p = 0.25로 설정하였다. 

 

4. Semi-supervised approach


이 논문은 Label이 있는 3D ground-truth 데이터의 사용이 제한적일 때, 모델의 정확성을 높이기 위해서 사용하는 semi-supervised training 방법을 제안한다. 

Semi-supervised training 기법은 Unlabeled 데이터에 대한 auto-encoding 문제를 해결할 수 있다. 여기에서, 인코더 (pose estimator)에서 2D 관절 (joint) 좌표들로부터 3D pose estimation을 수행하고, 디코더 (projection layer)는 3D pose를 다시 2D 관절 좌표로 투영을 하게 된다. 이 때, 디코더의 2D 좌표가 원래의 input으로부터 멀리 떨어져있으면, training penalty를 받게 된다. 

위 사진이 바로 논문의 semi-supervised approach이다. Labeled 데이터의 경우에는 ground truth 3D pose를 대상으로 사용하고, supervised loss를 학습하게 된다. Unlabeled 데이터의 경우에는 새롭게 예측된 3D pose가 2D로 다시 투영된 뒤, input과의 일관성을 체크하기 위한 autoencoder loss를 학습하게 된다.

 

Trajectory model

perspective projection

Perspective projection으로 인해, 화면상의 2D pose는 trajectory (global position of the human root joint)와 3D pose (the position of all joints)로부터 영향을 받는다. Trajectory가 없다면, 피사체는 항상 고정된 크기로 화면 중앙에 고정되어 있을 것이다. 따라서, 2D back-projection이 정확하게 이루어지기 위해서, 3D trajectory를 회귀해서 2D로 역투영해야 한다. 

 

이를 위해, camera space에서 global trajectory를 회귀하는 두번째 네트워크를 최적화한다. 두 네트워크는 같은 아키텍쳐를 가지고 있지만, multi-task 형식으로 학습이 되어질 때 부정적으로 서로에게 영향을 줄 수 있어, weight는 공유하지 않는다.

 

피사체가 카메라로부터 멀리 떨어져있을 때 trajectory를 정교하게 회귀하기 어려우므로, Weighted Mean Per-Joint Position Error (WMPJPE)를 최소화시켜야 한다. 

Ground truth depth의 역수 (yz)를 사용하여 각각의 sample에 가중치를 부여하게 된다.

 

Bone length L2 loss

그저 input사진을 복사하는 것보다  실제로 3D pose를 예측하는 것을 장려하기 위해, 이 논문에서 unlabeled batch에 있는 대상들의 mean bone length (평균 뼈 길이)를 labeled batch에 있는 대상들의 mean bone length와 동일하게 되도록 soft constraint를 추가하게 된다. 이는 self-supervision에 굉장히 중요한 역할을 가진다. 

 

Discussion

논문에서 제시하고 있는 방법은 camera intrinsic parameter만을 요구하고 있다. 이 방식은 2D 키포인트를 input으로 받고 있는 아무 3D pose detector에도 적용가능하다. 3D pose를 2D로 투영하기 위해서, linear parameter와 non-linear lens distortion coefficient들을 포함하고 있는 simple projection layer를 사용한다. 

 

5. Experimental setup


5.1 Datasets and Evaluations 

Human3.6M과 HumanEva-I, 총 두 개의 motion capture dataset을 사용하였다. 

Human3.6M

총 11개의 대상에 대한 360만개의 비디오 프레임을 가지고 있다. 이 논문에서는 17-joint의 골격을 채택하고, 5개의 대상 (S1, S5, S6, S7, S8)에 대하여 학습을 하고, 두 개의 대상(S9, S11)에 대하여 테스트를 진행한다. 모든 행동에 대하여 단일 모델을 사용하여 학습을 진행한다.

 

Human Eva-I

Human3.6M보다 작은 데이터셋이다. 60Hz에서 3개의 카메라 뷰를 통해서 기록된 3개의 subject가 있으며, 3가지의 동작 (Walk, Jog, Box)에 대하여 평가를 진행한다. 동작에 따라 다른 모델을 학습시키게 된다. 15-joint 골격을 채택하고, 데이터셋의 train/test split을 사용한다.

 

이 논문에서 크게 3가지 Evaluation Protocol을 고려할 것이다.

 

Protocol 1: Mean Per-Joint Position Error (MPJPE)

 

Protocol 2: P-MPJPE

 

Protocol 3: N-MPJPE

 

5.2 Implementation Details for 2D pose estimation

Backbone Model

1. Mask R-CNN with a ResNet-101-FPN backbone

2. Cascaded Pyramid Network (CPN) with ResNet-50 backbone (384 X 288 해상도)

 

학습하는 순서는 다음과 같다.

1. COCO 데이터셋에 pre-train이 된 모델을 사용한다. 

2. Human3.6M의 2D projection에 detector들을 fine-tuning한다. (COCO의 키 포인트가 Human3.6M의 키 포인트와 다르기 때문)

 

5.3 Implementation Details for 3D pose estimation

Global Trajectory를 사용하지 않고, camera transformation에 따라 pose를 변환하여 카메라 공간상에서 3D pose를 학습하고 평가한다. (Semi-Supervised Approach 예외)

 

자세한 implementation 디테일은 생략한다 (자세한 디테일은 논문 참조하길 바란다.)

 

6. Results


6.1 Temporal dilated convolutional model 

Qualitive Results

Reconstruction Error

 

B = 4 block과 243개의 input frame을 가진 receptive field를 사용한 convolutional model의 결과는 다음과 같다. 

이 논문의 모델은 Protocol 1, 2에서 모두 average error가 다른 모델에 비해서 낮았다. 특히, 이전의 SOTA 모델이었던 Lee et al의 모델은 Ground-truth를 사용한 반면, 이 논문의 모델은 Ground-truth를 사용하지 않았다는 것이 인상적이라고 볼 수 있다.

Mask R-CNN과 CPN이 SH (Stacked Hourglass)보다 좋은 성능을 보인다는 것을 확인할 수 있다. 

이유는? Higher heatmap resolution, stronger feature combination, more diverse dataset (COCO)

 

이 논문의 모델은 단일 프레임 기준의 MPJVE를 평균적으로 76% 감소시켜 훨씬 부드러운 자세를 추정할 수 있게 한다. 

6.2 Semi-supervised approach

Human3.6M 데이터셋의 다양한 하위 집합들을 labeled data로 지정하고, 나머지 샘플들을 unlabeled data로 지정한다. 또한, 모든 데이터는 50 FPS에서 10 FPS로 다운샘플링이 된다. 다운샘플링이 되었으므로, 9 frame의 receptive field를 사용한다. 

Labeled data의 양이 증가할수록 semi-supervised approach이 더욱 효과적이라는 것을 확인할 수 있다. Rhodin의 모델보다 이 논문의 모델이 성능이 더 좋다는 것을 확인할 수 있다.

다운샘플링을 하지 않은 데이터셋에 protocol 1을 실행했을 때 위와 같다. 비디오의 temporal information을 전부 사용할 수 있기 때문에, 이 방식이 논문의 approach에 더 적합하다. 

위의 예시에서는 더 좋은 2D keypoint detector가 있을 때, 성능이 좋아질 수 있는지 확인하기 위해서, groundtruth 2D pose를 사용하였다. 이 때, 22.6mm까지 성능이 더 좋아진다는 것을 확인할 수 있다. 위 사례로 2D 감지에 더 좋은 2D keypoint detector가 효과적이라는 것을 증명하였다. 

7. Conclusion


이 논문에서 비디오상의 3D human pose estimation을 위해서 Fully Convolutional Model을 도입하였다. 

이 논문이 총 두가지의 기여를 했다고 정리할 수 있다. 

1. 이 논문의 모델 아키텍쳐는 2D 키포인트 trajectory에 걸쳐서 dilated convolution으로 temporal information을 추출한다. 

2. Back-projection (레이블된 데이터가 적을 때 성능을 개선시킬 수 있는 semi-supervised training기법)