The Visionary Researcher

논문 : Click


"Deep pose: Human Pose Estimation via Deep Neural Networks"

2014 CVPR

Author : Alexander Toshev et al.

<Key Point>

1. 모든관절이 보이는 것은 아니다, 따라서 전체적인 추론(holistic reasoning)이 필요하다.

2. DNN regressor를 이용하면 해결될 것이다.


<Introduction>

1. Pose estimation의 정의, 방법, 어려움(한계점)

(정의 : 사람의 관절 위치를 찾는 것)

(방법 : part-based model, ..)

(한계점 : local detector는 모든 관절의 상호과정 속에서 일부분만 모델링함으로써 local한 part를 추론하는 것이다. 하지만 실제 사진에서는 모든 joint를 확인할 수도 없고 안보이는 부분은 추측을 해야 한다. 따라서 local detector는 안보이는 부분을 찾을 수 없다. 즉 전체적인 추론(holistic reason)을 해야하는데 이를 사용한 방법도 아직 성능이 그리 좋지 않다.) 

2. DNN의 정의, 이는 pose estimation의 문제점 해결할 것이다.

3. 제안하는 방법과 DNN의 장점

(7 layer generic convolution DNN)

(장점1 : 각 관절의 전체 맥락을 고려한다) <- 아까 말한 local descriptor와 상반

(장점2 : graphical model로 간단히 구현) <- deep leaning의 장점, feature 표현할 필요 없음, joint 사이의 상호관계 정의하지 않아도됌(문제가 될거같은데..)

(joint regression, pose predictor 제안 : 처음에 pose estimate한 다음, 고화질 sub image를 이용하여 각 관절 예측값을 조정하는 DNN-based regressor 적용)

4. 성능 좋다 언급


<Related Work>

1. Pictorial Strictures(PSs) [1] 발전(다루기 쉽고 실용적) -> 문제점 : 이미지 data가 아닌 간단한 binary potential을 가진 tree-based pose 모델이라는 것

2. Richer part detectors [2]

3. mixture model of parts (mixture of PSs) [3]

4. hierarchical model [4]

5. Image-dependent PS models(global classifier) [5]

6. holistic manner 어렵다.

7. semi-global classifier [6]

8. 3D pose regression [7]

9. Convolution NNs + Neighborhood Component Analysis [8] (not cascade)

10. casecade DNN regressor (used for facial points) [9]


<Deep Learning Model for Pose Estimation>

1. Notation

- joint 개수 : k

- pose vector : y (x, y 좌표)

- 이미지 : x

2. Normalization 

- c는 중심, w는 폭, h는 높이, 세 파라미터에 의해서 정규화

- 같은 x에 있는 모든 k에 대해서 동일하게 적용



<Pose Estimation as DNN-based Regression>

1. Notation

- input x (이미지)

- function (x가 들어왔을때 파라미터 theat에 의하여 k개 관절당 2개씩 좌표, 2k의 원소 생성)

- 정규화된 x에 함수를 통과한 뒤 다시 이미지에 투영하기 위해 역정규화

- 함수를 DNN으로 인해 구현한다.

2. 아키텍쳐

- 처음 x들어오면 미리 지정해준 사이즈로 resize한 다음에 여러 layer를 거쳐서 최종적으로 2k개의 좌표를 얻는다.

- 기본 아키텍쳐는 Alex net[10], 또한 이 아키텍쳐는 localization에서도 좋은 성능 [11]

- 총 7 layers

- C : conv(learnable), P : pooling, F : fully(learnable), LRN : local response normalization

- C(55,55,96, filter : 11x11)-LRN-P-C(27,27,256, filter : 5x5)-LRN-P-C(13,13,384, filter : 3x3)-C(13,13,384, filter : 3x3)-C(13,13,384, filter : 3x3)-P-F(4096)-F(4096)

- 총 파라미터 수 40M

- Generic DNN 아키텍쳐 사용(좋은 성능 증명되어서), holistic하게 한번에 full image를 비선형 변환해서 관절들을 찾는다.

