이번 글에서는 CVPR 2022에 accept된 논문인 Lite Pose: Efficient Architecture Design for 2D Human Pose Estimation 을 리뷰하도록 하겠습니다.
해당 논문은 기존 2D Human Pose Estimation task를 수행하는 모델들이 high computational cost를 가진다는 문제점을 해결하고자 합니다. 그래서 Lite Pose라는 모델을 제안하여 low latency와 small parameter numbers를 가지면서 좋은 성능(mAP)을 얻어냈다는 성과를 보여주었습니다.
1. Introduction
Lite Pose는 기존의 bottom-up 방식의 architecture인 (Higher)HRNet의 단점을 보완한 모델입니다. 기존 HRNet은 multi-branch 구조를 사용하여 다양한 image scale에 대해 학습할 수 있도록 하였습니다. 이는 mAP성능을 높이는 데 기여하게 됩니다. 하지만 muti-branch인 구조이다 보니 당연히 model의 크기도 커지고 latency도 높아지게 되는 문제점을 가지죠.
이를 해결하기 위해 저자들은 gradual shrinking을 이용한 single-branch구조를 사용하여 latency와 parameter수를 모두 줄이게 됩니다. gradual shrinking은 말그대로 "점차적으로 줄이기"을 뜻하며 multi-branch(a)를 아래와 같이 점차 줄여가는 모듈 구조(shrink1, 2, 3)를 말합니다. 모듈 구조를 줄였는데도도 좋은 성능을 얻었다고 합니다.
그리고 multi-branch에서는 scale variation에 영향이 거의 없지만 single-branch에서는 scale variation prolbem이 있기 때문에 이를 해결하기위해 fusion deconv head와 large kernel conv를 제안하게 됩니다. 마지막으로는 Neural Architecture Search (NAS)를 통하여 model architecture를 최적화 하여 최종적으로 Lite Pose 모델을 완성하게 됩니다. (자세한 설명은 아래의 Method에서 하도록 할게여!!) 그리하여 아래와 같이 LitePose는 기존 pose estimation 모델들보다 좋은 성능과 빠른 latency를 가지게 됩니다.
2. Rethinking the Efficient Design Space
제안하는 LitePose의 상세한 architecture design에 대해 설명드리도록 하겠습니다.
2.1 Redundancy in High-Resolution Branches
맨위의 그림에서 보이듯이 HRNet은 multi-branch 구조를 가집니다. 구체적으로 각 \(n\) stage마다 \(n\)개의 다른 branch를 가지는데 이는 \(n\)개의 다른 resolution의 input feature를 받기 때문에 다양한 image scale에 대한 학습이 가능하게 되고 이는 mAP성능향상에 큰 도움을 주었죠. 하지만 multi-branch이다 보니 수많은 parameter를 사용하게 되고 이는 Latency를 느리게하는 주범이 됩니다.
이러한 multi-branch구조는 edge device에서 사용할 수 없다는 것을 지적하였고 이를 해결하기 위해 gradual shrinking방법을 통해 multi-branch구조가 redundancy를 가진다는 것을 증명하였습니다. gradual shrinking방법은 맨위 사진에서 보여드린 3가지(shrink 1,2,3) configuration입니다. 저자들은 3가지 configuration과 HRNet구조의 성능비교를 해보았을 때 아래와 같이 shrinking 될수록 mAP성능이 높아짐을 확인하였습니다.
결론적으로 single branch에 가까워 질수록 성능은 높아졌다는 것입니다.
2.1.1 Gradual Shrinking
Gradual shrinking에 대해 수학적으로 풀어보죠. 기존의 HRNet의 branch와 block은 다음과 같이 정의됩니다.
- \(A_n = [ a_1 , \cdots, a_n] \): 각 branch에서 사용되는 block 수
- \(A = \{ A_1, A_2, A_3, A_4 \} \): 전체 multi-branch 구조
그리고, gradual shrinking방법으로 정의된 branch와 block은 다음과 같습니다.
- \( A'_i= [ a'_1, \cdots, a'_i ] \) : \( A_i \)로 부터 줄어든(shrinking) block수
- \( s.t. \forall j \in \{1, \cdots, i\}, a'_j \leq a_j \)
- \( A'_i \leq A_i \)
- \( [C_1 , \cdots , C_m] s.t. C_{i+1} \leq C_i \) : gradual shrinking의 sequence configurations
- C1: HigherHRNet
- C2: Shrink1
- C3: Shrink2
- C4: Shrink3
2.2 Fusion Deconv Head: Remove the Redundancy
single-branch를 사용하여 기존 multi-branch의 redundancy를 줄였지만 single-branch는 scale variation problem이라는 단점을 가집니다. 이를 해결하기위해 저자들은 fusion deconvolutional layers을 제안하였습니다.
Fusion deconvolutional layer는 직접적으로 이전의 Stage들로부터 생성된 low-level high resolution feature를 head layer의 output에 concatenate하는 방법입니다. 기존의 HR Fusion과 다르게 추가적인 conv연산을 없앳다는 점에서 efficiency를 가집니다. 아래와 같이 Litepose network에서 head layer인 각 deconv layer와 final layer의 output에 이전 stage의 output을 concatenate한 것입니다. 위의 (b)사진에서 보이듯이 기존의 deconv보다 제안한 fusion deconv가 높은 mAP를 도출하는데 큰 기여를 한것을 알 수 있습니다.
2.3 Mobile Backbone with Large Kernel Convs
위의 LitePose구조에서 알 수 있듯이 backbone은 변형한 MobileNetv2를 사용하였습니다. 변형한 것은 마지막의 down-sampling layer을 제거한 것이고 해당 layer가 high resolution의 정보를 없애기 때문에 없앳다고 합니다. 또한 특별하게 pose estimation task에서는 기존 image classification과 다르게 kernel size를 7x7로 했을 때 성능이 좋게 나왔다고 하여 LitePose에서의 7x7 kernel size의 convolution layer를 사용하였습니다.
3. Neural Architecture Search (NAS)
마지막으로 LitePose모델을 만드는데 있어서 최적의 input resolution과 channel size를 찾기 위해 NAS의 한 방법인 Once-for-all을 사용하였습니다. (Once-for-all은 저자 중 한명이신 song han님의 NAS논문이고 자세히 알고싶으시면 논문 찾아보시는 것을 추천합니다. 좋은 논문이거든요ㅎㅎ..) 그래서 NAS를 통하여 4개의 LitePose모델: LitePose XS, S, M and L 을 찾아내었습니다.
NAS에 사용된 방법내용은 다음과 같습니다.
3.1 Optimization goal
기존 LitePose는 \(K\)개의 layer를 가지며 각 layer가 \( \{ c_k\}^K_{k=1} \)channels 을 가진다고 할 때, NAS의 optimization 목표는 best mAP는 유지하면서 기존보다 채널수를 작게하고 \( \{ c'_k\}^K_{k=1} \) ( \(c'_k \leq c_k\) )와 기존 input resolution 보다 작도록 하는 \( r' < r \) 것입니다.
3.2 One-shot Supernet Training
NAS에서 supernet을 학습할때 one-shot방법을 사용하게 됩니다. 서로 다른 channel number configurations는 weight sharing을 하게 됩니다. 각 training iteration마다 하나의 channel configuration은 uniform sampling으로 선택되도록 하였고 선택된 configuration만 training되도록 합니다. 또한 grouping을 위한 associate embedding를 학습하기 위해 pretrained weight로 supernet의 weight를 초기화하였습니다. (associate embedding은 "Associative Embedding: End-to-End Learning for Joint Detection and Grouping"논문을 참고해주세요)
3.3 Search & Fine-tune
supernet에서 최적의 sub-network를 찾기위해 evolutionary algorithm을 사용하게 되고 찾아진 sub-network는 Fine-tuning을 통해 최종 performance를 뽑아내게 됩니다.
4. Experiment
4.1 Dataset & Evalution Metrics
- Dataset
- Microsoft COCO: 20,000 images, 17 keypoints
- CrowdPose: 20,000 images, 14 keypoints
- Evalution metrics
- Object Keypoint Similarity (OKS)
- OKS는 가우시안 분포를 따르며 \( -d^2_i \)는 평균, \( 2s^2 k^2_i \)는 분산을 의미함.
- \( d_i \)는 \(i\)-th keypoint에 대해 ground truth와 prediction의 distance
(distance \(d_i \)가 0이면 OKS값이 1이 되므로 가장 최적의 성능을 뜻함) - \(v_i \)는 ground truth의 visibility flag을 의미하고 \( \delta (v_i > 0) \)는 \( v_i \)가 1인 instance에만 측정하겠다는 것을 의미함.
- \( s\)는 object scale을 의미하게 되는데 object의 크기가 작을수록 작은 distance차이도 크게 작용해야 하도록 하는 변수
- \( k_i \)는 keypoint마다 중요도를 constant(상수)로 표현 (예를 들어 눈,코,입은 조금 틀려도 되지만 허리,팔은 Pose estimation에 중요하므로 조금 틀려도 안됨)
- Object Keypoint Similarity (OKS)
4.2 Experiment Setting
- Data Augmentation
- Random rotation [-30, 30]
- Random scale [0.75, 1.5]
- Random translation [-40, 40]
- Random flip
- Pre-training Details
- Associative Embedding loss없이 heatmap loss(ground truth랑 prediction의 Distance구하는 간단한 식)를 통해서만 supernet을 학습하여 supernet의 weight initialization으로 사용
- Microsoft COCO dataset으로 100 epochs 학습
- Associative Embedding loss없이 heatmap loss(ground truth랑 prediction의 Distance구하는 간단한 식)를 통해서만 supernet을 학습하여 supernet의 weight initialization으로 사용
- Supernet Training Setting
- Training SuperNet for LitePose-L/M/S/XS on CrowdPose dataset
- LitePose-L/M/S에 대해 800 epochs, batch size 32, lr = 0.001 사용
- LitePose-XS에 대해 2400 epochs, batch size 128, lr = 0.004 사용
- 각 training step마다, 모델 구조는 uniform sampling을 통해 선택
- Training SuperNet for LitePose-L/M/S/XS on CrowdPose dataset
- Fine-tuning Setting
- NAS로 찾아진 최적의 sub-network에 대해 아래와 같이 설정
- CrowdPose dataset에 대해 200 epochs, batch size 32, lr = 1e-3 (각 50, 180 epoch에서 1e-4, 1e-5사용)
- COCO dataset에 대해 500 epochs, batch size 32, lr = 1e-3 (각 350, 480 epoch에 1e-4, 1e-5 사용)
- NAS로 찾아진 최적의 sub-network에 대해 아래와 같이 설정
- Search Details
- NAS는 CrowdPose dataset에 사용하였으며
- LitePose-L/M/S Supernet 학습시 input resolution search space는 [512, 448], channel width ratio는 [1.0, 0.75, 0.5]로 설정
- LitePose-XS Supernet 학습시 input resolution search space는 [512, 448, 384, 320, 256], channel width ratio는 [1.0, 0.75, 0.5, 0.25]로 설정
- NAS는 CrowdPose dataset에 사용하였으며
4.3 Main Result
당연히 기존의 pose estimation model들보다 뛰어난 mAP와 낮은 Latency를 갖게되었음을 보여준다.
'AI paper review > Mobile-friendly' 카테고리의 다른 글
[MobileOne] An Improved One millisecond Mobile Backbone 논문 리뷰 (0) | 2022.06.25 |
---|---|
EfficientFormer: Vision Transformers at MobileNet Speed 논문 리뷰 (1) | 2022.06.08 |
MobileViT 논문 리뷰 (0) | 2022.03.28 |
EfficientNetv2 논문 리뷰 (0) | 2022.03.24 |
Adjustable Real-time Style Transfer (0) | 2022.03.10 |