일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- object detection
- programmers
- Python
- Computer Vision
- 파이토치
- 논문리뷰
- 인공지능
- pytorch
- transformer
- Paper Review
- 논문구현
- 논문
- Self-supervised
- cnn
- 논문 리뷰
- opencv
- 딥러닝
- 코딩테스트
- Semantic Segmentation
- Ai
- Convolution
- ViT
- 프로그래머스
- Segmentation
- 옵티마이저
- 알고리즘
- 머신러닝
- optimizer
- 파이썬
- 코드구현
Archives
- Today
- Total
Attention please
Transposed Convolution 원리 및 Pytorch 구현 본문
728x90
다양한 convolution 기법들
- original convolution
- dilated convolution
- separable & depthwise & pointwise convolution
- depthwise separable convolution
이번 글에서는 Transposed Convolution에 대해 알아보자. 이 convolution 기법은 Deconvolution 이라는 이름으로 많이 쓰이지만 이는 잘못된 표현이다. Deconvolution은 이전의 convolution 작업을 되돌려 output을 원본 input으로 되돌리는 것이다.
Transposed Convolution 역시 같은 spatial dimension을 만들어낸다는 점에서 Deconvolution과 유사하지만 Transpose Convolution은 일반적인 Convolution 값을 되돌리는 못해 원본 input과 달라지며 dimension만 되돌려 준다. 즉, Transposed Convolution과 Deconvolution은 분명한 차이가 있다.
Original Convolution의 연산 과정은 다음과 같다.
이렇게 연산된 Output 데이터와 kernel을 Transposed Convolution을 통해 Input 데이터를 추출한다.
위와 같이 Original Convolution에서의 kernel matrix를 transpose 해주어 output matrix와 dot product를 진행한다. 그렇게 나온 4x4 matrix는 Original Convolution의 Input 데이터의 크기와 동일하다.
코드 구현
Transposed Convolution은 pytorch에 이미 구현되어있다.
torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0,
output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros',
device=None, dtype=None)
각 파라미터에 대한 설명은 다음 링크에 있다.
728x90
'딥러닝 > CNN' 카테고리의 다른 글
IoU(Intersection over Union)의 개념 및 코드 구현 (0) | 2022.12.30 |
---|---|
Separable & Depthwise & Pointwise Convolution 원리 및 Pytorch 구현 (0) | 2022.12.30 |
Dilated Convolution(Atrous convolution) 원리 및 Pytorch 구현 (0) | 2022.12.30 |
[딥러닝] im2col의 원리, im2col을 이용한 합성곱 (0) | 2022.12.10 |
[딥러닝] Max Pooling의 원리, 합성곱층과 max pooling층의 차이 (0) | 2022.12.10 |
Comments