resize
data.transform.resize
RESAMPLE_TORCH
module-attribute
RESAMPLE_PIL
module-attribute
Resizer
Resizer(size: Optional[Union[ImageSizeType, int]] = None, scale: Optional[Union[int, float]] = None, area_sqrt: Optional[Union[int, float]] = None, max_size: Optional[Union[ImageSizeType, int]] = None, round: Optional[int] = None, round_type: str = 'round', resampling: str = 'bilinear', image_only: bool = False, use_cv2_for_numpy: bool = True)
Module for resizing PIL, torch, numpy images Resizer의 작동 방식은 다음과 같습니다. 1. target size 계산 2. target size 미세 조정 3. 데이터에 resize 적용
Args에 따라 1, 2번의 작동 방식이 달라집니다. 1. target size 계산 - resize 될 target size를 계산합니다. - target size는 4개의 args에 영향을 받을 수 있습니다. (size, scale, area_sqrt, max_size) 하나의 Resizer는 4개중 하나의 args만 사용할 수 있으며, 2개 이상의 args가 None이 아닐시 error를 raise 합니다. 1-1. size: image를 size로 resize 합니다. aspect ratio가 변경될 수 있습니다. 1-2. scale: image를 scale배로 늘리거나 줄입니다. aspect ratio는 유지됩니다. 1-3. area_sqrt: image의 면적이 area_sqrt^2이 되도록 이미지를 늘리거나 줄입니다. aspect ratio는 유지됩니다. 1-4. max_size: image의 size가 max_size보다 클 경우 max_size로 resize 합니다. aspect ratio를 유지하기 위해, width/height중 더 많이 줄어야 하는 비율에 맞추어 전체를 resize합니다.
- target size 미세 조정
- resize된 이미지가 특정 값의 배수가 되도록 target size를 미세 조정 합니다. model의 입력으로 넣을 때, image size가 특정 값의 배수가 되어야 하기 때문에 필요합니다.
-
- target size 계산의 size parameter와 함께 사용할 수 없습니다. (고정 size이기 때문)
- target size 미세 조정은 총 2개의 args에 영향을 받을 수 있습니다. (round, round_type) round가 None이면 미세 조정을 하지 않습니다, round_type에 따라 다른 방식의 미세 조정을 적용합니다. 2-1. round: 미세 조정시 반올림합니다. (target size보다 작거나 크거나 같습니다.) 2-2. floor: 미세 조정시 내림합니다. (target size보다 작거나 같습니다.) 2-3. ceil: 미세 조정시 올림합니다. (target size보다 크거나 같습니다.)
- 미세 조정된 target_size의 width혹은 height가 0이 될 경우, round 값으로 변경해줍니다. (ex. size=(3, 3), round=8이면 round_type에 상관없이 size=(8, 8)이 됨.)
Parameters:
-
size(Optional[Union[ImageSizeType, int]], default:None) –target image size. Defaults to None.
-
scale(Optional[Union[int, float]], default:None) –target image scale. Defaults to None.
-
area_sqrt(Optional[Union[int, float]], default:None) –target image sqrt area. Defaults to None.
-
max_size(Optional[Union[ImageSizeType, int]], default:None) –target maximum image size. Defaults to None.
-
round(Optional[int], default:None) –round image size. Defaults to None.
-
round_type(Optional[str], default:'round') –type of round image. One of ["round", "floor", "ceil"]. Defaults to "round".
-
resampling(str, default:'bilinear') –One of ["nearest", "bilinear", "bicubic"]. Defaults to "bilinear".
-
image_only(bool, default:False) –to resize image only. Defaults to False.
-
use_cv2_for_numpy(bool, default:True) –use cv2 instead of PIL for faster numpy array image resizing. Defaults to True.
Raises:
-
ResizerParameterValueError–target size parameter가 2개 이상 들어오면 error를 raise 합니다. round_type이 ["round", "floor", "ceil"]안에 없으면 error를 raise 합니다. size와 미세조정 parameter가 함께 들어오면 error를 raise 합니다.
Source code in SaigeToolkit/data/transform/resize.py
compute_input_size
staticmethod
compute_input_size(data: Dict) -> ImageSizeType
target size를 계산하기 위해 input size를 가져옵니다. Note: data에 image 혹은 mask data는 있다고 가정하며, 둘의 size는 같다고 가정합니다.
Source code in SaigeToolkit/data/transform/resize.py
compute_target_size
compute_target_size(input_size: Union[ImageSizeType, ndarray]) -> ImageSizeType
compute resize target size from input image size
Parameters:
-
input_size(Union[ImageSizeType, ndarray]) –(width, height)
Returns:
-
ImageSizeType(ImageSizeType) –(width, height)
Source code in SaigeToolkit/data/transform/resize.py
InspectionSizeResizer
InspectionSizeResizer(inspection_size_wh: Optional[ImageSizeType] = None, resizer: Optional[Resizer] = None)
Bases: Resizer
원본 이미지가 inspection_size를 넘지 않도록 resize 했을 때의 image scale만큼 resize를 해주는 resizer를 생성하는 class 입니다.
inspection_size는 원본 이미지에 대해 적용하지만, 실제 연산은 ROI가 먼저 계산되기 때문에, 원본 이미지가 inspection_size를 넘지 않도록 resize 했을 때의 image scale을 미리 계산해두고, 해당 scale만큼 resize를 하는 resizer를 생성하여 계산합니다.
Source code in SaigeToolkit/data/transform/resize.py
StackedResizerHandler
StackedResizerHandler(resizer_list: List[Optional[Resizer]])
같은 image에 대해 여러번의 resize가 연속적으로 적용될 때, 여러개의 resize를 하나로 묶어서 최종 target size로 한번에 resize를 해주는 class입니다.
Source code in SaigeToolkit/data/transform/resize.py
resize_box
resize_box(bboxes: BBoxesType, image_size: Tuple[int], tw: int, th: int) -> BBoxesType
bbox resize from (w, h) to (tw, th)
Source code in SaigeToolkit/data/transform/box_function.py
resize_polygon
resize_polygon(polygons: PolygonType, image_size: Tuple[int], tw: int, th: int) -> PolygonType
Resize polygon from (w, h) to (tw, th)
Source code in SaigeToolkit/data/transform/polygon_function.py
read_image_size
read_image_size(image: Union[Image, Tensor, ndarray]) -> ImageSizeType
image size: (W, H)
Source code in SaigeToolkit/data/transform/image_function.py
resize_image
resize_image(image: Union[Image, Tensor, ndarray], target_size: ImageSizeType, resampling: str = 'bilinear', use_cv2_for_numpy: bool = True) -> Union[Image, Tensor, ndarray]
이미지를 resize합니다.
Parameters:
-
image(Union[Image, Tensor, ndarray]) –image data
-
target_size(ImageSizeType) –[W, H]
-
resampling(str, default:'bilinear') –resampling method. Defaults to "bilinear".
-
use_cv2_for_numpy(bool, default:True) –use cv2 instead of PIL for faster numpy array image resizing. Defaults to True.
Returns:
-
Union[Image, Tensor, ndarray]–Union[Image.Image, torch.Tensor, np.ndarray]: resized image
Source code in SaigeToolkit/data/transform/image_function.py
resize_mask
resize_mask(mask: Union[Image, Tensor, ndarray], target_size: ImageSizeType) -> Union[Image, Tensor, ndarray]
mask 이미지를 resize합니다. (NEAREST resampling)
Parameters:
-
mask(Union[Image, Tensor, ndarray]) –mask image
-
target_size(ImageSizeType) –[W, H]
Returns:
-
Union[Image, Tensor, ndarray]–Union[Image.Image, torch.Tensor, np.ndarray]: resized mask image