파이톨치

[BoostCamp AI Tech] FCN 과제 본문

카테고리 없음

[BoostCamp AI Tech] FCN 과제

파이톨치 2024. 11. 12. 19:25
728x90

FCN 8

FCN 8의 특징:

  • 업샘플링(Deconvolution): FCN 8은 업샘플링 기법을 사용해 다운샘플링된 이미지를 원래의 해상도로 되돌립니다. 이를 위해 deconvolution(또는 transposed convolution) 레이어를 사용하여 이미지 크기를 점진적으로 복원하며, 이 과정에서 각 픽셀의 클래스 정보를 예측합니다.
  • Skip Connection: FCN 8은 중간 레이어의 정보를 결합하는 스킵 연결(skip connection)을 사용합니다. 예를 들어, 네트워크의 더 깊은 레이어와 얕은 레이어에서 나온 특징 맵을 결합하여 세밀한 공간 정보를 보존하면서 높은 수준의 추상화된 특징을 반영합니다. 이렇게 하면 더 정확한 경계와 세밀한 예측이 가능합니다.
  • 8배 업샘플링: FCN 8이라는 이름은 출력 이미지를 원래 이미지 크기의 1/8 크기로 다운샘플링한 뒤 업샘플링하여 복원하는 방식에서 비롯되었습니다. FCN 32, FCN 16, FCN 8 등 여러 변형이 있으며, 숫자는 업샘플링 비율을 나타냅니다. FCN 8은 업샘플링 단계에서 가장 세밀한 정보를 활용하여 정확도를 높입니다.
class FCN8s(nn.Module):
    def __init__(self, num_classes=len(CLASSES)):
        super(FCN8s, self).__init__()

        # TODO: FCN8s 모델을 완성하기 위해 필요한 모듈들을 작성하세요
        self.num_classes = num_classes

    def forward(self, x):

        # TODO: `__init__`에서 작성한 모듈을 이용하여 forward 함수를 작성하세요
        pass

 

딥러닝 모델을 구축할 때, 특히 이미지 처리를 위한 합성곱 신경망(Convolutional Neural Networks, CNNs) 에서 컨볼루션풀링은 매우 중요한 연산입니다. 이 글에서는 PyTorch에서 Conv2d와 MaxPool2d 레이어를 사용하여 2D 합성곱 연산최대 풀링을 어떻게 수행하는지 설명하겠습니다. 각 레이어의 동작 원리와 함께 코드 예시도 제공하겠습니다.

 

컨볼루션 연산 (Convolution Operation)

기본 개념

Conv2d는 2D 합성곱 연산을 수행하는 레이어입니다. 주로 이미지를 처리할 때 사용되며, 입력 이미지에서 특징을 추출하는 데 중요한 역할을 합니다. Conv2d는 여러 개의 필터(또는 커널)를 사용하여 입력 이미지를 처리하며, 각 필터는 입력 이미지에서 특정한 특징을 학습합니다.

Conv2d 레이어의 주요 매개변수

self.conv1 = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, stride=1, padding=1)

풀링(Pooling) 은 주로 이미지 크기 축소특징 요약을 위한 연산입니다. MaxPool2d는 주어진 영역 내에서 최대값을 뽑아 출력하는 연산으로, 이미지의 공간적 크기를 줄이는 데 사용됩니다. 이는 모델의 계산량을 줄이고, 과적합을 방지하는 데 도움이 됩니다.

 

inplace는 연산을 수행할 때 원본 데이터를 수정할지 여부를 결정하는 키워드입니다. inplace=True로 설정하면 입력 텐서를 수정하여 메모리 사용량을 줄일 수 있습니다.

예를 들어, ReLU 활성화 함수에서 inplace=True를 사용하면 입력 텐서 자체가 수정됩니다:

728x90