- 7개의 hidden layer가 sharing하기 때문에 특정한 pose model 혹은 loss를 수정하지 않아도 된다.(....)

3.학습

- 기존 Alex net의 classification softmax loss가 아닌, 각 관절의 예측값과 GT값의 L2 distance를 이용하여 loss를 정한다. (linear regression)

- 정규화를 하지 않는다면 L2 loss가 이상하게 될 것이므로, 정규화 필수

- 이미지 x에 대하여 모든 관절 k개와 x, y 좌표에 대한 loss

- 이 loss는 back propagation에 의해서 최소화된다(deeplearning 기본)

- mini batch size : 128

- ada-grad

- Lr : 0.0005

- F에서 dropout(0.6)

- data augmentation을 위해 LRflip, random crop 이용


<Cascade of Pose Regressors>

- 초기 DNN한 번만 적용할 경우 인풋사이즈가 220,220으로 고정되어있기 때문에, network는 자세하게 보는 능력을 갖기 어렵다.

- 따라서 cascade of pose regressor를 제안한다.

- 처음에 초기 관절 위치를 추정한 다음 이전 stage보다 더 좋은 위치를 추적하기 위하여 추가적인 DNN regressor를 학습한다.

- 즉, 반복적으로 refinement를 하는 과정이다.

- 이때, full image가 아닌 crop 이미지를 넣음으로써 high resolution 영상을 얻게되고, 더 정교하게 관절을 추정할 수 있게된다.

- 우리는 모든 stage에 동일한 아키텍쳐를 사용한다. 

- 총 S개의 스테이지에서 S배만큼의 파라미터가 필요하다(각 stage는 같은 아키텍쳐이지만, 다른 파라미터 이용)

- crop을 하는 방법은, y_i 를 중심으로 두고, b_i 박스를 선택한다. 이때 길이는 sigma*diameter(y)로 정의된다.

- diameter(y)는 human torso에서 반대방향 관절을 의미한다.(예를 들면, 왼쪽 어깨와 오른쪽 엉덩이) 이 값은 dataset의 구체적인 포즈 정의에 의존한다.

- 처음에는 모든 관절에 대해서 한번에 수행, 그 후 stage에서는 i가 1~k로써 모든 관절에 대해서 각각 수행

- 각 스테이지마다 다른 파라미터를 사용하기 때문에 각 스테이지마다 동일한 학습을 해야한다.

- 각 스테이지의 각 관절은 각기 다른 bounding 박스에 의해 정규화된다. 이때, 바로 bounding box의 위치는 전 단계의 추정치에 영향을 받는다.

- 각 이미지의 각 조인트에 multiple 정규화를 사용한다. 

- 단지 이전 스테이지 추정치에 영향을 받는 것이 아닌 simulated(모조의) 예측값을 이용한다. 

- 각 스테이지, 각 관절에 대해서, 모든 학습 데이터의 displacement(차분데이터) 의 mean과 variance를 계산하여 2차 정규분포함수를 만든다.

- 즉, 해당 정규분포함수에 의해서 각 스테이지, 각 관절데이터는 정규화될 수 있다.


<Empirical Evaluation>

1. Dataset

- Frames Labeled In Cinema(FLIC) [12] : 4000 학습이미지, 1000 테스트이미지, Hollywood movies, 다양한옷, 10개이상 관절이 label

- Leeds Sports Dataset(LSP) [13,14] : 11000 학습이미지, 1000 테스트 이미지, 스포츠, 다양한 포즈, 모든 사람 full body 그리고 14 관절

- diameter(y)는 모두 어깨와 반대편 엉덩이 사이의 거리, skeleton은 tree kinematic

2. Metric

- Percentage of Correct Parts(PCP) : 팔다리 감지율, 실제와 추정치의 distance가 limb length의 절반 이하면 감지(짧은 팔다리나, 어깨가 낮으면 감지하기 힘든 단점)

