DeepPose의 논문의 제목은 DeepPose: Human Pose Estimation via Deep Neural Networks이다. (링크)
저자는 Alexander Toshev, Christian Szegedy다.
DeepPose는 pose estimation을 해결하려는 논문으로 사람의 관절 (joints)를 찾는 알고리즘이다.
Figure 1과 같은 결과를 내고자 한다.
Abstract
DNN (Deep Neural Network) 기반의 regression 문제로 해석해서 사람의 신체 관절 (body joints)를 통한 pose estimation을 수행한다. Pose에 대한 설명과 동시에 4가지 학술적인 벤치마크에서 좋은 성능을 냈다.
3. Deep Learning Model for Pose Estimation
$k$개의 신체 관절을 pose vector로 인코딩한다.
이는 $\mathbb{y} = (..., \mathbb{y}_i^{T},....)^T, i \in {1, .., k} $로 정의된다.
$ \mathbb{y}_i^{T}, $ vector는 $i$th joint의 $x$와 $y$ 좌표를 포함한다.
Labeled image는 ($x$, $ \mathbb{y} $)로 표기한다.
이때 $ \mathbb{y} $는 ground truth pose vector를 의미한다.
Joint의 좌표는 이미지의 절대 좌표 (absolute image coordinates)에 기반하기 때문에 사람의 신체를 감싸는 box $b$에 맞게 normalize해야 한다. 이 박스는 중앙 (center) $b_c$, wideth $b_w$, height $b_h$로 정의된다.
$b$ = ( $b_c$, $b_w$, $b_h$).
그 다음 관절 $ \mathbb{y}_i $는 다음 방법으로 normalize 된다.
$$ N( \mathbb{y}_i ; b) =
\begin{pmatrix}
1 / b_w & 0 \\
0 & 1 / b_h \\
\end{pmatrix} ( \mathbb{y}_i - b_c)$$.
N($ \mathbb{y} $; $b$) = $(..., N( \mathbb{y}_i ; b), ...)^T$로 표기할 수 있다.
N($ \mathbb{y} $; $b$) 는 normalized pose vector다.
N($x; b$)는 bounding box $b$에 의해서 크롭된 image $x$를 의미한다.
Pose prediction $y^*$ = $N^{-1} (\psi (N(x); \theta))$로 abolute image coordinates다.
여기서 $\psi$ 함수가 바로 convoluton에 기반한 DNN이다.
Training
Training set $D$는 아래와 같이 normalization을 취한다.
$D_N$ = {( $N(x), N(\mathbb{y}) | (x, \mathbb{y} ) \in D$ )}.
Loss는 $L_2$ loss로 다음과 같이 정의된다.
arg $ \underset{\theta}{\operatorname{min}} \sum_{(x, y) \in D_N} \sum_{i=1}^{k} || \mathbb{y}) - \psi_{i} (x, \theta)||_2^{2}$.
DNN의 파라미터 $\theta$는 backpropogation에 의해서 업데이트 되며 learning rate는 0.0005다. 미니 배치 사이즈는 128이다.
Cascade of Pose Regressors
Image size가 220 x 220으로 고정되어 있기 때문에 한계가 생긴다. 이를 극복하기 위한 방안을 소개한다.
아래 Figure 2처럼 initial stage와 stage s로 이를 푼다.
A stage $s \in {1, 2, ..., S}$ 이고 $S$는 total cascade stages다.
$\theta_s$는 stage $s$에서의 학습된 모델의 파라미터이며 bounding box $b_i$는 location $ \mathbb{y}_{i}$가 주어졌을 때이다. 이 박스는 $ \mathbb{y}_{i}$ 근처의 sub-image를 잡는다.
$ \mathbb{y}_{i}: b_i(\mathbb{y}; \sigma) = ( \mathbb{y} , \sigma diam( \mathbb{y} ), \sigma diam(\mathbb{y} )) )$다.
Diam은 pose diameter의 약자이며 $\sigma$는 pose diameter의 scaler다.
Stage 1: $ \mathbb{y}^1 \leftarrow N^{-1} ( \psi (N(x; b^0); \theta_1); b^0) $
Stage $s$에서는 $ \mathbb{y}^s $를 업데이트 한다.
Stage $s: \mathbb{y}^s \leftarrow \mathbb{y}^{s - 1} + N^{-1} ( \psi (N(x; b); \theta_s); b) $
where $b = b_{i}^{s-1}$.
$ b_{i}^{s} \leftarrow (\mathbb{y}_i^{s} , \sigma diam(\mathbb{y}^s ),\sigma diam( \mathbb{y}^s )) ) $
Training
${D}_{A}^{s} = \left\{ \left( N(x; b), N(\mathbb{y}_i; b) \right) \mid (x, \mathbb{y} _i) \sim D, \delta \sim N(\sigma^{-1})_i, b = (y_i + \delta, \sigma_{\text{diam}}(y)) \right\}$
Objective function은 아래와 같다.
$\theta_s$ = arg $ \underset{\theta}{\operatorname{min}} \sum_{(x, \mathbb{y}_i) \in D_{A}^{s}} \sum_{i=1}^{k} || \mathbb{y}_i) - \psi_{i} (x, \theta)||_2^{2}$.
4. Empirical Evaluation
Datasets
Frames Labeled In Cinema (FLIC)
Leeds Sports Dataset
Metrics
Percentages of Correct Parts (PCP)로 limbs의 detection rate를 계산한다.
전체 관절 중에서 올바르게 감지된 관절의 수를 뜻한다. 따라서 숫자가 클수록 더 낫다는 의미다.
Table 1을 살펴보면 DeepPose가 다른 모델들과 비교해서 대체적으로 좋은 성능을 보여줌을 알 수 있다.
References:
'Computer Vision' 카테고리의 다른 글
DeepLab v2 (2016) 논문 리뷰 (0) | 2025.04.08 |
---|---|
RetinaNet Focal Loss (2017) 논문 리뷰 (0) | 2025.04.07 |
FaceNet (2015) 논문 리뷰 (0) | 2025.04.07 |
DenseNet (2017) 논문 리뷰 (0) | 2025.04.07 |
SSD (2016) 논문 리뷰 (0) | 2025.04.07 |