논문 읽기/Object Detection

[논문 읽기] CSPNet(2020), A new backbone that can enhance learning capability of cnn

AI 꿈나무 2021. 5. 14. 15:15
반응형

 안녕하세요, 오늘 읽은 논문은 'CPSNet: A new backbone that can enhance learning capability of cnn' 입니다.

 

 이번 논문은 모델 구조를 gradient information 관점에서 설명하므로, 이해하는데에 오랜 시간이 걸렸습니다. 새로운 정보를 많이 담고 있는 만큼 다른 논문보다 좀 더 자세히 리뷰 하도록 하겠습니다.

 

 Cross Stage Partial Network(CSPNet)은 이미지를 추론하는 과정에서 backbone의 무거운 inference computation을 감소하려 합니다. 저자는 백본에서의 무거운 추론 연산량이 optimization 내에 있는 duplicate gradient information에 의해 발생한다고 결론을 짓습니다. CSPNet은 신경망의 처음과 끝의 feature map을 통합하여 variability of gradients를 해결하려 합니다.

 

 정리하자면, CSPNet은 duplicate gradient information에 의해 발생하는 heavy inference computations를 감소시키려 합니다. 이를 위해 base layer의 feature map을 두 파트로 분할하고, 이 둘을 논문에서 제안하는 cross-stage hierarchy으로 결합합니다. 이 과정을 통하여 gradient information이 큰 상관관계 차이를 갖게 되고 CSPNet을 기존의 모델에 적용하여 연산량을 감소시키고 정확도까지 상승시킵니다.

 

 

 ResNet, ResNeXt, DenseNet에 CSPNet을 적용한 경우에 연산량, 신경망의 메모리 사용을 감소시키고 추론 속도와 정확도 까지 상승시키는 실험 결과입니다. 

 

CSPNet

 CSPNet은 (1) Cross Stage Partial Network, (2) Exact Fusion Model 두 가지 방법을 제안합니다.

 

(1) Cross Stage Partial Network

DenseNet

 DenseNet을 살펴보면, dense layer의 입력값이 출력값과 concatenation 됩니다. 역전파 과정에서 dense layer의 입력값의 gradient information이 중복해서 재사용 됩니다. 즉, weight를 갱신하는 과정에서 복사된 gradient information을 반복적으로 학습하게 되는 것입니다. 

 

순전파 계산식
가중치 갱신 계산식

 가중치를 갱신하는 과정을 살펴보면 g0이 반복적으로 사용되는 것을 확인할 수 있습니다.

 

Cross Stage Partial DenseNet

 Cross Stage Partial Network를 Dense에 적용한 SCPDenseNet은 partial dense block과 partial transotion layer로 구성됩니다.

 

 SCPDenseNet은 partial dense block에서 base layer의 feature map이 두 부분(x0 = x'0, x''0)으로 분할됩니다. x''0은 다음 dense block으로 전달되고, x'0은 stage의 마지막과 연결됩니다. Dense layer의 출력값(x''0, x1, x2, ... )은 transition layer를 거쳐서 xT가 생성되고, xT는 x'0과 concatenation 되어 다음 transition layer를 통과하여 xU를 생성합니다.

 

 

 base layer의 feature map을 x'0과 x''0으로 분할하여 gradient flow를 두 path로 절단합니다. 따라서 dense layer를 통과하지 않는 x'0의 gradient 정보는 복사되지 않게 됩니다. 즉, CSPDenseNet은 DenseNet의 feature reuse 특성을 활용하면서, gradient flow를 truncate하여 과도한 양의 gradient information 복사를 방지합니다.

 

 CSPDenseNet을 구성하는 Partial Dense Block과 Partial Transition Layer을 살펴보겠습니다.

Partial Dense Block

 base layer의 feature map을 두 부분으로 분할하는 Partial Dense Block은 3가지 목적으로 설계되었습니다.

 

a) gradient path 증가시키기

 feature map을 분할하고 병합하는 과정에서 gradient path가 2배가 됩니다. 이는 concatenation을 위해 feature map을 복사하는 과정에서 발생하는 duplicate gradient information 문제를 완화시킵니다.

 

b) 각 layer의 연산량 균형

 DenseNet은 dense layer의 입력값과 출력값을 concatenation 하므로 마지막 dense layer의 채널 수는 급격하게 커질 수 있습니다. Partial Dense Block은 base layer의 feature map이 반으로 분할하므로 각 dense layer가 사용하는 채널 수를 감소시킵니다.

 

