다양한 Convolution
다양한 종류의 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 시에 주로 사용
사실 앞서 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을 동시에 학습 가능
붉은색 점들은 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
'전공 > 딥러닝' 카테고리의 다른 글
[DL] 오토인코더(Auto-Encoder)와 종류 (1) | 2025.02.06 |
---|---|
[DL] 기울기 소실과 폭주 (Gradient Vanishing, Exploding) (0) | 2024.12.13 |
[DL] 과적합과 규제 (Overfitting, Regularization) (0) | 2024.12.12 |
[DL] 합성곱 신경망(CNN), 합성곱과 풀링 (0) | 2024.12.12 |
[DL] LSTM(Long Short-Term Memory), GRU(Gated Recurrent Unit) 알아보기 (0) | 2024.12.12 |