본문 바로가기
AI 논문 리뷰(AI Paper Review)/컴퓨터비전(Computer Vision)

[논문정리] CSPNet 개념 정리

by stevenkim_ 2023. 9. 1.

*본 내용은 논문의 상세한 분석이 아닌, 간단한 복기용 정리입니다.

 

 

CSPNet은 DenseNet 그대로 차용해서 약간 형태를 바꾼 모델이라, DenseNet 부분과 많은 부분이 겹칩니다.

https://stevenkim1217.tistory.com/entry/DenseNet-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC

 

DenseNet 개념 정리

*본 내용은 논문의 상세한 분석이 아닌, 간단한 복기용 정리입니다. DenseNet은 ResNet의 Architecture에서 발전했습니다. ResNet 문서는 이전 게시물을 참조하세요. https://stevenkim1217.tistory.com/entry/ResNet-%EA%

stevenkim1217.tistory.com

 

 

CSPNet 앞서 설명한 기존의 SOTA ResNet DenseNet 연산량을 가볍게 줄여주는 경량화에 초점을 맞췄습니다.

DenseNet에서 연산이 너무 무거워서 연산량을 줄여주는 방법론으로 제안된 CSPNet입니다.

 

 

CSPNet의 구조는 위와 같습니다.

처음의 layer에서 feature map 갈래로 갈라줍니다.

다음에 쪼갠 하나만 convolution 연산을 진행하고, 나머지 하나는 그냥 마지막에 Cross-stage라고 불리는 곳에서 둘을 합치기만 해주는 방식으로 진행됩니다.

 


 

Cross Stage Partial DenseNet

 

기존의 DenseNet 가중치 구하는 공식의 빨간색 박스를 보시면, 가중치를 갱신하는 과정에서gradient 정보가 반복해서 사용됩니다.

그래서 논문에서 제시하는 Cross Stage Partial DenseNet 어떤 방법으로 해결했는지 보겠습니다.

 

 

 

  • base layer의 출력값인 X0' 값이 part1이 되고, X0"가 part2가 됩니다.
  • 그럼 X0"는 Denseblock을 통과하며 여러 가중치들을 지나 X_k가 되었고 마지막 Transition layer를 통해 X_t가 됩니다.
  • 그 후 stage의 마지막 단계에서, part1의 X0'와 part2에서 Denseblock을 지나온 X_t가 만나 X_u가 됩니다.
  • 따라서 dense layer를 통과하지 않는 x'0의 gradient 정보는 복사되지 않습니다.
  • 역전파 단계 역시 마찬가지로 반대로 이동하면서 가중치를 업데이트합니다.

 


 

Fusion First vs Fusion Last

처음에 나눈 값을 합치는 Fusion이라고 하는데요.  fusion 언제 하냐에 따라서 성능이 차이가 납니다.

Fusion First 파트에서 생성된 feature 먼저 합친 뒤에 transition 진행합니다. 이러면 많은 양의 gradient 재사용됩니다. 상대적으로 비효율적인 것이죠.

Fusion Last 제가 앞에서 설명한 CSPNet 모델인데요, dense block에서 나온 feature map transition layer 거친 후에 base layer에서 나온 feature map 합쳐집니다. 이러면, 앞서 보여드린 것처럼 gradient flow 분할되었기 때문에 gradient 재사용되지 않습니다.

 

여기 보시면 fusion last first보다 높은 정확도를 보이는 것을 있습니다.

 


 

CSPNet 연산량을 줄였다는 업적이 있는데요.  CSPNet 주목받은 이유는 ResNet 같은 이런 다른 유명 모델들에도 전부 적용할 있다는 점입니다. 앞의 Dense Block 자리에 다른 아키텍처 블록을 끼우면 됩니다.