본문 바로가기

AI/CNN+LSTM

[3DCNN] CSN: Video Classification with Channel-Separated Convolutional Networks 논문 리뷰

참고 자료 :

Group Convolution : AlexNet 참조        /     Depth Convolution : MobileNet 참조

  1. Group Convolution : https://aifpga.tistory.com/entry/Grouped-Convolution-Dilated-Convolution
  2. Regulation : https://daeson.tistory.com/184
 

Grouped Convolution, Dilated Convolution

Intro CNN 을 실제 HW 로 구현하려면 엄청난 MAC 량을 마주할 수 밖에 없습니다. 이는 빠른 detection 이 가능하다고 했던 YOLO 에서도 마찬가지 입니다. 하여 현업에서 네트워크를 학습 및 구현하려고 할

aifpga.tistory.com

 

18. 모델의 과최적화를 피하는 방법 (overfitting, regularization)

지금까지 우리는 두가지 모델에 대해서 배웠습니다. Supervised Learning에 대한 Linear regression 모델과 Logistic regression 모델을 배웠습니다. 이 두가지 모델을 이용하면 상당히 많은 머신러닝에 대한 해

daeson.tistory.com


 

Abstract


Group convolution은 이미지 분류를 위한 다양한 2D convolution 구조에 계산 절감을 가져왔다고 되어있습니다.

group convolution은 간단하게 설명하면 입력의 채널들을 여러 개의 그룹으로 나누어서 convolution을 실행하는 것인데

독립적으로 나누어 계산되기 때문에 병렬 처리에 유리하고 변수가 적게 쓰여서 계산량이 적어지는 장점이 있습니다.

image from : https://blog.yani.ai/filter-group-tutorial/

그리고 논문에서는

  1. group convolution이 영상 인식 모델의 연산량을 줄일 수 있다면
  2. 3D convolution에서 핵심이 되는 factor가 무엇인가?
  3. 정확도와 연산량의 비율이 어떻게 돼야 좋은 모델인가?

라는 질문을 하였습니다.

 

그리고 저자는 3D CNN에서 채널간의 소통(interection)이 정확도에 큰 영향을 준다는 것을 알아냈습니다.

 

실험을 통해 2가지를 더 알게되었는데,

  1. 3D convolution을 채널 interaction과 시공간 interaction으로 나누는 것은 정확도를 높이고 연산량을 줄이므로 좋은 시도라고 이야기합니다.
  2. 3D channel separate convolution은 regularization(정규화)과 같은 역할을 하는데 training 정확도는 낮지만 test 정확도는 높다고 이야기합니다.

따라서 cannel이 분리되어 있는 Channel Separated Convolution Network (CSN)을 제시합니다.


 

Introduction


대부분의 영상처리 모델은 연산량이 많은 3D CNN에서 각각의 레이어에서 모든 채널을 거쳐 계산하는 문제가 있습니다.

3D CNN의 경우 O(CTHW) 만큼의 시간 복잡도를 가지는데 (C: 채널 개수 HW: 공간 축 T: 프레임 개수)

 

이러한 커널을 인수 분해하는 것은 최근 연구에서도 볼 수 있는데 P3D나 R(2+1) D, S3D에서 시간과 공간을 나눠 2차원 convolution과 1차원 convolution으로 계산을 하였습니다.

 

고정된 이미지에서는 2차원 convolution(K x K)을 1차원 pointwise(점단위) convolution과 k x k depthwise(깊이) convolution으로 나눌 수 있는데 채널 수가 K^2보다 크면 이미지당 FLOPs를 ~K^2까지 줄일 수 있습니다.

3차원에서는 더욱 크게 최대 K^3까지 줄일 수 있습니다.

 

따라서 이 논문에서는 모든 convolution을 1x1x1 pointwise conv와 kxkxk depthwise conv로 인수 분해했는데

interaction-reduced와 interaction-preserved 2가지 인수분해 방법을 제안합니다.


 

Channel-Separated Convolutional Networks


3-1 Background

  • Group convolution
    • 원래 각각의 conv 필터는 모든 이전 레이어 채널에서 input을 받는다 (그림 a / ex: MobileNet, Xception)
    • 각 필터를 그룹으로 묶어주고 그룹끼리 주고 채널을 주고받게 하면 연산량과 모델 사이즈를 줄일 수 있다 (그림 b)
    • Depthwise conv는 극한의 그룹화로 input, output 채널의 개수가 그룹의 수와 같다. (그림 c)
  • Counting FLOPs, parameters, interactions 
    • 채널을 그룹화하는 것은 그룹끼리만 정보를 주고받으므로 feature interaction이 제한된다.
    • 만약 group conv를 그저 서로 겹치지만 한다면 특징 분리는 증폭될 것이고, 연산량이 주는 만큼 특징도 줄어들 것이다.
    • Conv layer가 Cin 개의 채널과 G개의 그룹으로 되어있다면 각각의 필터는 Cin/G 개의 input channel과 연결되어있다.

3-2 Channel Seperation

앞서 언급한 것처럼 CSN은 3D conv(KxKxK)을 1x1x1 1D Conv와 KxKxK depth Conv으로 나누어 계산한다.

Channel seperation network가 Xception과 MobileNet에서 이미지 분류 때 사용되었으며

P3D, R(2+1)D, S3D에서 separated Convolution이 사용되었음을 알린다.

이번 Network에서는 채널 간의 interaction과 시공간적 Interaction을 분리하도록 디자인하였다.

 

3-3 Example: Channel-Separated Bottleneck Block

보이는 것과 같이 a는 평범한 bottleneck(병목) block을 나타내고 b와 c는 interaction-preserved와 interaction-reduced channel-separated bottleneck block을 나타낸다.

ip-CSN(interaction-preserved)은 1x1x1 conv를 통해 모든 채널 interaction을 보존하면서 연산량과 FLOP을 줄이고

ir-CSN(interaction-reduced)은 채널 interaction을 메커니즘만 남긴 채 개수를 줄인 것을 알 수 있다.

3-4 Channel Interactions in Convolutional Blocks

이 섹션에서는 점진적으로 그룹의 크기를 늘려가며 설계한 몇 가지 convolution block을 소개한다.

  • Group Convolution applied to ResNet blocks
  •  a는 두 개의 3x3x3 conv layer를 가진 simple ResNet block을 나타내고
  •  b는 group conv를 사용한 블럭을 나타낸다.
  •  c는 depth layer를 나타내는데 input과 output의 채널수를 맞춰주기 위해
     선택적으로 1x1x1 conv를 사용할 수 있다는 것을 나타내기 위해 점선 박스를 그렸다.
  • a는 ResNet bottleneck을 나타내고 두개의 1x1x1 과 3x3x3 conv layer로 이루어져있다.
  • b는 3x3x3이 group conv 된 것이고 c는 depthwise conv된 것이다.
  • d는 c에서 1x1x1에 group conv를 사용한 것이다.

여기서 기존 구조와 유사점이 좀 있는데 b는 ResNeXt block과 동일하고 c는 이를 depthwise로 응용한 것이다.

d는 채널 셔플링이나 다운 샘플링 프로젝션 없이 구현되는 ShuffleNet block과 비슷하다.

위에 simple 에서 simple D로 가는 과정은 ResNet에서 Xception으로 가는 것을 닮았다.