- Percent of Detected Joints (PDJ) : 단점 보완 위해 새로운 metric, distance가 torso 지름에 특정비율 이하인 경우, 특정비율 다르게하면서 감지율 계산, 모든 관절이 같은 거리 threshold에 영향을 받으므로 장점

3. Experimental Detail

- FLIC으로 초기 stage 학습, 

- 30개의 이미지로 hyperparameter 결정

- PDJ는 0.2 이용(모든 관절 다)

- 시그마는 FLIC은 1.0, LSP는 2.0, 총 stage수인 S는 3

- LSP에서 11000이미지 학습, 40개 랜덤 크롭, 2개 좌표, 14개 관절 총 12M개의 트레이닝셋(이정도는 필수다, parameter 많아서..)

- 12core CPU에서 이미지당 0.1s (다른 방법보다 빠르다, 하지만 training complexity는 더 크다)

- 초기 stage는 3일 소요, 각 refinement stage는 7일 소요(40개 랜덤크롭해서 40배 크기 때문에 더 크다)


<Result and Discussion>

1. Comparison

- PDJ에서 모두 좋은 결과를 가져온다.

- appearance가 다양한 movie나 다양한 포즈가 있는 sport 모두 잘된다.

2. Effect of cascade-based refinement

- stage가 증가할수록 좋은 결과를 가져온다

- 초기 단계에서 잘 snap했지만 scale이 안맞는경우 발생, stage넘어가면 이상적으로 refine

3. Cross-dataset Generalization

- 일반화 위해, LSP와 FLIC 모두로 학습, 새로운 Image Parse dataset[15]으로 테스트

- 이때는 PDJ 작으면 다른것이 성능 더 좋은경우도, PDJ 크면 Deep pose가 이김

4. 특별한 pose들

- 흔한 실패의 예는 등이 보이게 사진을 직을 경우 left와 right에 혼동이 온다.


<References>

[1] M. A. Fischler and R. A. Elschlager. The representation and matching of pictorial structures. Computers, IEEE Transactions on, 100(1):67–92, 1973.

[2] M. Andriluka, S. Roth, and B. Schiele. Pictorial structures revisited: People detection and articulated pose estimation. In CVPR, 2009.

[3] S. Johnson and M. Everingham. Learning effective human pose estimation from inaccurate annotation. In CVPR, 2011.

[4] G. W. Taylor, R. Fergus, G. Williams, I. Spiro, and C. Bregler. Pose-sensitive embedding by nonlinear nca regression. In NIPS, 2010.

[5] Y. Tian, C. L. Zitnick, and S. G. Narasimhan. Exploring the spatial hierarchy of mixture models for human pose estimation. In ECCV, 2012.

[6] G. Gkioxari, P. Arbel´aez, L. Bourdev, and J. Malik. Articulated pose estimation using discriminative armlet classifiers. In CVPR, 2013.

[7] C. Ionescu, F. Li, and C. Sminchisescu. Latent structured models for human pose estimation. In ICCV, 2011.

[8] C. Szegedy, A. Toshev, and D. Erhan. Object detection via deep neural networks. In NIPS 26, 2013.

[9] G. Shakhnarovich, P. Viola, and T. Darrell. Fast pose estimation with parameter-sensitive hashing. In CVPR, 2003.

[10] A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In NIPS, 2012.

[11] Y. Sun, X. Wang, and X. Tang. Deep convolutional network cascade for facial point detection. In Computer Vision and Pattern Recognition (CVPR), 2013 IEEE Conference on, pages 3476–3483. IEEE, 2013.

[12] B. Sapp and B. Taskar. Modec: Multimodal decomposable models for human pose estimation. In CVPR, 2013.

[13] S. Johnson and M. Everingham. Clustered pose and nonlinear appearance models for human pose estimation. In BMVC, 2010.

[14] S. Johnson and M. Everingham. Learning effective human pose estimation from inaccurate annotation. In CVPR, 2011.

[15] D. Ramanan. Learning to parse images of articulated bodies. In NIPS, 2006.

Comment 0