[Torchvision] .transforms.Resize / .CenterCrop

olxtar·2022년 5월 31일
0
post-thumbnail

Comment : 2022-05-31 Udacity Project: Landmark Classification 진행 중!

Un-uniform, 즉 각각의 사이즈가 모두 상이한 이미지 데이터셋을 사용할때
torchvision.transforms.Compose([ ... ]) 를 사용하여 일련의 Image Preprocess를 진행한다.

그런데 실제로 .Resize, .CenterCrop이 어떻게 작업 되는건지와 넣어주는 parameter의 의미를 정확히 알지 못해서 해당 글에서 학습해보려함.

[?] 결론적으로 Un-uniform한 이미지셋에 torchvision.transforms.Resize()torchvision.transforms.CenterCrop()해주면 Uniform한 이미지셋이 되는건가?
[?] 작은 사이즈의 이미지에 더 큰 Resize() parameter값을 줘도 되나?



0. Image

두 개의 이미지를
torchvision.transforms.Resize()
torchvision.transforms.CenterCrop()
하여 비교 해보려함.


첫번째 이미지 : img_1, 사이즈는 800x600 \downarrow

두번째 이미지 : img_2, 사이즈는 600x800 \downarrow






1. Resize

[+] 아래와 같이 object로 만들어놓고 사용해야함

resize = torchvision.transforms.Resize(256)

img_1_resize = resize(img_1)
img_2_resize = resize(img_2)


Resized 첫번째 이미지 : img_1_resize, 사이즈는 341x256 \downarrow


Resized 두번째 이미지 : img_2_resize, 사이즈는 256x341 \downarrow

Comment :
torchvision.transforms.Resize()는 이미지의 짧은 부분을 parameter로 주어진 값 (여기서는 256)으로 바꿔준다. 비율은 유지하면서!


if w>hw>h
(w×h)(sizewh×size)(w\times h)\rightarrow (size\cdot\frac{w}{h}\times size)

  • ww : 이미지의 width(넓이)
  • hh : 이미지의 height(높이)
  • sizesize : Resize에 주어진 parameter (1개의 값으로 주어졌을때!)
    [+] 만약 2개의 값으로 이루어진 튜플을 넣을 경우 그 값에 맞게 사이즈 변경됨





2. CenterCrop

[+] 아래와 같이 object로 만들어놓고 사용해야함

centercrop = torchvision.transforms.CenterCrop(256)

img_1_resize_crop = centercrop(img_1_resize)
img_2_resize_crop = centercrop(img_2_resize)

CenterCrop & Resized 첫번째 이미지 : img_1_resize_crop, 사이즈는 256x256 \downarrow

CenterCrop & Resized 두번째 이미지 : img_2_resize_crop, 사이즈는 256x256 \downarrow

profile
예술과 기술

0개의 댓글