CEGAN모델을 구현하는 과정에서 ConvTranspose에 대해 배운것이 있어서 적어두려 한다.
ConvTranspose는 입력 이미지를 확장하는데 사용하는것으로 알고 있었다.
Unet구조나 Autoencoder에서 decoder부분에서 이미지를 원래 상태로 돌리기 위해 사용되는것으로 알고 있었는데
CEGAN을 구현하는 과정에서 ConvTranspose의 다른 역할을 알게 되었다
ConvTranspose
ConvTranspose의 역할은 크게 두가지로 볼 수 있다
1. 이미지 확장
2. 출력 이미지 채널 수 조정
ConvTranspose는 이 두가지 역할을 통해 출력 이미지의 복잡도를 제어한다.
이미지를 확장시키는 경우는 kernel_size와 stride를 크게 설정하여 입력 이미지를 더 크게 만든다.
Conv와 ConvTranspose의 차이
conv는 주어진 입력 이미지에 대해 컨볼루션 필터를 적용하여 출력 이미지를 생성한다.
즉 입력 이미지와 컨볼루션 필터의 합성곱을 수행하여 출력 이미지를 생성하는 연산이다.
이때 출력 이미지의 크기는 출력이미지 <= 입력 이미지 이다.
ConvTranspose는 Conv와 반대로 작동한다. 입력 이미지를 업샘플링하고 컨볼루션 필터를 적용하여 출력 이미지를 생성한다.
이때 출력 이미지의 크기는 출력이미지 >= 입력 이미지 이다.
정리하자면 둘 모두 컨볼루션 필터를 사용하여 입력 이미지에서 특징을 추출하는데 사용된다
하지만 Conv는 입력 이미지와 컨볼루션 필터의 합성곱을 수행하며
ConvTranspose는 입력 이미지를 업샘플링하여 출력 이미지를 생성한다.
'정리' 카테고리의 다른 글
파이토치 Dataset, Dataloader (0) | 2022.11.16 |
---|---|
class 와 super정리 (0) | 2022.11.16 |
Dense Layer 정리 (0) | 2022.11.12 |