論文読み：Deep High-Resolution Representation Learning for Human Pose Estimation

# Deep High-Resolution Representation Learning for Human Pose Estimation

原著論文：https://openaccess.thecvf.com/content_CVPR_2019/papers/Sun_Deep_High-Resolution_Representation_Learning_for_Human_Pose_Estimation_CVPR_2019_paper.pdf

### 背景
従来の手法は、高解像度の表現を低解像度の特徴マップから復元するアプローチが主流だったが、これには情報の損失が伴う。この研究では、HRNet（High-Resolution Net）という新しいアーキテクチャを提案し、プロセス全体で高解像度の表現を維持しつつ、高精度なキーポイントのヒートマップを生成することを目的としている。
また、HRNetは最新手法でも比較対象にされることがよくあるので、姿勢推定手法の中でも特に有名な論文の1つ。

---
### 手法
#### HRNetのアーキテクチャ
HRNet（High-Resolution Network）は、従来の多くの手法と異なり、全体を通して高解像度の表現を維持するように設計されている。このネットワークは、次のような構造を持つ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2323577/47fa8f5e-70ca-0169-b2ae-e51177963525.png)


1. **高解像度サブネットワークをスタート地点とする**：
    - HRNetは、最初に高解像度サブネットワークを設置し、これを第1ステージとして使用する。このサブネットワークは、基本的な高解像度の特徴マップを生成する。

2. **高低解像度サブネットワークを段階的に追加**：
    - 高解像度のサブネットワークに加えて、低解像度のサブネットワークを段階的に追加し、それらを並列に接続する。各ステージで解像度が異なる複数のサブネットワークが並列に存在し、それらの間で情報が交換される。

3. **繰り返しのマルチスケール融合**：
    - 各サブネットワーク間で情報を繰り返し交換することで、低解像度のサブネットワークから得られる情報を高解像度のサブネットワークに融合し、逆もまた然り。これにより、各サブネットワークが他のサブネットワークから情報を受け取ることで、特徴表現がより豊かになる。

### 繰り返しのマルチスケール融合の詳細
HRNetの大きな特徴の一つは、各ステージでの繰り返しマルチスケール融合だ。これにより、異なる解像度の特徴マップが連携し、より高精度な特徴表現が得られる。以下にそのプロセスを詳しく説明する：

1. **並列サブネットワークの構造**：
    - 各ステージには複数のサブネットワークが並列に存在し、これらは異なる解像度の特徴マップを生成する。例えば、第3ステージでは3つの並列サブネットワーク（高、中、低解像度）が存在する。

2. **交換ユニット（Exchange Units）**：
    - 各サブネットワーク間の情報交換は、交換ユニットと呼ばれるモジュールによって行われる。このユニットは、異なる解像度の特徴マップ間で情報を交換し、各解像度の特徴マップが他の解像度の情報を取り入れることを可能にする。
    - 具体的には、高解像度の特徴マップは低解像度の特徴マップからの情報を受け取り、それを融合して特徴マップを更新する。同様に、低解像度の特徴マップも高解像度の特徴マップからの情報を取り入れる。

---
### ヒートマップの推定
HRNetでは、最終的な高解像度表現から直接ヒートマップを推定する。この方法は、従来の低解像度から高解像度へのアップサンプリングを行う手法よりも精度が高い。ヒートマップの推定には、以下のステップが含まれる：

1. **高解像度表現の使用**：
    - 最終的な高解像度表現から直接ヒートマップを生成することで、精度の高いキー ポイントの位置情報を得る。

2. **損失関数**：
    - ヒートマップの予測とグラウンドトゥルースのヒートマップを比較するために、平均二乗誤差（Mean Squared Error, MSE）を損失関数として使用する。

---
### 損失関数の詳細
HRNetのロス計算については、以下のようなステップで行われる。

1. **ヒートマップの生成**：
    - モデルは、高解像度の特徴表現から各キーポイントに対応するヒートマップを生成する。ヒートマップは、各キーポイントの存在確率を表すもので、2Dガウシアン分布に基づいて生成される。

2. **GTのヒートマップ**：
    - 各キーポイントのGTの位置に基づいて、対応するヒートマップを生成する。これも2Dガウシアン分布を使用し、標準偏差は1ピクセルに設定される。

3. **ロス関数**：
    - ロス関数としては、平均二乗誤差（Mean Squared Error, MSE）を使用する。具体的には、（各キーポイントごとの）予測されたヒートマップとGTのヒートマップとの間のピクセルごとの二乗誤差の平均を計算する。
    
    ロス関数の定義は以下の通り：
    $ L = \frac{1}{N} \sum_{i=1}^{N} \| H_i^{\text{pred}} - H_i^{\text{gt}} \|^2 $

    ここで、$ N $はキーポイントの数、$ H_i^{\text{pred}} $は予測されたヒートマップ、$ H_i^{\text{gt}} $はグラウンドトゥルースのヒートマップである。

---
### ネットワークの具体的な構成
HRNetは、以下のような具体的な構成を持つ：

1. **ステージ構成**：
    - HRNetは、4つのステージから成り、それぞれのステージには高解像度から低解像度までの並列サブネットワークが含まれる。各ステージでは、解像度が半分に減少し、チャネル数が倍増する。

2. **残差ユニット**：
    - 各ステージには、複数の残差ユニットが含まれ、これにより深い特徴表現を学習する。残差ユニットは、3x3の畳み込み層で構成される。

### まとめ
HRNetの手法は、高解像度の特徴表現を維持しながら、繰り返しのマルチスケール融合を行うことで、精度の高いキー ポイント検出を実現する。このアプローチにより、他の従来手法と比較して優れた性能を発揮し、姿勢推定の精度を大幅に向上させることができる。

### 実験結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2323577/00df4683-3bcc-daf7-5425-76f565d81676.png)

#### COCOデータセット
- **評価指標**：Object Keypoint Similarity (OKS)を用いた標準評価指標で評価。
- **結果**：HRNet-W48は、75.5のAP（平均精度）を達成し、他の最先端手法を上回る結果を示した。

#### MPIIデータセット
- **評価指標**：PCKh（head-normalized probability of correct keypoint）スコアを使用。
- **結果**：HRNet-W32は、92.3のPCKh@0.5スコアを達成し、他の多くの手法よりも優れた性能を示した。

#### PoseTrackデータセット
- **評価指標**：mean Average Precision (mAP)およびmulti-object tracking accuracy (MOTA)。
- **結果**：HRNetは、mAPおよびMOTAの両方で他の手法を上回る結果を示し、特にFlowTrackよりも優れた性能を発揮した。

### アブレーションスタディ
- **繰り返しのマルチスケール融合**：多段階の融合が精度向上に寄与することを確認。特に、ステージ間およびステージ内の交換ユニットの有無を比較した結果、両方を使用することで最も高い精度が得られた。
- **解像度の維持**：高解像度のサブネットワークを維持することがキー ポイント検出の精度向上に寄与することを確認。

### 結論
HRNetは、高解像度の表現をプロセス全体で維持し、マルチスケールの融合を繰り返すことで、正確で空間的に精密なキー ポイントヒートマップを生成する。これにより、従来の手法と比較して優れた姿勢推定性能を実現している。将来的には、顔のアライメント、物体検出、セマンティックセグメンテーションなどの他の密な予測タスクへの応用が期待される。

### その他
https://github.com/leoxiaobin/deep-high-resolution-net.pytorch
コードも公開されているので、実際に動かした感想なども追記していくつもりです。