본문 바로가기

머신러닝, 딥러닝

skimage 이미지 일괄 리사이즈 방법

from skimage.transform import resize
from skimage.io import imread_collection

images = imread_collection('/content/dir/*.jpg')

images = [resize(img, (size,size)) for img in images]

imread_collection 으로 폴더 안의 jpg 파일을 다 불러오고,

리스트 컴프리헨션으로 한 번에 적용해줄 수 있다.

 

리사이즈를 하는 이유는?

Transfer learning 시 include_top 옵션을 True로 주면 불러온 모델의 fully connected layer와 연결된다. (한 층의 모든 뉴런이 그다음 뉴런과 연결된 상태를 말한다.) 

https://keras.io/api/applications/resnet/ 을 참고하면,

이 경우에는 전이학습에 사용된 모델과 인풋 이미지 사이즈를 맞춰줘야 한다.

하지만 include_top 옵션을 False로 준다면 굳이 리사이즈를 하지 않아도 된다.

단, 이미지 사이즈가 32x32 이상일 때만이다.

input_shape: optional shape tuple, only to be specified if include_top is False (otherwise the input shape has to be (224, 224, 3) (with 'channels_last' data format) or (3, 224, 224) (with 'channels_first' data format). It should have exactly 3 inputs channels, and width and height should be no smaller than 32. E.g. (200, 200, 3) would be one valid value.