불러온 이미지에 RandomResizedCrop을 적용하기 위한 함수를 생성합니다.
def show_images(imgs, num_rows, num_cols, scale=2): aspect_ratio = imgs[0].shape[0]/imgs[0].shape[1] ------ 확장할 이미지의 크기 조정 figsize = (num_cols * scale, num_rows * scale * aspect_ratio) _, axes = plt.subplots(num_rows, num_cols, figsize=figsize) for i in range(num_rows): for j in range(num_cols): axes[i][j].imshow(imgs[i * num_cols + j].asnumpy()) axes[i][j].axes.get_xaxis().set_visible(False) ------ x축 전체를 숨김 axes[i][j].axes.get_yaxis().set_visible(False) ------ y축 전체를 숨김 plt.subplots_adjust(hspace=0.1, wspace=0) return axes def apply(img, aug, num_rows=2, num_cols=4, scale=3): Y = [aug(img) for _ in range(num_rows * num_cols)] ------다양한 샘플을 얻기 위해 여러 번 데이터 확장 적용 show_images(Y, num_rows, num_cols, scale)
RandomResizedCrop이 적용된 이미지를 출력합니다.
shape_aug = transforms.RandomResizedCrop(size=(200, 200), scale=(0.1, 1), ratio=(0.5, 2)) apply(example_image, shape_aug)
이때 RandomResizedCrop에 적용된 파라미터는 다음과 같습니다.
ⓐ size: 출력할 크기를 200×200으로 조정합니다.
ⓑ scale: 면적 비율을 0.1~1(10~100%) 범위 내에서 무작위로 자릅니다.
ⓒ ratio: 면적의 너비와 높이 비율을 0.5~2 범위 내에서 무작위로 조절합니다.
즉, ratio를 통해 너비와 비율을 조절한 후 scale을 통해 자르고, 최종적으로 출력할 size로 조정됩니다.
그림 5-32는 RandomResizedCrop이 적용된 이미지를 보여 줍니다.

▲ 그림 5-32 RandomResizedCrop이 적용된 이미지