c) memory traffic 감소하기

 base layer의 feature map이 반으로 분할되므로 연산량도 반으로 감소하게 됩니다.

 

Partial Transition Layer

 분할된 feture map을 병합하는 partial transition layer의 목적은 gradient 조합의 차이를 최대화하는 것입니다. gradient flow를 절단하여 각 layer가 duplicate gradient 정보를 학습하는 것을 예방합니다. concatenation 하는 과정에서 gradient information이 복사됩니다. gradient flow를 절단함으로써 많은 양의 gradient information이 재사용 하는 것을 방지합니다. split and merge 과정을 통하여 정보 통합 과정동안 duplication의 가능성을 효과적으로 감소할 수 있습니다.

 

 

 위 그림은 다양한 feature fusion stategies를 나타냅니다. feature fusion은 연산량을 감소시키는 역할을 수행합니다. 논문에서 제안하는 (b) 방법은 연산량을 감소시킬 뿐만 아니라 정확도까지 향상시킵니다.

 

Apply CSPNet to Other Architectures

 CSPNet은 DenseNet 뿐만 아니라 ResNet, ResNeXt에도 쉽게 적용할 수 있스비다.

 

 ResNet의 base layer feature map을 두 부분으로 분할하고, 한 부분은 ResNet block으로 전달됩니다. 여러 ResNet block을 거쳐서 생성된 출력값은 분할된 다른 한 부분과 Partial Transition layer에서 병합됩니다. Base layer의 feature map이 마지막에 병합되므로 bottleneck이 필요 없습니다. bottleneck에서 shortcut connection의 덧셈 연산이 필요없게 되므로 덧셈 연산이 많은 비중을 차지하는 MAC(Memory Access Cost)이 감소됩니다. MAC은 CPU에서의 연산량을 의미합니다.

 

(2) Exact Fusion Model(EFM)

 

 Exact Fusion Model은 multi-scale detection을 위해 feature pyramid를 생성하는 과정을 의미합니다. EFM은 효과적으로 feature pyramid를 통합합니다. feature pyramid로부터 concatenation 하는 과정은 많은 양의 memory와 computation cost를 유발합니다. 이 문제를 완화하기 위해 feature map을 압축하는 Maxout technique을 사용합니다. Maxout technique에 대해 자세하게 설명하진 않네요.

 

 아래 표는 EFM의 성능입니다.

 

 또한 object detector은 feature pyramid을 통합하는 head에서 computational bottleneck이 80% 발생합니다. EFM은 이 computational bottleneck을 44% 감소시킵니다.

 

CSPNet의 효과

(1) CNN의 학습 능력을 강화시킵니다.

 lightweightening 과정을 커진 후에 기존 CNN의 정확도는 크게 감소됩니다. 예를 들어, 신경망의 파라미터 수를 감소시키면 신경망의 추론 속도는 빨라지지만 정확도는 감소합니다. 논문의 저자는 ligtweightening 과정을 적용해도 정확도가 유지되길 원합니다. 실제로 CSPNet을 기존 CNN에 적용하여 연산량을 감소시키고 정확도는 상승하게 됩니다.

 

(2) computational bottleneck을 제거합니다.

 높은 computational bottleneck은 추론 과정을 마치기 위해 더 많은 cycles를 요구하며, 연산 unit이 사용되지 않고 남아있게 됩니다. 그러므로 저자는 각 연산 유닛을 최대한 활용하고 불필요한 에너지 소모를 감소하기 위해 CNN의 각 레이어에 균등하게 연산량을 분배하려 합니다. object detector에서 객체를 예측하기 위해 FPN의 feature pyramid를 head가 통합하는 과정에서 computational bottleneck이 발생합니다. CSPNet이 제안하는 방법은 PeleeNet의 computational bottlenecks를 반으로 감소시키고 YOLOv3 기반 모델의 computational bottleneck을 80% 감소시킵니다.

 

(3) memory costs를 감소시킵니다.

 메모리 사용을 감소시키기 위해 feature pyramid를 생성시키는 과정에서 feature map을 압축시키는 cross-channel pooling을 적용합니다. 이 방법으로 CSPNet은 FPN을 생성하는 과정에서 object detector의 메모리 사용을 75% 감소시킵니다.

 

Performance

 


참고자료

[1] https://arxiv.org/abs/1911.11929

반응형