Lite-HRNet: A Lightweight High-Resolution Network, Changqian Yu, Bin Xiao, et al., 2021 을 읽고 정리, 요약한 글입니다.
⏹️ Abstract
본 논문은 human pose estimation을 위한 효율적인 high-resolution network인 LiteHRNet을 제시한다.
ShuffleNet의 효율적인 shuffle block을 HRNet(high-resolution network)에 적용하여 MobileNet, ShuffleNet, Small HRNet과 같은 인기 있는 lightweight network보다 더 강력한 성능을 산출하는 것으로 시작한다.
shuffle block에서 많이 사용되는 pointwise(1 × 1) convolution이 computiational bottleneck이 된다는 것을 발견하고 shuffle block에서 costly pointwise(1 × 1) convolution을 대체하기 위해 lightweight unit인 conditional channel weighting을 도입했다.
conditional channel weighting unit은 pointwise(1 × 1) convolution 역할을 수행하며 channel map이 담고 있는 정보를 교환하는 bridge 역할을 수행한다.
LiteHRNet은 HRNet의 병렬 branch에서 쉽게 사용할 수 있는 모든 채널과 multiple resolution에서 가중치를 학습하여 더 풍부한 정보를 포함할 수 있도록 했다.
Lite-HRNet은 인기 있는 lightweight network보다 human pose estimation에서 우수한 결과를 보여주었으며 Lite-HRNet은 동일한 lightweight manner로 semantic segmentation task에 쉽게 적용할 수 있다.
1️⃣ Introduction
human pose estimation은 높은 성능을 달성하기 위해 high-resolution representation이 필요하다.
HRNet은 semantic segmentation, human pose estimation, object detection과 같은 position-sensitive problem에서 large model 사이에서 더 강력한 기능을 보여주었지만, high-resolusion이 small model에 도움이 되는지는 여전히 불분명하다.
기존의 효율적인 네트워크는 주로 두 가지 관점에서 설계된다. 하나는 MobileNet 및 ShuffleNet과 같은 classification network에서 설계를 차용하여 matrix vector multiplication을 줄이는 것이다. 다른 하나는 encoder-decoder 아키텍처 및 multi-branch 아키텍처와 같은 다양한 trick으로 spatial information loss를 중재(mediate)하는 것이다.
본 논문은 먼저, ShuffleNet의 shuffle block과 HRNet의 high-resolution design pattern을 간단히 결합한 naive lightweight network를 연구한다.
더 높은 효율성을 달성하기 위해, 본 논문은 shuffle block에서 비용이 많이 드는 pointwise(1 × 1) convolution을 대체하기 위해 채널 간 정보 교환을 수행하는 conditional channel weighting이라는 효율적인 unit을 도입한다.
channel weighting scheme은 매우 효율적이다.
complexity는 채널 수에 선형 w.r.t이고 pointwise convolution에 대한 2차 시간 복잡도(quadratic time complexity)보다 낮다. 예를 들어, 64×64×40 및 32×32×80의 multi-resolution feature를 사용하면, conditional channel weighting unit은 shuffle block의 전체 계산 복잡도를 80%까지 줄일 수 있다.
모델 prameter로 학습된 일반 convolutional kernel weight와 달리, conditional channel weight는 input map에서 조건화 되고 lightweight unit을 통해 채널에 걸쳐 계산된다. 따라서, conditional channel weighting unit은 모든 채널 map의 정보를 포함하고 channel weight를 통해 정보를 교환하는 bridge 역할을 한다.
본 논문에서는 weight가 더 풍부한 정보를 포함하고 강화(strengthened)되도록 쉽게 사용할 수 있는 parallel multi-resolution channel map에서 weight를 계산하는 이런 network를 Lite-HRNet이라고 부른다.
본 논문의 주요 기여는 다음과 같다.
- 단순히 shuffle block을 HRNet에 적용하여 lightweight network인 naive Lite-HRNet을 leading하고 MobileNet, ShuffleNet 및 Small HRNet보다 우수한 성능을 경험적으로 보여준다.
- 개선된 효율적인 네트워크인 LiteHRNet을 제시한다. 핵심은 shuffle block에서 비용이 많이 드는 1×1 convolution을 대체하기 위해 효율적인 conditional channel weighting unit을 도입하고, 이 weight는 channel과 resolution에 걸쳐 계산된다는 것이다.
- Lite-HRNet은 COCO 및 MPII human pose estimation의 복잡성과 정확성 측면에서 SOTA를 달성하며, semantic segmentation task로 쉽게 일반화 된다.
2️⃣ Related Work
◾ Efficient blocks for classification
분리 가능한 convolution과 group convolution은 MobileNet, IGCV3 및 ShuffleNet과 같은 lightweight network에서 점점 더 인기를 끌고 있다.
Xception과 MobileNetV1은 하나의 정규 convolution을 depthwise convolution과 pointwise convolution으로 분리한다. MobileNetV2와 IGCV3는 하위 커널에 대한 linear bottleneck을 추가로 결합한다. MixNEt은 혼합 커널을 depthwise convolution에 적용한다. efficientHRNet은 Higher HRNet에 mobile convolution을 도입한다.
1×1 convolution을 대체하기 위해 채널 간에 정보 교환을 수행하는 lightweight manner performing을 도입한다.
채널 간의 정보는 group convolution과 depthwise convolution에서 차단되는데, 이를 해결하기 위해 pointwise convolution을 많이 사용되지만 계산 비용이 많이 든다는 단점이 있다. complexity를 줄이기 위해 channel suffling 또는 interleaving을 사용하여 1 × 1 convolution을 그룹화하여 채널 간 정보 교환을 유지한다.
◾ Mediating spatial information loss
계산 complexity는 spatial resolution과 긍정적인 관련이 있다. spatial information loss를 매개로 spatial resolution을 낮추는 것도 효율성을 높이는 방법 중 하나이다.
encoder-decoder architecture는 ENet 및 SegNet과 같은 spatial resolution을 복구하는 데 사용되며 ICNet은 전체 complexity를 줄이기 위해 서로 다른 resolution input에 서로 다른 계산을 적용한다. BiSeNet은 detail information 및 context information을 다른 lightweight sub-network와 분리한다.
이는 전체 프로세스에서 high-resolution representation을 유지하기 위해 HRNet의 hight-resolution pattern을 따른다.
◾ Convolutional weight generation and mixing
Dynamic filter Network는 입력에 따라 조정된 convolution filter를 동적으로 생성한다. Meta-Network는 meta-learner를 채택하여 cross-task knowledge를 학습하기 위한 가중치를 생성한다. CondINS 및 SOLOV2는 이 설계를 instance segmentation task에 적용하여 각 instance에 대한 mask sub-network의 parameter를 생성한다. CondConv 및 Dynamic Convolution은 각 샘플에 대해 해당 convolution kernel을 혼합하기 위해 일련의 가중치를 학습하여 모델 용량을 증가 시킨다.
Attention mechanism은 일종의 conditional weight generation으로 간주될 수 있다. SENet은 global information을 사용하여 channel map을 흥분(excite)시키거나 억제하기 위한 가중치를 학습한다. GENet은 contextual dependency를 활용하기 위해 local information을 수집함으로써 이를 확장한다. CBAM은 channel 및 spatial attention을 활용하여 feature를 세분화한다. 본 논문에서 제안하는 conditional channel weighting scheme은 어떤 의미에서 conditional channel-wise 1 × 1 convolution으로 간주될 수 있다. 저렴한 계산 비용 외에도 추가 효과를 활용하고 conditional weight를 채널 간에 정보를 교환하는 bridge로 사용한다.
◾ Conditional architecture
일반 네트워크와 달리 conditional 아키텍처는 동적 너비, 깊이 또는 커널을 달성할 수 있다. SkipNet은 gate network를 사용하여 일부 convolution block을 건너 뛰어 complexity를 선택적으로 줄인다. Spatial Transform Network는 입력에 따라 조정된 feature map을 왜곡하는 방법을 학습한다. Deformable convolution은 각 spatial location에서 조건화된 convolution kernel에 대한 offset을 학습한다.
3️⃣ Approch
◾ Naive Lite-HRNet
▪️ Shuffle blocks
huffleNet V2의 Shuffle block은 먼저 채널을 두 개의 파티션으로 분할한다. 하나의 파티션은 1×1 convolution, 3×3 depth-wise convolution, 1×1 convolution의 sequence를 통과하고 출력은 다른 파티션과 연결된다. 마지막으로 연결된 채널은 Fig1 (a)에 표시된 것처럼 셔플링 된다.
▪️ HRNet
HRNet은 첫 번째 단계로 high-resolution convolution tem에서 시작하여 새로운 단계로 high-resolution에서 low resolution stream을 하나씩 점진적으로 추가한다. multi-resolution stream은 병렬로 연결되며 main body는 sequence of stage로 구성되고 각 단계에서 resolution 간의 정보가 반복적으로 교환된다.
본 논문은 Small HRNet design을 따르고 네트워크를 형성하기 위해 더 적은 수의 레이어와 smaller width를 사용한다. Small HRNet의 stem은 stride가 2인 2개의 3×3 convolution으로 구성되고 main body의 각 stage는 residual block의 sequence와 하나의 multi-resolution fusion을 포함한다.
그림 2는 Small HRNet의 구조를 보여준다.
▪️ Simple combination
본 논문은 Small HRNet의 stem에서 두 번째 3×3 convoultion을 대체하기 위해 shuffle block을 채택하고 모든 normal residual bock(두 개의 3×3 convoultion으로 형성됨)을 대체한다. multi-resolution fusion의 normal convoultion은 분리 가능한 convoultion으로 대체되어 naive Lite-HRNet을 생성한다.
◾ Lite-HRNet
▪️ 1×1 convolution is costly
1×1 convolution은 각 위치에서 행렬-벡터 곱셈을 수행한다: Eq(1) Y = W ⊗ X (여기서 X와 Y는 입력 및 출력 feature map이고 W는 1×1 kernel이다).
1 × 1 convolution은 채널의 수(C)에 대한 2차 시간 복잡도(Θ(C^2))이며, 3 × 3 depthwise convolution은 선형 시간 복잡성이다(Θ(9C)).
shuffle block에서 두 개의 1×1 convolution의 복잡성은 depthwise convolution의 복잡성보다 훨씬 높다(Θ(C^2) > Θ(9C), 일반적인 경우 C > 5).
표 2는 1×1 convolution과 depthwise convolution의 복잡성 비교 예를 보여준다.
▪️ Conditional channel weighting
본 논문은 element-wise 가중치 연산을 사용하여 s번째 stage에 s branch가 있는 naive Lite-HRNet에서 1×1 convolution을 대체할 것을 제안한다. resolution branch에 대한 element-wise 가중치 연산은 Eq(2) Ys = Ws ⊙ Xs이다(Ws는 size Ws x Hs x Cs의 3-d tensor weight map이며, ⊙는 element-wise 곱셈 연산자이다). 복잡도는 channel number Θ(C)에 대해 선형이며 shuffle block의 1 × 1 convolution보다 훨씬 복잡도가 낮다.
본 논문은 Fig 1(b)와 같이 single resolution의 채널과 모든 resolution의 채널을 사용하여 가중치를 계산하고 가중치가 채널과 해상도 간에 정보를 교환하는 역할을 한다는 것을 보여준다.
▪️ Cross-resolution weight computation
s번째 stage를 고려할 때, s 병렬 resolution 각각 corresponding resolution에 대한 s weight map인 w1, w2, ., ws이 있다.
본 논문은 lightweight function Hs(·)인, Eq(3) (W1, W2, ., Ws) = Hs(X1, X2, ., Xs)를 사용하여 resolution 전반의 모든 채널에서 weight map을 계산한다. 여기서 {X1, ., Xs}는 resolution의 input map이며, X1은 high resolution에 해당하고 Xs는 s번째로 높은 resolution에 해당한다.
본 논문은 다음과 같이 경량 함수 Hs(·)를 구현한다.
{X1, X2, ., Xs-1}에서 Adaptive average pooling(AAP)을 수행한다.
X'1 = AAP(X1), X'2 = AAP(X2), ..., X's-1 = AAP(XS-1)에서 AAP는 주어진 출력 크기로 입력을 풀링하고 {X'1, X'2, ., X'1}과 마지막 Xs feature map과 연결하여 convolution 연산을 진행한다.
여기서 각 해상도에 대한 각 위치의 가중치는 average-pooled multi-resolution channel maps의 동일한 위치에 있는 채널 feature에 따라 달라진다. 이것이 본 논문에서 이 scheme을 cross-resolution weight computation이라고 부르는 이유이다.
s - 1 가중치 맵 W'1, W'2, ., W'1은 subsequent element-wise 채널 가중치를 위해 해당 resolution로 upsampling되어 W1, W2, ., Ws-1을 출력한다. position i(weight map Ws에서)에 있는 weight vector wsi의 각 요소는 동일한 pooling region에 있는 모든 resolution의 모든 입력 채널로부터 정보를 수신하며, 이는 Eq(4)의 연산으로부터 쉽게 검증된다.
Eq(4)(each for one resolution) :
이러한 가중치 벡터를 통해 이 위치에 있는 각 출력 채널 Eq(5) ysi = wsi ⊙ xsi는 모든 resolution에 걸쳐 동일한 위치에 있는 모든 입력 채널로부터 정보를 수신한다. 즉, channel weighting scheme은 정보 교환 측면에서 1×1 convolution과 같은 역할을 한다.
반면 samll resolution에는 함수 Hs(·)가 적용되어 계산 복잡성이 매우 적다.
표 2는 전체 단위가 1 × 1 컨볼루션보다 훨씬 낮은 복잡도를 가지고 있음을 보여주며 표 2에서 1 × 1 convolution과 conditional channel weighting unit 사이의 복잡성을 비교한다.
▪️ Spatial weight computation
각 해상도에 대해, spatial position과 동일한 spatial weight를 계산한다. 모든 위치의 가중치 벡터 wsi는 동일하다.
가중치는 단일 해상도 Eq(6) ws = Fs(Xs)의 입력 채널의 모든 픽셀에 따라 달라진다. 여기서 Fs(·) 함수는 Xs → GAP → FC → ReLU → FC → sigmoid → ws로 구현된다.
Global average pooling(GAP) 연산자는 모든 위치에서 공간 정보를 수집하는 역할을 한다. 채널에 spatial weight, ysi = ws ⊙ xsi의 가중치를 부여함으로써 출력 채널의 각 요소는 모든 입력 채널의 모든 위치로부터 기여를 받는다.
▪️ Instantiation
Lite-HRNet은 hight-resolution stem과 high-resolution representation을 유지하기 위한 main body로 구성된다. stem은 첫 번째 단계로 stride 2와 suffle block이 있는 하나의 3×3 convolution을 가지고 있다. main body는 일련의 모듈화 된 모듈들을 가지는데 각 모듈은 두 개의 conditional channel weighting block과 하나의 multi-resolution fusion으로 구성된다.
각 resolution branch의 채널 dimension은 각각 C, 2C, 4C, 8C이다.
표 1은 상세한 구조를 설명한다.
▪️ Connection
conditional channel weighting scheme는 conditional convolutions, dynamic filters 및 squeeze-excitenetwork와 동일한 철학을 공유한다. 이러한 작업은 모델 용량을 늘리기 위해 input feature에 따라 하위 네트워크에 의해 convolution kernel 또는 mixture weights를 학습한다.
대신 본 논문의 방법은 extra effect를 활용하고 모든 채널에서 학습한 가중치를 채널과 resolution 간에 정보를 교환하는 bridge를 사용한다. 이 방법은 lightweight network에서 값비싼 1×1 convolution을 대체할 수 있다. 또한, weight 학습을 강화하기 위해 multi-resolution information을 도입했다.
4️⃣ Experiments
◾ setting
▪️ Datasets
COCO에는 17개의 키포인트와 함께 20만 개 이상의 이미지와 25만 명의 person 인스턴스가 있다. Lite-HRNet은 2017년 train 데이터 세트(57K 이미지 및 150K 개인 인스턴스 포함)을 학습하고 val2017(5K 이미지 포함) 및 test-dev2017(20K 이미지 포함)으로 검증했다. MPII human pose dataset에는 실제 활동에서 가져온 whole body annotation이 있는 약 25,000개의 이미지가 포함되어 있다. 40,000명 이상의 person 인스턴스, 테스트를 위한 분할 12,000개의 인스턴스 및 기타 training을 위한 인스턴스가 있다.
▪️ Training
네트워크는 GPU당 미니 배치 크기가 32인 8개의 NVIDIA V100 GPU에서 학습된다. 본 논문에서는 초기 학습 속도가 2e^-3인 Adam optimaizer를 채택한다. human detection boxes는 4:3의 고정 aspect ratio로 확장된 다음 이미지에서 bbox를 crop한다. 이미지 크기는 COCO의 경우 256×192 또는 384×288, MPII의 경우 256×256으로 크기가 조정된다. 각 이미지는 데이터 세트에 대한 random rotation([−30◦, 30◦]), random scale([0.75, 1.25]) 및 COCO에 대한 추가 half body 데이터를 포함하는 일련의 데이터 augmentation 작업을 거친다.
▪️ Testing
COCO의 경우 Simple Baseline이 제공하는 person detector와 함께 two-stage top-down 패러다임(person detection을 통해 person instance를 탐지하고 keypoint를 예측)을 채택한다. MPII의 경우 제공된 person box를 사용하기 위해 standard testing strategy를 채택합니다. post-gaussian filter를 통해 heat map을 estimation하고 original 및 flipped iamge의 predicted heat map을 평균낸다. 각 keypoint 위치를 얻기 위해 가장 highest response에서 두 번째로 높은 response까지의 방향으로 quarter offset이 적용된다.
▪️ Evaluation
본 논문은 COCO에서 OKS-based mAP metric을 채택하며, 여기서 OKS(Object Keypoint Similarity)는 서로 다른 human pose 간의 유사성을 정의한다. standard average precision 및 recall score: AP(10개 위치에서 AP 점수의 평균, OKS = 0.50, 0.55, ., 0.90, 0.95), AP50(OKS에서 AP = 0.50), AP75, AR 및 AR50가 나왔. MPII의 경우 standard metric PCKH@0.5((head-normalized probability of correct keypoint)를 사용하여 성능을 평가한다.
◾ results
▪️ COCO val
Lite-HRNet과 다른 SOTA의 결과 비교는 표 3에 있다.
256 × 192 입력 크기로 처음부터 훈련된 Lite-HRNet-30은 67.2 AP 점수를 달성하여 다른 light-weight method를 능가한다. MobileNetV2와 비교하여, Lite-HRNet은 20% GFLOP와 parameter로 AP를 2.6 point 향상 시킨다. ShuffleNetV2와 비교하여, Lite-HRNet-18과 Lite-HRNet-30은 각각 4.9점과 7.3점의 증가를 달성한다. Lite-HRNet의 복잡성은 ShuffleNetV2보다 훨씬 낮다. Small HRNet-W16과 비교하여 LiteHRNet은 10개 이상의 AP 포인트를 개선한다. Hourglass 및 CPN과 같은 대규모 네트워크와 비교하여 Lite-HRNet은 훨씬 낮은 복잡성으로 유사한 AP 점수를 달성한다. 입력 크기 384 × 288로 Lite-HRNet-18과 Lite-HRNet-30은 각각 67.6과 70.4 AP를 달성한다.
효율적인 conditional channel weighting으로 인해, Lite-HRNet은 Fig4(a)에 나온 것처럼 정확도와 계산 복잡성 사이에서 더 나은 균형을 달성한다.
Fig 3은 Lite-HRNet-30의 COCO에 대한 시각적 결과를 보여준다.
▪️ COCO test-dev
표 4는 Lite-HRNet과 SOTA의 비교 결과를 보고한다. Lite-HRNet-30은 69.7 AP 점수를 달성한다. 소규모 네트워크보다 훨씬 낫고 GFLOP 및 parameter 측면에서 더 효율적이다. 대규모 네트워크와 비교하여, Lite-HRNet-30은 Mask-RCNN, G-RMI 및 Integral Pose Regression을 능가한다. 일부 대규모 네트워크와 성능 차이가 있지만, Lite-HRNet은 GFLOP와 parameter 수가 훨씬 적다.
▪️ MPII val
표 5는 Lite-HRNet과 다른 lightweight network의 결과를 보고한다. Lite-HRNet18은 MobileNetV2, MobileNetV3, ShuffleNetV2, Small HRNetW16보다 훨씬 낮은 GFLOP로 더 나은 정확도를 달성한다. Lite-HRNet-30과 같이 모델 크기가 증가함에 따라 개선 격차가 커진다. Lite-HRNet-30은 87.0 PCKh@0.5를 달성하여 MobileNetV2, MobileNetV3, ShuffleNetV2 및 Small HRNet-W16보다 각각 1.6, 2.7, 4.2 및 6.8 포인트 향상 시켰다.
Fig 4(b)는 정확성과 복잡성의 비교를 보여준다.
◾ Ablation Study
본 논문은 COCO와 MPII라는 두 가지 데이터 세트에 대해 ablation study를 수행하고 그 결과를 검증 세트에 보고한다. input size는 COCO의 경우 256 × 192, MPII의 경우 256 × 256이다.
▪️ Naive Lite-HRNet vs. Small HRNet
본 논문은 HRNet에 결합된 shuffle block이 성능을 향상 시킨다는 것을 경험적으로 연구했다.
Fig 4는 Small HRNet-W164와의 비교를 보여준다. naive Lite-HRNet이 더 낮은 계산 복잡성으로 더 높은 AP 점수를 달성한다는 것을 알 수 있다. COCO val에서 naive Lite-HRNet은 Small HRNet-W16보다 AP를 7.3 포인트 향상 시키고 GFLOP와 parameter 수는 절반 미만이다. Fig 4(a)에 나타낸 것과 같이 wider naive Lite-HRNet과 유사한 parameter 수로 증가하면 improvement가 10.5점으로 확대된다. MPII val에서, naive Lite-HRNet은 Small HRNet-W16보다 5.1 포인트 성능이 우수한 반면, wider network는 Fig 4(b)에 나와 있는 것처럼 6.6 포인트 성능이 우수하다.
▪️ Conditional channel weighting vs. 1×1 convolution
본 논문은 1×1 convolution(wider naive Lite-HRNet)과 conditional channel weighting(LiteHRNet) 사이의 성능을 비교한다. 단순히 wider naive Lite-HRNet의 shuffle block에서 하나 또는 두 개의 1×1 convolution을 제거한다.
표 6은 COCO val 및 MPII val 세트에 대한 연구를 보여준다. 1 × 1 convoultion은 representation learning에서 중요한 채널 간 정보를 교환할 수 있다. COCOval에서 두 개의 1×1 convolution을 떨어뜨리면 wider navie Lite-HRNet의 AP 포인트가 4.4 포인트 감소하고, 또한 거의 40%의 FLOP가 감소한다.
conditional channel weighting은 16M FLOP만 증가하는 두 개의 1×1 convolution을 떨어뜨리는(dropping) 것보다 3.5 AP 포인트 향상된다. AP 점수는 65%의 FLOP만 사용하여 wider naive Lite-HRNet과 비교할 수 있다. Lite-HRNet의 depth를 증가 시키면 wide navie Lite-HRNet과 유사한 FLOP와 wider naive Lite-HRNet보다 약간 더 큰 #parameters로 1.5 AP 개선으로 이어진다. MPII 값에 대한 관측치는 일관성이 있다(표 6 참조). AP의 개선은 lightweight weighting operation이 naive version의 유사한 FLOP를 취하는 경우 cross-resolution channel weighting를 사용하여 e multi-resolution information를 탐색하고 deepening the network로 네트워크 용량을 향상 시킬 수 있기 때문이다.
▪️ Spatial and multi-resolution weights
표 7과 같이 spatial weights와 multi-resolution weights가 성능에 어떤 영향을 미치는지 연구했다. COCO val에서 spatial weight는 1.3 AP 증가를 달성하고 multi-resolution weight는 1.7 포인트 증가한다. 두 작업 모두 FLOPS가 저렴하다. spatial 및 cross-resolution weight를 모두 사용하면 네트워크가 3.5점 향상된다. 표 7은 MPII 값에 대한 일관된 개선 사항을 보고한다. 이러한 연구는 spatial 및 cross-resolution weight의 효율성과 효과를 검증한다. 유사한 성능을 달성하는 spatial weight와 cross-resolution weight의 배열 순서를 변경하여 실험을 수행한다. 두 개의 spatial weight 또는 두 개의 cross-resolution weight를 사용한 실험은 거의 0.3 감소로 이어진다.
논문을 읽은 후 제가 알고 있는 선에서 최대한 정리하고 요약한 글입니다. 때문에 해당 포스팅에 대한 의견 제시 및 오타 정정은 언제나 환영입니다!
늦더라도 댓글 남겨주시면 확인하겠습니다!