딥러닝 분석가 가리

CSPNet Review 본문

딥러닝 논문 리뷰

CSPNet Review

AI가리 2023. 3. 2. 21:42

"CSPNET : A NEW BACKBONE THAT

CAN ENHANCE LEARNING CAPABILITY OF CNN"

Abstract

  Nerual network는 computer vision에서 엄청난 성과를 나타낼수 있게 한다. 하지만, 몇몇의 성과들은 높은 컴퓨팅 자원을 요구한다. 그래서, 본 논문에서는 모델들이 테스트시 많은 자원이 필요하다는 문제점을 완화하기 위해 CSPNet(Cross Stage Partial Network)을 제안한다. 자원이 많이 필요하다는 문제를 네트워크 최적화 내의 중복된 gradient 정보 탓으로 생각한다. 제안된 네트워크는 네트워크의 시작과 끝에서 feature map을 통합해 gradient의 가변성을 존중한다. 실험에서는 연상량을 20%나 줄였지만 성능은 동등하거나 SotA보다 조금 개선되었다. CSPNet은 다른 ResNet, DenseNet등에 쉽게 적용할 수 있다.

 

1. Introduction

  Neural networks는 deeper and wider 할 수록 성능이 좋아지지만, 연산량이 많아 모델이 무거워져 쉽게 사용할 수 없다는 단점이 있다. 실제 어플리케이션에서 작은 장치에 짧은 inference 시간을 요구해 Light-weight computing은 일반적으로 많은 관심을 받았다. 비록 몇몇 접근들이 mobile cpu를 위해 설계되었지만, depth-wise separable convoltion 기술은 엣지 컴퓨팅을 위한 산업용 IC 회로와 호환되지 않는다. 그래서 본 연구에서는 ResNet, DenseNet 같은 SotA 접근법들의 computational burden에 대해 연구한다. 게다가 SotA들을 CPU와 mobile GPU에서 성능을 저하시키지 않는 효율적인 계선 요소를 개발한다.

  본 연구에서는 CSPNet(Cross Stage Partial Network)에 대해 소개한다. CSPNet 설계의 주요한 목적은 연산량을 줄이는 동안 보다 많은 gradient combination을 달성하도록 하는것이다. 이 목적은 기존 layer의 feature map을 두부분으로 나누고 제안된 cross-stage 계층을 통해서 병합한다. 본 연구의 주된 개념은 gradient flow를 분할해 다른 network path로 전파 되도록 만드는것이다. 이 방법으로 전파된 gradient 정보가 연결과 전환 단계로 switching해 큰 상관관계를 갖는다. 게다가, CSPNet은 그림 1에 나타난것 처럼 연산량을 줄이고 정확도를 상승시킬 수 있다. 제안된 CSPNet기반의 object detctor는 3가지 문제점을 해결한다.

  1. Strengthening learning ability of a CNN.
    현재 존재하는 CNN의 정확도는 경량화 이후 성능이 크게 저하된다. 그래서 강력한 CNN 학습 능력을 바래, 경량화 이후에 충분한 정확도를 유지할수 있도록 한다.
  2. Removing computational bottlenecks.
    Computatioinal bottleneck 현상이 너무 높으면 inference 과정을 완료하기 위해 더 많은 반복이 발생하거나 일부 arithmetic units이 종종 idle 상태가 된다. 그러므로, 각 CNN layer에서 계산 양을 균등하게 분포하기를 바란다. 그래서 각 연산 단위의 가동률을 효율적으로 업그레이드하고 불필요한 연산을 줄인다. 제안된 CSPNet이 PeleeNet의 computational bottleneck을 절반으로 줄인다.
  3. Reducing memory costs.
    DRAM의 wafer fabrication cost는 매우 비싸고, 많은 공간을 차지한다. 제안된 CSPNet으로 PeleeNet에서 feature pyramids를 생성할 때 object detector의 메모리를 75%절감할 수 있다.

2. Method

2.1 Cross Stage Partial Network

