전공/딥러닝

[DL] 다양한 Convolution 알아보기, Depthwise/Pointwise/Separable/Grouped/Deformable 등등

mhiiii 2025. 2. 6. 14:28
728x90

다양한 Convolution

기존 Convoultion

 

다양한 종류의 Convolution은 딥러닝 모델 경량화에 주로 쓰인다고 함

 

왜 그렇냐??

 

기존 2차원 컨볼루션의 문제점

 

  • 연산량이 크다.
    input 채널 수 X width X height X 필터 개수 X (필터 크기) $^2$
  • Dead Channels
    필터(커널)가 특정 입력 패턴에만 반응하게 되면, 일부 필터는 죽은 채널 (Dead Channels)이 되어버림
  • Low Correlation between Channels
    각 채널이 독립적으로 특징을 학습하지만, 이로 인해 채널 간 정보가 제대로 공유되지 않는 문제가 발생

따라서, 훨씬 효율적인 방법으로 딥러닝을 사용할 수 있는 다양한 Convolution이 나오게 되었음


Dilated Convolution

 

 

컨볼루션 필터(커널)에서 유의미한 파라미터 사이에 zero padding 을 추가함으로써

적은 파라미터로 receptive field를 늘리고자 한 컨볼루션 방법

 

receptive field가 커지기 때문에 전체적인 특징을 잘 잡을 수 있음

 

 

 

 

 

Depthwise Convolution

일반적인 컨볼루션 필터는 입력 영상의 모든 채널에 영향을 받게 되므로, 

완벽히 특정 채널만의 Spatial Feature 를 추출하는 것이 불가능

 

채널 하나씩에만 필터가 사용될 수 있게 하여 모든 커널이 모든 채널을 살펴볼 필요가 없어져 연산량이 매우 감소

 

 

각 채널 별로 분리하여 각자 커널과 연산을 진행하고 다시 합쳐지는 구조

 

즉, 채널 방향의 Convolution은 진행하지 않고 Spatial 방향만 진행

 

 

 

 

 

Separable Convolution

하나의 커널 작업을 여러 단계로 나누어 수행하는 방법

 

원본의 커널 하나를 두개의 작은 커널로 나누어 연산을 수행

 

하지만, 모든 커널을 두 개의 작은 커널로 분리할 수 있는 것은 아니므로 항상 적용가능한 방법은 아님

 

 

 

 

 

 

Depthwise Separable Convolution

 

채널의 출력 값이 하나로 합쳐지는 Convolution

 

Convolution 연산과 거의 유사하게 동작하지만, 파라미터 수와 연산량은 훨씬 적음

 

Depthwise Convolution의 결과물에 채널을 1개로 압축할 수 있는 추가적인 Convolution을 진행

 

 

 

 

 

Pointwise Convolution

채널 방향의 Convolution만 진행하는 것 ( Depthwise Convolution과 반대)

 

채널 Reduction 시에 주로 사용

 

커널 크기가 1x1

 

사실 앞서 Depthwise Separable Convolution에서 Depthwise Convolution 후에 진행되는 채널을 압축하는 부분이 바로 Pointwise Convolution

 

즉, 1x1xC 크기의 커널을 사용하여 입력의 특징을 1개의 채널로 압축 시켜버리는 효과를 줄 수 있음

출력 채널 수를 줄임으로써 다음 레이어의 계산량과 파라미터를 줄일 수 있는 것

 

하지만, 채널 수를 줄여 소실 문제가 발생할 수 있음

 

 

 

 

 

 

 

Grouped Convolution

입력 이미지의 채널들을 여러 개의 그룹으로 나눠 그룹마다 독립적으로 컨볼루션 연산을 수행

각 그룹에 특화된(높은 Correlation을 가지는) 채널이 학습됨

 

결과적으로 각 그룹마다 독립적인 필터의 학습을 기대할 수 있음

 

  • 병렬 처리에 유리
  • 적은 파라미터와 연산

 

 

 

 

Deformable Convolution

Deformable Convolutional Networks 라는 논문에서 나온 개념

 

주로 객체 검출, 비디오 인식 등에서 사용

 

이 논문들의 저자는 기존 CNN(Convolutional Neural Network)에서 사용하는 여러 연산(conv / pooling / roi pooling 등)이 기하학적으로 일정한 패턴을 가정하고 있기 때문에 복잡한 transformation에 유연하게 대처하기 어렵다는 한계가 있음을 지적

 

쉽게 말하자면, 기존 conv는 격자의 구조의 커널을 사용하기 때문에 복잡한 패턴이나 비정형적인 형태(구부러진 객체 등)에 적응하기 어려워 Deformable conv는 커널이 샘플링하는 위치를 동적으로 조정하여 유연한 특징 추출이 가능하도록 함

 

Deformable Convolution 은 위 그림에서 convolution 에서 사용하는 sampling grid 에 2D offset 을 더하는 것

그림 (a)에서 초록색 점이 일반적인 convolution 의 sampling grid 라면 (b) (c) (d) 처럼 다양한 패턴으로 변형시켜 사용할 수 있음. sampling grid 의 변형은 스케일, 종횡비, 회전 방식 등이 있음

 

 

 

기존 conv 레이어 외에도 offset field가 존재

 

offset $\to$ 샘플링 위치를 조정하는 추가적인 이동값

 

학습 과정에서 output feature를 만드는 kernal과 offset을 정하는 convolutional kernal을 동시에 학습 가능

convolution filter 의 sampling 위치를 보여주는 예시

 

붉은색 점들은 deformable convolution filter에서 학습한 offset을 반영한 sampling location이며, 

초록색 사각형은 filter 의 output 위치

 

예시)

(기존) 샘플링 위치:     (변형된) 샘플링 위치:
------------------            ------------------
| x₀ x₁ x₂ |                  | x₀ x₁+Δp₁ x₂ |
| x₃ x₄ x₅ | →             | x₃+Δp₃ x₄+Δp₄ x₅+Δp₅ |
| x₆ x₇ x₈ |                  | x₆ x₇+Δp₇ x₈ |
------------------            ------------------

 

 

등은 각 샘플링 포인트마다 학습된 offset 값

따라서 특정 영역에서 샘플링되는 픽셀이 격자(grid) 구조를 벗어나 자유롭게 이동

 

 

 

 

 

 

 

 

References

https://eehoeskrap.tistory.com/431

 

[Deep Learning] 딥러닝에서 사용되는 다양한 Convolution 기법들

기존 2차원 컨볼루션은 세가지 문제점이 존재한다. Expensive Cost Dead Channels Low Correlation between channels 또한, 영상 내의 객체에 대한 정확한 판단을 위해서는 Contextual Information 이 중요하다. 가령, 객

eehoeskrap.tistory.com

https://m.blog.naver.com/qhruddl51/222439899315

 

다양한 Convolution 기법

1. Dilated Convolutions (atrous convolution) Dliated Convolution은 컨볼루션 필터(커널)에서 유의...

blog.naver.com

https://ga02-ailab.tistory.com/129

 

[딥러닝 기본지식] 다양한 Convolution 기법_with pytorch (2)

이번 게시물에서는 이전 게시물에 이어 다양한 Convolution 기법들에 대해 작성합니다! 5. Depthwise Separable Convolution 앞서 설명했던 depthwise convolution은 하나의 kernel이 하나의 채널에만 연산을 하고 각

ga02-ailab.tistory.com

 

728x90