본문 바로가기
Digital Hardware Design/Deep learning

CNN 연산량 줄이는 scheme

by 꿀벌이목표 2022. 11. 23.
반응형

이전 포스팅에서 CNN을 다루었는데, 직감적으로 아시겠지만 영상이 커지거나 필터의 수가 무수히 많거나 Layer가 매우 깊다면 연산량은 매우매우 많아지게 됩니다.
그래서 연산량을 조금이라도 줄이기 위해서 사용하는 scheme에 대해서 알아보겠습니다.


Ⅰ. Depthwise Separable Convolution

- 연산량을 줄이기 위한 convolution기법 중 하나로 Depthwise Convolution과 Pointwise Convolution을 혼합하여 사용합니다. (※ mobilenet 에서 처음 제안되었습니다.)
- 논문에 나온 그림을 보시겠습니다.

Depthwise Separable Convolution, https://link.springer.com/article/10.1007/s11082-020-02500-8

    + Standard convolution cal.
        > 총 대략적인 연산량 H * W * K * K * M * N

    + Depthwise convolution cal.
        > 총 대략적인 연산량 H * W * K * K * M

    + Pointwise convolution cal.
        > 총 대략적인 연산량 H * W * 1 * 1 * M * N
        > 공간적인 특성을 가지고 있지 않으며, 연산량이 가장 적게 필요로 하기 때문에 Feature Map 개수를 조절할 때 사용합니다.
        > 그리고 c231n 강의에서 언급된 내용으로는 이러한 커널도 연산량을 줄이는 의미가 있을 뿐만이 아니라, 채널 방향으로도 연산이 이루어지기 때문에 feature와 아무런 연관성 없는 연산이 아니라고 합니다.


2. Standard convolution / Depthwise convolution / Pointwise convolution 예시

- 우선 Standard convolution 을 보겠습니다. 해당 예시에 대해서 추가 설명을 하지 않겠습니다. 이해가 안되신다면 이전 포스팅을 참고 부탁드립니다.

Standard convolution  예시


- Depthwise convolution
    + 이전과 다른 게 보이시나요?
    + feature map과 filter의 채널의 수는 무조건 같아야 하지요?
        > 단순하게 feature map과 filter가 1:1 매칭 되어서 계산되게 됩니다.
        > 그 말은 즉슨, output feature map의 채널 수도 feature map/filter의 채널 수와 동일하다는 것을 의미합니다.

Depthwise convolution 예시


- Pointwise Convolution
    + 또 다른 것이 보이시나요?
    + 이건 "Standard convolution"와 연산은 같지만, filter의 크기가 1 * 1 * c입니다.
    + 그렇기 때문에 output feature map의 채널 수는 filter의 set 수와 같습니다.

Pointwise Convolution 예시

 

Ⅲ. 최종 정리

- Standard convolution와 Depthwise Separable Convolution를 나타내는 최종 그림은 아래와 같습니다.
    + 결론적으로 Depthwise Separable Convolution 은 기존 대비 연상량이 (1/N + 1/K2) 만큼 감소합니다.

Standard convolution 와 Depthwise Separable Convolution








반응형

댓글