반응형
image transformation을 수행함과 동시에 바운딩 박스 좌표(labels)도 갱신시켜줘야 합니다. 이미지의 크기를 변경하면 객체의 위치도 변경되기 때문에 바운딩 박스 좌표도 그에 맞게 변경하는 함수를 정의하겠습니다.
AMD dataset은 AMD, Non-AMD 두 종류의 이미지가 있으며 크기가 다릅니다. 크기를 256x256으로 고정시키고, 그에 따라 바운딩박스의 중심 좌표(label)도 갱신시키는 함수를 정의해보겠습니다.
AMD와 Non-AMD 이미지 입니다. 둘의 크기는 다르므로 256x256 크기로 일치시켜주겠습니다.
import torchvision.transforms.functional as TF
# create a data transformation pipeline for single-object detection
# define a helper function to resize images
def resize_img_label(image, label=(0., 0.), target_size=(256,256)):
w_orig, h_orig = image.size
w_target, h_target = target_size
cx, cy = label
image_new = TF.resize(image, target_size)
label_new = cx/w_orig*w_target, cy/h_orig*h_target
return image_new, label_new
# resize an image
img, label = load_img_label(labels_df, 1)
print(img.size, label)
img_r, label_r = resize_img_label(img, label)
print(img_r.size, label_r)
plt.subplot(1, 2, 1)
show_img_label(img, label, w_h=(150, 150), thickness=20)
plt.subplot(1, 2, 2)
show_img_label(img_r, label_r)
이미지의 크기가 변경되었고, 그에 따라 바운딩 박스 위치도 변경되었습니다.
바운딩 박스의 크기는 50x50 로 설정되어 있습니다.
반응형
'Python > PyTorch 공부' 카테고리의 다른 글
[PyTorch] 커스텀 데이터셋(custom dataset) 생성하기 (0) | 2021.03.06 |
---|---|
[PyTorch] data augmentation(resize, flip, shift, brightness, contrast, gamma) 함수 정의하기 (0) | 2021.03.06 |
[PyTorch] single object image 분석 (0) | 2021.03.06 |
[PyTorch] ResNet, pre-trained 모델 불러오기 (0) | 2021.03.01 |
[PyTorch] 이미지 픽셀의 평균, 표준편차를 계산하여 정규화하기 (1) | 2021.02.28 |