DenseNet.

  그림 2(a)는 DenseNet의 구조를 상세하게 보여준다. 각 단계에서 DenseNet은 dense block과 transition layer를 포함하고, 각 dense block은 k 개의 dense layer로 구성된다. i 번째 dense layer의 출력은 i 번째 dense layer의 입력과 concat 되고, concat된 결과는 i+1 번째 dense layer의 입력이 된다. 이러한 방식의 식은 다음 식 1과 같다. 만약 backproapgation 알고리즘을 사용해 weights를 업데이트 하면 식은 다음 식2와 같이 업데이트 된다.

식 1

  • * 는 convolution operator, [x0, x1, ···]은 concat, w_i, x_i 는 각각 i 번째 dense layer의 weight와 출력이다.

식 2

  • f 는 weight updating 함수, g_ii 번째 dense layer의 gradient propagated 이다.
  • 많은 양의 gradient 정보를 다른 dense layers의 weights를 update 하는데 재 사용되는것을 발견할수 있다.
  • 이로 인해 서로 다른 dense layer가 반복적으로 copied gradient 정보를 학습하게 된다.

Cross Stage Partial DenseNet.

  One stage 구조로 제안된 CSPDenseNet은 그림 2(b)와 같다. CSPDenseNet의 단계는 partial dense block과 partial transition layer로 구성된다. Partial dense block은 base layer의 feature map을 channel x0를 [x'0, x''0] 두가지로 나눈다. 두 채널 x''0, x'0 사이에 x''0는 마지막 단계로 직접 연결되고, x'0는 desne block을 통과한다. Partial transition layer의 모든 단계는 다음을 따른다. Feed-forward pass와 CSPDenseNet의 weight updating 방정식은 식 3, 4와 같다.

  1. Dense layer의 출력[x''0, x1, x2, ··· ]은 transition layer를 만난다.
  2. Transition layer의 출력(x_T)은 x''0와 concat 되고 다른 transition layer를 만나 출력(x_U)을 생성한다.

식 3
식 4

  Dense layer로 부터 오는 gradient가 개별적으로 통합되는것을 확인했다. 반면에 dense layer를 통과하지 않은 feature map x'0 또한 개별적으로 통합되었다. Weight updating을 위한 gradient 정보에 관해서는, 양쪽 모두 다른쪽에 속하는 중복된 gradient 정보에 포함되지 않는다. 전체적으로 말하자면, 제안된 CSPDenseNet은 DenseNet의 feature 재사용 특성의 이점을 보존하지만, 동시에 gradient flow를 자라냄으로 과도한 양의 중복된 gradient 정보를 방지한다. 이러한 아이디어는 계층적 feature 융합 전략을 설계해 실현되고 partial transition layer에 사용된다.

 

Partial Dense Block.

  제안된 partial dense blocks은 다음을 따른다.

  1. Increase gradient path
    나누고 병함하는 전략을 통해, gradient path수는 두배가 될 수 있다. Cross-stage strategy 때문에, concat을 위한 명시적 feature map 복사본 사용으로 인해 발생하는 불이익을 완화할 수 있다.
  2. Balance computation of each layer
    보통 DenseNet의 base layer의 channel 수는 growth rate보다 더 크다. Partial dense blcok에서 dense layer operation에 포함되는 base layer channels이 원래 개수의 절반이기 때문에, computational bottleneck을 절반 가까이 줄이므로 효과적으로 해결할 수 있다.
  3. Reduce memory traffic
    DenseNet에 있는 dense block의 base feature map 크기를 추정하면 w x h x c 이다. Growth rate는 d 이고, 이것들은 전체 m 개의 dense layer에 있다. Dense block의 CIO (Convolutional Input/Ouput)는 (c x m) + ((m^2 + m) x d)/2 이며, partial dense block의 CIO는 ((c x m) + (m^2 + m) x d)/2 이다. md 는 보통 c 보다 작으며, partial dense block은 네트워크의 메모리 트래픽의 최대 절반을 저장할 수 있다.

Partial Transition Layer.

  제안된 parial transition layers의 설계는 gradient combination의 차이를 최대화 한다. Partial transition layer는 구별된 layer가 중복된 gradient 정보를 학습하는것을 예방하기 위해 gradient flow를 자르는 전략을 사용하는 계층적 feature fusion mechanism 이다. 여기서 저자는 CSPDenseNet의 gradient flow turncating이 네트워크의 학습 능력에 어떻게 영향을 미치는지에 대해 두 가지 변동을 보여준다. 그림 3의 (c)와 (d)는 다른 fusion 전략이다. 그림 3에 보여진 구조를 image classification에 사용하면 그림 4의 결과가 나올것이다.

  • CSP(fusion first)은 두 부분에서 생성된 feature map을 concat 하고, transition operation을 수행하는것을 의미한다. 만약 이 전략이 채택 된다면, 많은 양의 gradient information은 다시 재사용 될것이다.
  • CSP(fusion last)는 dense block으로 부터 나온 출력은 transition layer를 통과하고 part 1으로 부터 온 feature map과 연결한다. 만약 CSP(fusion last) 전략을 따르는 경우, gradient information은 gradient flow가 잘려진 이후로 다시 재 사용되지 않는다.

Apply CSPNet to Other Architectures.

  CSPNet은 또한 ResNet, ResNeXt에 쉽게 적용할 수 있고 구조는 그림 5와 같다. Feature channel의 절반만 Res(X)Blocks를 통과하므로 더 이상 bottleneck layer를 사용할 필요가 없다. 이것으로 FLOPs가 고정될 때 MAC(Memory Access Cost)을 이론적으로 적게 만든다.

2.2 Exact Fusion Model

Looking Exactly to predict perfectly.

  본 논문에서는 각 anchor에 대한 적절한 FoV(Field of View)를 capture하는 one-stage object detector에서 정확도를 높여주는 EFM(Extra Fusion Model)을 제안한다.

Aggregate Feature Pyramid.

  제안된 EFM은 initial feature pyramid를 더 잘 통합할 수 있다. EFM은 YOLOv3 기반이다. 각 GT bounding box는 IoU 임계값을 능가하는 하나의 anchor box에 해당된다. 만약 anchor box의 크기가 grid cell 의 FoV와 동일하다면, s 번째 scale의 gird cell의 경우, 해당 boudning box는 (s - 1) 번째보다 작고, (s + 1) 보다는 크다. 그러므로, EFM은 scale 3개로 부터 나온 feature 집합체 이다.

Balance Computation.

  Feature pyramid로 부터 concat된 feature map은 크기 때문에, 메모리와 연산량이 많이 필요하다. 이러한 문제를 완화하기 위해, feature map을 압축하는 Maxout 기술을 통합한다.

3. Experiments

  • CSPNet을 검증하기 위해 ImageNet's image classifcation dataset을 ILSVRC 2012에 사용한다.
  • EFM을 검증하기 위해 MS COCO object detection datset을 사용한다.

3.1 Implementation Details

ImageNet

  • Training steps, learning rate, schedule, optimizer, data augmentation 같은 hyperparameter는 YOLOv3와 같다.
  • ResNet, ResNeXt based model은 8,000,000 training steps, DenseNet은 1,600,000 traing steps로 설정한다.
  • Inital learning rate는 0.1, polynomial decay learning rate scheduling strategy 사용한다.
  • Momentum은 0.9, weight decay는 0.005, GPU 한 장을 사용하고 batch size는 128로 한다.
  • ILSVRC 2012의 validation set로 제안된 방법을 검증한다.

MS COCO

  • 모든 hyperparameter는 YOLOv3와 같다.
  • Training steps는 500,000번, Step decay learning rate scheduling을 채택, 400,000과 450,000 steps 때 0.1을 곱해준다.
  • Momentum은 0.9, weight decay는 0.0005, GPU는 한 장 사용, batch size 는 64로 한다.
  • COCO test-dev set으로 제안된 방법을 검증한다.

3.2 Ablation Experiments

Ablation sutdy of CSPNet on ImageNet.

  PeleeNet을 baseline으로 사용하고, CSPNet의 성능을 검증하는데 ImageNet을 사용한다. Ablation study를 위해 다른 partial ratios γ 와 다른 feature fusion 전략을 사용한다. 표 1은 CSPNet의 ablation study 결과이다. SPeleeNet과 PeleeNeXt는 각각 PeleeNet을 sparse connection과 group convolution한 것이다. CSP(fusion first, last)는 partial transition의 이점을 검증하기 위해 제시된 두가지 전략이다.

  • 실험 결과에서 Cross-stage partial dense block에 fusion fisrt CSP를 사용한다면, 성능은 SPeleeNet과 PeleeNext 보다 조금 개선될 수도 있지만, 불 필요한 학습 정보를 줄이기 위해 설계된 partial transititon layer는 좋은 성능을 달성 할 수 있다.
  • 예를 들어, 연산량이 21% 감소할때, 정확도는 오직 0.1%만 감소한다.
  • 한 가지 유의할 점은 partial ratios가 0.25일때 연산량은 11% 감소하지만 정확도는 0.1% 오르는 것이다.
  • Baseline PeleeNet과 비교하면, 제안된 CSPPeleeNet은 연산량을 13% 감소되었지만, 정확도는 0.2% 올라 개선되었다.
  • 만약 partial ratios를 0.25로 조정한다면, 정확도가 0.8% 오르지만 연산량은 3%만 감소될것이다.

Ablation study of EFM on MS COCO.

  MS COCO 데이터를 사용해 EFM에 대한 ablation study를 수행한다. 이 실험에서는 그림 6의 3가지 다른 feature fusion을 비교한다. 성능을 비교하기 위해 SotA lightweight 모델인 RPN과 ThunderNet을 사용한다. RPN은 비교하기 위해 feature pyramid architecture을 사용하고, CEM(Context Enhancement Module)과 SAM(Spatial Attention Module)을 사용한 ThunderNet은 비교하기 위해 global fusion architecture을 사용한다. GFM(Global Fusion Model)은 제안된 EFM과 비교하기 위해 설계된다. 게다가 GIoU, SPP, SAM은 ablation study를 위해 EFM에 적용된다. 실험결과는 표2 이며, backbone으로 CSPPeleeNet을 사용한다.

  • EFM이 GFM보다 fps가 2 더 느리지만, AP와 AP(50)이 각각 2.1%, 2.4% 더 높다.
  • 비록 GIoU가 AP를 0.7%더 개선시키더라도 AP(50)은 2.7%더 낮아진다.
  • 하지만, edge computing에서 중요한 점은 물체의 좌표보다는 수와 위치이므로, 이후, GIoU를 훈련에 사용하지 않는다.
  • SAM이 사용하는 attention mechanism은 SPP의 FoV mechanism 증가에 비해 더 나은 frame rate와 AP를 얻을 수 있어, final architecture에 EFM(SAM)을 사용한다.
  • 또한, swish activation을 사용하는 CSPPeleeNet은 AP을 1%향상 시킬수 있지만, 작동을 가속화 하기 위해 하드웨어 설계에 대한 lookup table을 필요로 하므로 결국에는 swish activation function도 포기했다. (swish activation을 사용하지 않는다.)

3.3 ImageNet Image Classification

  제안하는 CSPNet을 ResNet-10, ResNeXt-50, PeleeNet, DenseNet-201-Elastic에 적용하고 SotA 방법들과 비교한다. 실험 결과는 표 3과 같다. 실험결과에서는 ResNet, ResNeXt 혹은 DenseNet 기반의 모델에 CSPNet이 결합되었을때 연산 부하가 최소 10% 감소하고 정확도가 변하지 않거나 상승된다는것을 증명한다. CSPNet의 개념이 lightweight model을 개선시키는데 특히 유용하다. 

  • ResNet-10과 비교했을때 CSPResNet-10은 정확도를 1.8% 향상시켰다.
  • PeleeNet과 DenseNet-201-Elastic에 각각 CSPNet을 적용시켯을때 연산량 13%, 19% 감소, 정확도는 향상 되었다.
  • ResNeXt-50의 경우 연산량은 22%감소, 정확도는 top-1 accuracy 77.9%를 보였다.
  • SotA lightweight model인 EfficientNet-B0와 비교했을때, b-size 2048일때는 76.8%의 정확도를 보이지만 실험환경이 동일한 경우 70%의 정확도를 보였다.
  • 사실 swish activation function과 SE block을 사용하는 EfficientNet-B0는 mobile GPU에서 효율적이지않고, EfficientNet-EdgeTPU를 개발하는 동안에도 비슷한 분석이 나타났다.
  • CSPNet의 학습능력을 검증하기 위해 swish와 SE를 CSPPeleeNet에 도입하고, EfficientNet-B0와 비교한다.
  • SECSPPeleeNet-swish의 연산량이 3%더 낮고 top-1 accuracy는 1.1%더 높다.

3.4 MS COCO Object Detection

  Obejct detection에서는 3가지 시나리오를 목표로 하고 이에 대한 모델과 SotA 방법들을 비교한 결과는 표 4와 같다.

  1. Real-time on GPU : PANet(SPP)를 사용한 CSPResNeXt50을 사용한다.
  2. Real-time on Mobile GPU : CSPPeleeNet, CSPPeleeNet Reference, 제안된 EFM(SAM)을 사용한 CSPDenseNet Reference를 사용한다.
  3. Real-time on CPU : CSPPeleNet Reference와 PRN을 사용한 DenseNet Reference를 사용한다.

  • 30 ~ 100 fps의 경우, CSPResNeXt50을 backbone으로 한 PANet(SPP)의 성능이 가장 높았다.
  • 100 ~ 200 fps의 경우, CSPPeleeNet을 backbone으로 한 EFM(SAM)의 성능이 가장 높았다.

3.4 Analysis

Computational Bottleneck. 그림 7은 PeleeNet-YOLO, PeleeNet-PRN 그리고 제안된 CSPPeleeNet-EFM의 각 layer에 대한 BLOPS를 보여준다. 그림 7에서 PeleeNet-YOLO의 computational bottleneck는 헤드가 feature pyramid를 통합할때 발생한다. PeleeNet-RPN은 PeleeNet backbone의 transition layers에서 발생한다. 제안된 CSPPeleeNet-EFM은 모든 computational bottleneck 현상의 균형을 맞출수 있고, 위에 언급된것 보다 각 80%, 44% 줄였다.

Memory Traffic. 그림 8은 ResNeXt50과 제안된 CSPResNeXt50의 각 layer 크기를 보여준다. 제안된 CSPResNeXt (32.6M)의 CIO는 ResNeXt50 (34.4M)보다 낮다. 게다가, CSPResNeXt50은 ResXBlock에서 bottleneck layers를 제거하고, 입력과 출력 channel을 동일하게 유지한다. 이것은 FLOPs가 고정될 때 MAC가 가장 낮아지고 연산이 가장 효율적이게 될것이다. Low CIO와 FLOPs는 제안하는 모델이 computations 측면에서 ResNeXt50 보다 22% 더 우수한 성능을 보여줄 수 있다.

Inference Rate. 제안하는 방법을 mobile GPU(NVIDIA Jetson TX2)와 CPU(Intel Core i9-9900K)에서 실험한다. CPU에서 inference rate는 OpenCV DNN 모듈로 검증된다. 공평한 비교를 위한 model compression 혹은 quantization을 추가하지 않는다. 이에 대한 결과는 표 5와 같다.

  • AP(50)은 CSPPeleeNet Reference, EFM(SAM)이 44.6%으로 가장 높다.
  • GPU, CPU mGPU의 경우 CSPDenseNetb Reference PRN이 400, 102, 73으로 가장 빠르다.

4. Conclusion

  • SotA 모델들을 더 가볍게 만들어 mGPU나 CPU에 사용할 수 있도록 하는 CSPNet을 제안한다.
  • 주요 contribution은 비효율적인 optimization과 costly inference computations을 일으키는 중복된 gradient information 문제를 인식했다.
  • 서로 다른 layers에서 학습된 feature의 다양성을 강화시키기 위해 cross-stage feature fusion 전략과 turncating gradient flow를 활용할 것은 제안했다.
  • 게다가 memory bandwidth을 크게 줄인 feature pyramid로 부터 생성된 feature maps을 압축하기 위한 Maxout 연산을 통합한 EFM을 제안했고, 이로 인해 inference가 edge computing 장치에서 효율적이게 되었다.
  • 실험에서 제안된 EFM의 CSPNet이 높은 정확도를 보이고 mGPU와 CPU에서도 빠르게 동작한다.

 

Paper

https://arxiv.org/abs/1911.11929

Comments