[카테고리:] Engineering

  • [Pytorch] torch.nn.functional.unfold / fold

    이번에는 이미지를 공간(Spatial) 도메인에서 Patch 단위로 분해하고 다시 조립하는 과정에 대해 정리해보려 한다. (관련 문서는 다음 링크 참조: https://docs.pytorch.org/docs/stable/generated/torch.nn.Unfold.html) 딥러닝, 특히 Vision Transformer(ViT)나 커스텀 Convolution 연산을 구현할 때 이미지를 작은 Patch로 잘라내야 하는 경우가 많다. 이때 사용되는 것이 torch.nn.functional.unfold와 그 역변환인 fold이다. 먼저 torch.nn.functional.unfold이다. 이 함수는 이미지에서 슬라이딩 윈도우를 적용해 \(k \times k\) 크기의 블록들을…

  • [Pytorch] torch.fft 작동 방식

    파이토치를 이용해 이미지를 frequency domain으로 변환시켜주는 함수들에 대해 정리해보려 한다. 파이토치의 torch.fft 모듈은 푸리에 변환(Fourier Transform)을 수행하는 다양한 함수를 제공한다. ( 관련 모든 함수들은 다음 링크를 참조 https://pytorch.org/docs/stable/fft.html ) 이번 글에서는 torch.fft.fftn, torch.fft.fftshift, torch.fft.rfftn, 그리고 역변환인 torch.fft.ifftn의 작동 방식을 설명하고 실행예시를 정리하려 한다. torch.fft.fftn 가장 먼저 torch.fft.fftn 이다. n 차원의 tensor에 discrete Fourier transform을 적용시켜주는…

  • [Pytorch] torch.roll 작동 방식

    파이토치로 사용할수 있는 torch.roll에 대한 설명과 실행예시이다. 아래 그림처럼 swin transformer를 사용할때 Shifted Window Partitioning을 적용하기 위해 사용하는 함수이고 이미지를 간단하게 shift할 수 있다. 아래는 실행 결과이다. 왼쪽의 이미지를 torch.roll(img_tensor, shifts=(-100, -100), dims=(1, 2)) 를 통해 변환하면 오른쪽 이미지가 된다. 밀린 픽셀 수는 각각 shifts 값으로 설정한 100이다. 변환된 결과를 보면 알겠지만 shift로 넘어가지는 부분이…

  • Git 개념 정리 (Branch, Workflow, Reset)

    Why do we need a branching? Branch가 필요한 이유들은 아래와 같다 Branch를 관리하는 방법은 정해져 있지 않고 하기 나름이다. 복잡하고 대규모 프로젝트를 진행할수록 그 중요성이 높아지고 유용해진다. Git Workflow 대략적인 Git에서의 Workflow 의 이해를 돕기 위해 아래의 그림을 먼저 보자 Git에서 Head는 현재 branch를 가리킨다. 이전 포스팅에서 설명했지만 Working Directory는 작업자가 직접 작업을 하고 있는…