transform
Module diagram
classDiagram
class transform {
}
class aes_crypto {
}
class augmentation {
}
class api {
}
class augment_function {
}
class augment_transform {
}
class base_transform {
}
class builder {
}
class compose {
}
class base_compose {
}
class builder {
}
class compose {
}
class box_function {
}
class function_util {
}
class image_function {
}
class image_load {
}
class parameter_validation {
}
class polygon_function {
}
class resize {
}
class roi {
}
class api {
}
class roi_calculator {
}
class roi_handler {
}
class transform {
}
class typevar {
}
augmentation --> builder
api --> augment_function
augment_transform --> augment_function
augment_transform --> base_transform
builder --> augment_transform
builder --> builder
builder --> compose
compose --> base_compose
box_function --> polygon_function
box_function --> typevar
function_util --> typevar
image_function --> typevar
image_load --> aes_crypto
image_load --> image_function
parameter_validation --> typevar
polygon_function --> augment_function
polygon_function --> typevar
resize --> box_function
resize --> image_function
resize --> parameter_validation
resize --> polygon_function
resize --> typevar
roi --> api
roi --> roi_handler
api --> roi_handler
roi_handler --> roi_calculator
transform --> augmentation
transform --> image_function
transform --> image_load
transform --> parameter_validation
transform --> polygon_function
transform --> resize
transform --> roi_handler
transform --> typevar
data.transform
End-to-end 데이터 변환을 지원하는 Transform 클래스를 제공하는 모듈입니다.
Transfrom 클래스는 다음과 같은 순서로 transform을 적용합니다. 1. load PIL Image 2. 원본 이미지가 inspection_size_wh를 넘지 않도록 resize 했을 때의 image scale 계산 3. ROI 적용 (crop) @. roi_mask_first=True인 경우 ROI 적용 (blind mask) 4. 2번과 resize_factor를 하나로 묶어서 resize @. roi_mask_first=False인 경우 ROI 적용 (blind mask) 5. data augmentation
Note
roi_mask_first 옵션에 따라서 ROI의 blind mask를 적용하는 시점이 달라집니다. - roi_mask_first=True: ROI crop -> ROI mask -> resize - roi_mask_first=False: ROI crop -> resize -> ROI mask 일반적으로 resize 후에 mask를 적용하는 것이 더 효율적입니다.
aes_crypto
encrypt
encrypt(data: Any, password: str = SAIGE_GENERATED_IMAGE_PASSWORD, buffer_size: int = BUFFER_SIZE) -> bytes
Encrypt image data with AES.
Parameters:
-
data(Any) –encrypt aes data with aes cipher.
-
password(str, default:SAIGE_GENERATED_IMAGE_PASSWORD) –password for encrypting. Defaults to SAIGE_GENERATED_IMAGE_PASSWORD.
-
buffer_size(int, default:BUFFER_SIZE) –buffer size for padding. Defaults to BUFFER_SIZE.
Returns:
-
bytes(bytes) –encrypted data with aes cipher.
Source code in SaigeToolkit/data/transform/aes_crypto.py
decrypt
decrypt(encrypted_data: bytes, password: str = SAIGE_GENERATED_IMAGE_PASSWORD, buffer_size: int = BUFFER_SIZE) -> Any
Decrypt image data with AES.
Parameters:
-
encrypted_data(bytes) –encrypted data with aes cipher.
-
password(str, default:SAIGE_GENERATED_IMAGE_PASSWORD) –password for decrypting. Defaults to SAIGE_GENERATED_IMAGE_PASSWORD.
-
buffer_size(int, default:BUFFER_SIZE) –buffer size for padding. Defaults to BUFFER_SIZE.
Returns:
-
Any(Any) –decrypted data with aes cipher.
Source code in SaigeToolkit/data/transform/aes_crypto.py
decrypt_load_image
Decrypt and load image file with AES.
Parameters:
-
path(str) –encrypted image file path.
-
password(str, default:SAIGE_GENERATED_IMAGE_PASSWORD) –password for decrypting. Defaults to SAIGE_GENERATED_IMAGE_PASSWORD.
Returns:
-
Image(Image) –decrypted image.
Source code in SaigeToolkit/data/transform/aes_crypto.py
augmentation
Data augmentation을 위한 기본 BaseTransform 클래스 및 Transform 구현, 그리고 여러 Data Transform들을 하나로 묶어서 관리해주는 기본 BaseCompose 클래스 및 Compose 구현을 제공합니다.
api
Image Augmentation Preview를 위한 API를 제공합니다.
ImageProcessor 클래스를 통해 각 augmentation들이 특정 파라미터 값에 대해 이미지를 어떻게 변형 시키는지 확인할 수 있습니다.
_APIDecorator
ImageProcessor에서 정의된 함수들을 decorate 해주는 헬퍼입니다.
staticmethod 와 decorator를 함께 사용할 경우 Cythonize시 제대로 동작하지 않는 이슈를 해결하기 위한 패치입니다. 참고: https://github.com/cython/cython/issues/1434
ImageProcessor의 각 함수에 다음과 같은 decorator를 씌우는 것과 동일한 역할을 합니다.
@staticmethod
@error_handler
@support_multi_image
@support_3dim_gray_image
def image_processor_function(image: np.ndarray, ...):
...
__init_subclass__
Source code in SaigeToolkit/data/transform/augmentation/api.py
support_3dim_gray_image
staticmethod
Source code in SaigeToolkit/data/transform/augmentation/api.py
support_multi_image
staticmethod
Source code in SaigeToolkit/data/transform/augmentation/api.py
ImageProcessor
Bases: _APIDecorator
Image Augmentation Preview를 위한 API 입니다. 각 augmentation들이 특정 파라미터 값에 대해 이미지를 어떻게 변형 시키는지 확인할 수 있습니다.
Note1
일반적으로 학습 시에는 파라미터를 특정 값이 아닌 범위로 설정하여 해당 범위에서 매번 랜덤한 값을 선택해 이미지에 적용합니다.
따라서 preview API의 입력 파라미터와 학습 시 넘겨주는 파라미터는 대부분 값 vs 범위의 차이를 가지게 됩니다.
예를 들어 preview API에서 rotate의 경우 angle (float) 값을 받지만, 학습 config에서는 angle_limit (List[float]) 범위를 받게됩니다.
각 augmentation을 학습에 사용시 필요한 config는 각 함수 설명의 Trainer Config 섹션을 참고하세요.
Note2
API 기획상, augmentation의 실제 자유도보다, 유저가 설정할 수 있는 파라미터가 적은 경우가 있습니다. (각 변 혹은 꼭짓점 마다 독립적으로 적용되는 ratio_jitter나 perspective_transform의 경우) 이러한 augmentation들은 api 호출 시, '값'을 입력 받아서, 이 '값'으로 부터 정의된 '범위'에서 필요한 값들을 랜덤하게 샘플링하게 됩니다. 이러한 augmentation들의 preview 함수를 정의할 때는, 인풋에 fixed_aug_params를 받을 수 있도록 해주어야합니다. (ImageProcessor.ratio_jitter 참고)
Usage
rotate augmentation preview 예제입니다. 상세 설명은 각 함수 설명 참고.
vertical_flip
image를 상하로 뒤집습니다.
Parameters:
-
image(ndarray) –
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
horizontal_flip
image를 좌우로 뒤집습니다.
Parameters:
-
image(ndarray) –
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
rotate
image를 angle만큼 회전시킵니다.
Parameters:
-
image(ndarray) – -
angle(float, default:0.0) –회전하는 각도 입니다. 유효 범위는 다음과 같습니다. [-360.0, 360.0]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
random_rotate90
image를 [0, 90, 180, 270] 중 랜덤한 각도만큼 회전시킵니다.
NOTE
- 모든 이미지 픽셀은 유지되며, 회전 후 이미지 크기가 변경될 수 있습니다.
- 예시: factor가 1일 경우 90도 회전하며, 이미지 사이즈는 (W, H) -> (H, W)로 변경됩니다.
Parameters:
-
image(ndarray) – -
factor(int, default:0) –회전하는 각도 입니다. factor에 90을 곱한 값만큼 회전합니다. (ex. factor가 1일 경우 90도) 유효범위는 다음과 같습니다 [0, 3]. Defaults to 0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
color_jitter
color_jitter(image: ndarray, brightness: float = 1.0, contrast: float = 1.0, saturation: float = 1.0, hue: float = 0.0) -> Tuple[ndarray, None]
image의 밝기 (brightness), 대비 (contrast), 채도 (saturation), 색상 (hue)을 변경합니다.
Parameters:
-
image(ndarray) – -
brightness(float, default:1.0) –밝기를 담당하는 요소입니다. 유효 범위는 다음과 같습니다. [0.01, 10.00]. Defaults to 1.0.
-
contrast(float, default:1.0) –대비를 담당하는 요소입니다. 유효 범위는 다음과 같습니다. [0.01, 10.00]. Defaults to 1.0.
-
saturation(float, default:1.0) –채도를 담당하는 요소입니다. 유효 범위는 다음과 같습니다. [0.01, 10.00]. Defaults to 1.0.
-
hue(float, default:0.0) –색상을 담당하는 요소입니다. 유효 범위는 다음과 같습니다. [-0.50, 0.50]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Example
Trainer Config
Source code in SaigeToolkit/data/transform/augmentation/api.py
blur
image에 averaging blur를 적용합니다.
Parameters:
-
image(ndarray) – -
ksize(int, default:1) –blur kernel의 크기 입니다. 유효 범위는 다음과 같습니다. [1, 100]. Defaults to 1.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
gaussian_blur
image에 gaussian blur를 적용합니다.
Parameters:
-
image(ndarray) – -
ksize(int, default:1) –blur kernel의 크기 입니다. 유효 범위는 다음과 같습니다. [1, 100]. Defaults to 1.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
adjust_brightness
image의 밝기 (brightness)를 변경합니다.
Parameters:
-
image(ndarray) – -
brightness(float, default:0.0) –밝기를 변화 강도입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Example
Trainer Config
Source code in SaigeToolkit/data/transform/augmentation/api.py
adjust_contrast
image의 대비 (contrast)를 변경합니다.
Parameters:
-
image(ndarray) – -
contrast(float, default:0.0) –대비 변화 강도입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Trainer Config
Source code in SaigeToolkit/data/transform/augmentation/api.py
adjust_hue
image의 색조 (hue)를 변경합니다.
Parameters:
-
image(ndarray) – -
hue(float, default:0.0) –색조 변화 강도입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
adjust_saturation
image의 채도 (saturation)를 변경합니다.
Parameters:
-
image(ndarray) – -
saturation(float, default:0.0) –채도 변화 강도입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Example
Trainer Config
Source code in SaigeToolkit/data/transform/augmentation/api.py
adjust_gamma
image의 gamma를 조절하여 밝기를 변화시킵니다.
Parameters:
-
image(ndarray) – -
gamma(float, default:0.0) –조절할 gamma value 입니다. 유효 범위는 다음과 같습니다. [-1.0, 1.0]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
adjust_brightness_contrast
adjust_brightness_contrast(image: ndarray, brightness: float = 0.0, contrast: float = 0.0) -> Tuple[ndarray, None]
image의 밝기 (brightness), 대비 (contrast)를 변경합니다.
Parameters:
-
image(ndarray) – -
brightness(float, default:0.0) –밝기를 담당하는 요소입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0.
-
contrast(float, default:0.0) –대비를 담당하는 요소입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Example
Trainer Config
Source code in SaigeToolkit/data/transform/augmentation/api.py
iso_noise
Apply camera sensor noise.
Parameters:
-
image(ndarray) – -
color_shift(float, default:0.0) –variance range for color hue change. Measured as a fraction of 360 degree Hue angle in HLS colorspace. 유효 범위는 다음과 같습니다. [0.00, 1.00]. Defaults to 0.0.
-
intensity(float, default:0.0) –Multiplicative factor that control strength of color and luminace noise. 유효 범위는 다음과 같습니다. [0.00, 2.00]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Example
Trainer Config
Source code in SaigeToolkit/data/transform/augmentation/api.py
ratio_jitter
ratio_jitter(image: ndarray, proportion: Optional[int] = 0, fixed_aug_params: Optional[Dict] = None) -> Tuple[ndarray, Dict]
image에 random하게 padding과 crop을 한 뒤, 원래 size로 resize 하는 과정을 통해 image의 가로 세로 비율을 변경합니다. NOTE: 프리뷰에서는 네변에 각각 [0, proportion] 범위에서 crop 혹은 padding한 예시를 보여줍니다.
Parameters:
-
image(ndarray) – -
proportion(int, default:0) –padding 혹은 crop을 할 비율(단위: 백분율)입니다. 유효 범위는 다음과 같습니다. [0, 50]. Defaults to 0. (
fixed_aug_params=None일 때만 작동합니다.) -
fixed_aug_params(Dict, default:None) –각 변에 대해서 고정된 crop 혹은 padding을 직접 정해주고자 할 때 사용합니다.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
Dict(Dict) –
각 변에 대해 crop 혹은 padding할 비율을 직접 설정
각 변에 [-proportion, proportion] 범위에서 랜덤하게 crop 혹은 padding 적용
Source code in SaigeToolkit/data/transform/augmentation/api.py
649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 | |
zoom
image에 zoom in/out 효과를 줍니다.
Parameters:
-
image(ndarray) – -
ratio(float, default:1.0) –zoom in/out 할 비율입니다. 1보다 크면 zoom in을 1보다 작으면 zoom out을 합니다. 유효 범위는 다음과 같습니다. [0.01, 100.00]. Defaults to 1.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
random_resized_crop_and_pad
random_resized_crop_and_pad(image: ndarray, scale: float = 1.0, aspect_ratio: float = 1.0, height: Optional[int] = None, width: Optional[int] = None) -> Tuple[ndarray, None]
원본 image의 scale 비율의 면적을 가지면서 가로 세로 비가 aspect_ratio인 image를 random하게 crop 한 뒤, (crop image가 원본 image 보다 커지는 경우 padding을 통해 해결합니다.) 크기가 (height, width)가 되도록 resize를 합니다.
Parameters:
-
image(ndarray) – -
scale(float, default:1.0) –crop할 image의 면적을 나타내는 값입니다. 실제 면적은 [원본 이미지의 면적 * scale] 입니다. 유효 범위는 다음과 같습니다. [0.01, 1.00]. Defaults to 1.0.
-
aspect_ratio(float, default:1.0) –crop할 image의 가로 세로 비를 나타내는 값입니다. 유효 범위는 다음과 같습니다. [0.10, 10.00]. Defaults to 1.0.
-
height(int, default:None) –crop image를 resize할 height 입니다. None인 경우 입력 이미지의 원본 height를 사용합니다.
-
width(int, default:None) –crop image를 resize할 width 입니다. None인 경우 입력 이미지의 원본 width를 사용합니다.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Example
Trainer Config
{
"_target_": "random_resized_crop_and_pad",
"scale_limit": List[float], # scale 최소 최대 범위
"aspect_ratio_limit": List[float], # aspect_ratio 최소 최대 범위
"height": Optional[int], # crop 후 resize할 이미지 height (None인 경우 원본 height 사용)
"width": Optional[int], # crop 후 resize할 이미지 width (None인 경우 원본 width 사용)
}
Source code in SaigeToolkit/data/transform/augmentation/api.py
light_reflect
image에 원형 빛을 비춘 것 같은 효과를 줍니다.
Parameters:
-
image(ndarray) – -
radius(float, default:0.0) –원형 빛의 반지름 크기 입니다. 유효 범위는 다음과 같습니다. [0.00, 1.00]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
perspective_transform
perspective_transform(image: ndarray, intensity: Optional[int] = 0, fixed_aug_params: Optional[Dict] = None) -> Tuple[ndarray, Dict]
이미지를 투영 변환(Perspective Transform)합니다. image를 다른 각도(시점)에서 바라본 형태로 변환합니다. Perspective Transform 을 위한 네개의 도착점의 좌표 (offset)은 다음과 같이 샘플링됩니다. offset_top_left: 원본 이미지의 좌측 상단 모서리를 얼마만큼 중심부로 이동시킬 지에 대한 실수 값이 들어있습니다. 즉, Perspective Transform 의 좌측 상단점의 도착점은 아래와 같이 계산할 수 있습니다.
```
x` = 0 + width * offset_top_left[0]
y` = 0 + height * offset_top_left[1]
point_dst = (x`, y`)
```
offset_bottom_right
offset_top_left 와 동일하되 우측 하단 점을 나타냅니다.
Perspective Transform 의 우측 하단점의 도착점은 아래와 같이 계산할 수 있습니다.
offset_top_right: offset_top_left 와 동일하되 우측 상단 점을 나타냅니다.
offset_bottom_left: offset_top_left 와 동일하되 좌측 하단 점을 나타냅니다.
Parameters:
-
image(ndarray) – -
intensity(int, default:0) –perspective transform 을 적용 강도(단위: 백분율)입니다. intensity 범위 내에서 랜덤한 값으로 샘플된 네개의 offset 을 이용해 perspective transform 을 수행합니다. 유효 범위는 [0, 49] 로, 각 도착지 점들은 이미지의 중간 선을 지나칠 수 없습니다. 이를 통해 이미지가 반전되는 정도의 왜곡을 방지합니다. Defaults to 0. (
fixed_aug_params=None일 때만 작동합니다.) -
fixed_aug_params(Dict, default:None) –각 꼭짓점에 대해서 offset 비율을 직접 정해주고자 할 때 사용합니다.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
Dict(Dict) –
각 꼭짓점의 offset 비율을 직접 설정
각 꼭짓점에 [0, intensity] 범위에서 랜덤하게 offset 비율을 적용
Trainer Config
Source code in SaigeToolkit/data/transform/augmentation/api.py
875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 | |
random_erasing
image에 random erasing을 적용합니다. 이미지의 일부분을 랜덤하게 지웁니다. 지워질 영역은 '검은색', '회색' 또는 '랜덤'으로 채워집니다. '랜덤'의 경우, 지워질 영역내 각 픽셀의 값이 무작위하게 선택됩니다.
NOTE: 원본 이미지의 종횡비와 설정한 scale 값에 따라 지워지는 영역 일부분이 이미지를 벗어날 수도 있습니다. 이 경우는, 벗어나지 않는 영역 내에서만 이미지의 일부분이 지워집니다.
Parameters:
-
image(ndarray) – -
scale(float, default:0.02) –입력 이미지에서 지워질 영역의 면적 비율입니다. 실제로 지워질 면적은 [원본 이미지의 면적 * scale] 입니다. 해당 값이 0이면 지워지는 영역이 없이 원본 이미지가 그대로 반환됩니다. 유효 범위는 다음과 같습니다. [0.0, 0.5]. Defaults to 0.02.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
gauss_noise
image에 가우시안 노이즈를 추가합니다.
Parameters:
-
image(ndarray) – -
intensity(float, default:0.0) –노이즈 강도입니다. 유효 범위는 다음과 같습니다. [0.0, 1.0]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Trainer Config
Source code in SaigeToolkit/data/transform/augmentation/api.py
advanced_blur
image에 advanced blur를 적용합니다.
Parameters:
-
image(ndarray) – -
ksize(int, default:1) –blur kernel의 크기 입니다. 유효 범위는 다음과 같습니다. [1, 100]. Defaults to 1.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
elastic_transform
image에 elastic transform을 적용합니다. 곡선 형태의 변형을 적용합니다.
Parameters:
-
image(ndarray) – -
intensity(float, default:0.0) –변형 강도입니다. 유효 범위는 다음과 같습니다. [0.0, 1.0]. Defaults to 0.0.
Returns:
-
ndarray–np.ndarray: augmentation이 적용된 image 입니다.
-
NoneType(None) –None
Source code in SaigeToolkit/data/transform/augmentation/api.py
augment_function
INTERPOLATE_METHOD_CV2
module-attribute
vertical_flip
horizontal_flip
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
rotate
rotate(image: Union[ImageType, MaskType], angle: float = 0, interpolation: int = cv2.INTER_LINEAR, border_mode: int = cv2.BORDER_REFLECT_101, value: Union[int, float, List[int], List[float]] = 0, crop_border: bool = False) -> Union[ImageType, MaskType]
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
random_rotate90
color_jitter
color_jitter(image: ImageType, brightness: float = 1.0, contrast: float = 1.0, saturation: float = 1.0, hue: float = 0, order: List[int] = [0, 1, 2, 3]) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
blur
gaussian_blur
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
adjust_gamma
adjust_brightness_contrast
adjust_brightness_contrast(image: ImageType, brightness: float = 0.0, contrast: float = 0.0, brightness_by_max: bool = True) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
adjust_brightness
adjust_brightness(image: ImageType, brightness: float = 0.0, brightness_by_max: bool = True) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
adjust_contrast
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
adjust_hue
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
adjust_saturation
adjust_saturation
Parameters:
-
image(ImageType) –입력 이미지
-
saturation(float, default:0.0) –변형 강도, [-1.0, 1.0] 범위, Defaults to 0.0.
Returns:
-
ImageType(ImageType) –결과 이미지
Note
Ablumentation의 AF.shift_hsv()와 다른 알고리즘을 사용합니다. AF.shift_hsv()의 경우 색이 없는 픽셀을 붉은 색으로 변형합니다. 이 함수의 경우 색이 없는 픽셀은 변형하지 않습니다.
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
iso_noise
iso_noise(image: ImageType, color_shift: float = 0.05, intensity: float = 0.5, random_state: Optional[int] = None) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
image_compression
sharpen
multiplicative_noise
ratio_jitter
ratio_jitter(image: ImageType, proportion_left: float = 0.0, proportion_right: float = 0.0, proportion_top: float = 0.0, proportion_bottom: float = 0.0, resampling: str = 'bilinear', border_mode: int = cv2.BORDER_CONSTANT, value: Union[int, float, List[int], List[float]] = 0) -> Union[ImageType, MaskType]
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
_zoom_in
_zoom_in(image: ImageType, ratio: float = 1.0, h_start: float = 0.0, w_start: float = 0.0, resampling: str = 'bilinear') -> Union[ImageType, MaskType]
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
_zoom_out
_zoom_out(image: ImageType, ratio: float = 1.0, h_start: float = 0.0, w_start: float = 0.0, resampling: str = 'bilinear', border_mode: int = cv2.BORDER_CONSTANT, value: Union[int, float, List[int], List[float]] = 0) -> Union[ImageType, MaskType]
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
zoom
zoom(image: ImageType, ratio: float = 1.0, h_start: float = 0.0, w_start: float = 0.0, resampling: str = 'bilinear', border_mode: int = cv2.BORDER_CONSTANT, value: Union[int, float, List[int], List[float]] = 0) -> Union[ImageType, MaskType]
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
random_resized_crop
random_resized_crop(image: ImageType, h_scale: float = 1.0, w_scale: float = 1.0, h_start: float = 0.0, w_start: float = 0.0, resampling: str = 'bilinear') -> Union[ImageType, MaskType]
Crop the given image to given scale and then resize it to original size.
Parameters:
-
image(ImageType) –original image
-
h_scale(float, default:1.0) –crop height scale. Defaults to 1.0.
-
w_scale(float, default:1.0) –crop width scale. Defaults to 1.0.
-
h_start(float, default:0.0) –crop height start ratio. Defaults to 0.0.
-
w_start(float, default:0.0) –crop width start ratio. Defaults to 0.0.
-
resampling(str, default:'bilinear') –interpolation method. Defaults to "bilinear".
Returns:
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
random_resized_crop_and_pad
random_resized_crop_and_pad(image: ImageType, scale: float = 1.0, aspect_ratio: float = 1.0, h_start: float = 0.0, w_start: float = 0.0, height: Optional[int] = None, width: Optional[int] = None, resampling: str = 'bilinear', border_mode: int = cv2.BORDER_CONSTANT, value: Union[int, float, List[int], List[float]] = 0) -> Union[ImageType, MaskType]
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
light_reflect
light_reflect(image: ImageType, xc: float, yc: float, x_radius: float, y_radius: float, angle: float) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
perspective_transform
perspective_transform(image: ImageType, offset_top_left: OffsetType, offset_top_right: OffsetType, offset_bottom_right: OffsetType, offset_bottom_left: OffsetType, interpolate_method: str = 'nearest')
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
calculate_transform_matrix
calculate_transform_matrix(width: int, height: int, offset_top_left: OffsetType, offset_top_right: OffsetType, offset_bottom_right: OffsetType, offset_bottom_left: OffsetType) -> ndarray
Calculates the perspective transformation matrix using the given width, height, and corner points of a rectangle.
Parameters:
-
width(int) –Width of the original image.
-
height(int) –Height of the original image.
-
offset_top_left(OffsetType) – -
offset_bottom_right(OffsetType) – -
offset_top_right(OffsetType) –The offset ratio of the top-left corner point.
-
offset_bottom_left(OffsetType) –The offset ratio of the bottom-left corner point.
Returns:
-
ndarray–np.ndarray: The 4x3 perspective transform matrix.
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
erase
erase(image: ImageType, x: int, y: int, w: int, h: int, value: ndarray, inplace: bool = False)
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
random_erase
random_erase(image: ImageType, scale: float = 0.02, aspect_ratio: float = 1.0, value: Union[tuple[int, int, int], None] = None, inplace: bool = False) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
grayscale
grayscale(image: ImageType) -> ndarray
gauss_noise
gauss_noise(image: ImageType, intensity: float = 0.0, mean: float = 0.0, per_channel: bool = True)
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
get_advanced_blur_kernel
get_advanced_blur_kernel(ksize: int, sigmaX: float, sigmaY: float, angle: float, beta: float, noise_limit: Sequence[float]) -> Any
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
advanced_blur
advanced_blur(image: ImageType, ksize: int = 1)
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
elastic_transform
elastic_transform(image: ImageType, intensity: float = 0.0, alpha: float = 400.0, alpha_affine: float = 0.0, interpolation: int = cv2.INTER_LINEAR, border_mode: int = cv2.BORDER_REFLECT_101, value: Union[int, float, List[int], List[float]] = 0, approximate: bool = False, same_dxdy: bool = False) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_function.py
augment_transform
Implement ImageTransform classes for image augmentation.
ImageTransform
Bases: BaseTransform
Image와 라벨에 적용되는 Transform 입니다.
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
apply_to_image
apply_to_mask
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, **params) -> BBoxesType
apply_to_polygons
apply_to_polygons(polygons: PolygonType, **params) -> PolygonType
ImageSizeParams
get_params_from_data
get_params_from_data(data_for_params: ParamsType) -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
ToNumpy
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
apply_to_image
ToPil
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
apply_to_image
VerticalFlip
Bases: ImageSizeParams, ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
apply_to_image
apply_to_mask
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], **params) -> BBoxesType
apply_to_polygons
apply_to_polygons(polygons: PolygonType, image_size: Tuple[int], **params) -> PolygonType
HorizontalFlip
Bases: ImageSizeParams, ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
apply_to_image
apply_to_mask
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], **params) -> BBoxesType
apply_to_polygons
apply_to_polygons(polygons: PolygonType, image_size: Tuple[int], **params) -> PolygonType
Rotate
Rotate(angle_limit: Optional[List[float]] = None, interpolation: int = cv2.INTER_LINEAR, border_mode: int = cv2.BORDER_CONSTANT, value: Union[int, float, List[int], List[float]] = 0, mask_value: Union[int, float] = 0, crop_border: bool = False, **kwargs)
Bases: ImageSizeParams, ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_mask
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], angle: float = 0, **params) -> BBoxesType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_polygons
apply_to_polygons(polygons: PolygonType, angle: float, image_size: Tuple[int], **params) -> PolygonType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
RandomRotate90
Bases: ImageSizeParams, ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
apply_to_mask
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], factor: int = 0, **params) -> BBoxesType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_polygons
apply_to_polygons(polygons: PolygonType, image_size: Tuple[int], factor: int = 0, **params) -> PolygonType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
ColorJitter
ColorJitter(brightness_limit: Optional[List[float]] = None, contrast_limit: Optional[List[float]] = None, saturation_limit: Optional[List[float]] = None, hue_limit: Optional[List[float]] = None, **kwargs)
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
apply_to_image(image: ImageType, brightness: float = 1.0, contrast: float = 1.0, saturation: float = 1.0, hue: float = 0, order: List[int] = [0, 1, 2, 3], **params) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
Blur
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
GaussianBlur
GaussianBlur(ksize_limit: Optional[List[int]] = None, sigma_limit: Optional[List[float]] = None, **kwargs)
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
AdjustBrightness
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
AdjustContrast
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
AdjustHue
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
AdjustSaturation
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
AdjustGamma
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
AdjustBrightnessContrast
AdjustBrightnessContrast(brightness_limit: Optional[List[float]] = None, contrast_limit: Optional[List[float]] = None, brightness_by_max: bool = True, **kwargs)
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
IsoNoise
IsoNoise(color_shift_limit: Optional[List[float]] = None, intensity_limit: Optional[List[float]] = None, **kwargs)
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
JpegCompression
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
Sharpen
Sharpen(alpha_limit: Optional[List[int]] = None, lightness_limit: Optional[List[int]] = None, **kwargs)
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
_generate_sharpening_matrix
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
MultiplicativeNoise
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
_generate_multiplier
_generate_multiplier(image: ImageType, multiplier: ndarray, random_seed: int) -> ndarray
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
RatioJitter
RatioJitter(proportion_limit: Optional[Union[List[float], int, float]] = None, resampling: str = 'bilinear', border_mode: int = cv2.BORDER_CONSTANT, value: Union[int, float, List[int], List[float]] = 0, mask_value: Union[int, float] = 0, **kwargs)
Bases: ImageSizeParams, ImageTransform
crop, pad, and resize to original image size
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
apply_to_image(image: ImageType, proportion_left: float, proportion_right: float, proportion_top: float, proportion_bottom: float, **params) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_mask
apply_to_mask(mask: MaskType, proportion_left: float, proportion_right: float, proportion_top: float, proportion_bottom: float, **params) -> MaskType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], proportion_left: float, proportion_right: float, proportion_top: float, proportion_bottom: float, **params) -> BBoxesType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_polygons
apply_to_polygons(polygons: PolygonType, image_size: Tuple[int], proportion_left: float, proportion_right: float, proportion_top: float, proportion_bottom: float, **params) -> PolygonType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
Zoom
Zoom(ratio_limit: Optional[List[float]] = None, resampling: str = 'bilinear', border_mode: int = cv2.BORDER_CONSTANT, value: Union[int, float, List[int], List[float]] = 0, mask_value: Union[int, float] = 0, **kwargs)
Bases: ImageSizeParams, ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
apply_to_image(image: ImageType, ratio: float, h_start: float, w_start: float, **params) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_mask
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], ratio: float, h_start: float, w_start: float, **params) -> BBoxesType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_polygons
apply_to_polygons(polygons: PolygonType, image_size: Tuple[int], ratio: float, h_start: float, w_start: float, **params) -> PolygonType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
RandomResizedCrop
RandomResizedCrop(scale_limit: Optional[List[float]] = None, aspect_ratio_limit: Optional[List[float]] = None, resampling: str = 'bilinear', **kwargs)
Bases: ImageSizeParams, ImageTransform
Crop a random part of the input and rescale it to original size
Parameters:
-
scale_limit(Optional[List[float]], default:None) –range of size of the origin size cropped. Defaults to [0.45, 1.00].
-
aspect_ratio_limit(Optional[List[float]], default:None) –range of aspect ratio of the origin aspect ratio cropped. Defaults to [0.50, 2.00].
-
resampling(str, default:'bilinear') –interpolation method. Defaults to "bilinear".
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
apply_to_image(image: ImageType, h_scale: float, w_scale: float, h_start: float, w_start: float, **params) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_mask
apply_to_mask(mask: MaskType, h_scale: float, w_scale: float, h_start: float, w_start: float, **params) -> MaskType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], h_scale: float, w_scale: float, h_start: float, w_start: float, **params) -> BBoxesType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_polygons
apply_to_polygons(polygons: PolygonType, image_size: Tuple[int], h_scale: float, w_scale: float, h_start: float, w_start: float, **params) -> PolygonType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
RandomResizedCropAndPad
RandomResizedCropAndPad(scale_limit: Optional[List[float]] = None, aspect_ratio_limit: Optional[List[float]] = None, height: Optional[int] = None, width: Optional[int] = None, resampling: str = 'bilinear', border_mode: int = cv2.BORDER_CONSTANT, value: Union[int, float, List[int], List[float]] = 0, mask_value: Union[int, float] = 0, **kwargs)
Bases: ImageSizeParams, ImageTransform
pad, crop and resize to original image size
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
apply_to_image(image: ImageType, scale: float, aspect_ratio: float, h_start: float, w_start: float, **params) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_mask
apply_to_mask(mask: MaskType, scale: float, aspect_ratio: float, h_start: float, w_start: float, **params) -> MaskType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], scale: float, aspect_ratio: float, h_start: float, w_start: float, **params) -> BBoxesType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_polygons
apply_to_polygons(polygons: PolygonType, image_size: Tuple[int], scale: float, aspect_ratio: float, h_start: float, w_start: float, **params) -> PolygonType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
LightReflect
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
PerspectiveTransform
Bases: ImageSizeParams, ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
apply_to_image(image: ImageType, offset_top_left: OffsetType, offset_top_right: OffsetType, offset_bottom_right: OffsetType, offset_bottom_left: OffsetType, **params) -> ImageType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_mask
apply_to_mask(mask: MaskType, offset_top_left: OffsetType, offset_top_right: OffsetType, offset_bottom_right: OffsetType, offset_bottom_left: OffsetType, **params) -> MaskType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_bboxes
apply_to_bboxes(bboxes: BBoxesType, image_size: Tuple[int], offset_top_left: OffsetType, offset_top_right: OffsetType, offset_bottom_right: OffsetType, offset_bottom_left: OffsetType, **params) -> BBoxesType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_polygons
apply_to_polygons(polygons: PolygonType, image_size: Tuple[int], offset_top_left: OffsetType, offset_top_right: OffsetType, offset_bottom_right: OffsetType, offset_bottom_left: OffsetType, **params) -> PolygonType
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
RandomErasing
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
This is modified version of get_params of random erasing see: https://pytorch.org/vision/main/_modules/torchvision/transforms/transforms.html#RandomErasing.forward
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
apply_to_image
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
Grayscale
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
GaussNoise
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
AdvancedBlur
Bases: ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
ElasticTransform
Bases: ImageSizeParams, ImageTransform
Source code in SaigeToolkit/data/transform/augmentation/augment_transform.py
get_apply_params
get_apply_params() -> ParamsType
apply_to_image
base_transform
Data augmentation을 위한 기본 Transform의 interface를 정의합니다.
BaseTransform
Transform의 기본 interface를 정의합니다.
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
__call__
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
get_apply_params
get_apply_params() -> ParamsType
get_params_from_data
get_params_from_data(data_for_params: ParamsType) -> ParamsType
이 함수는 input으로부터 parameter들을 뽑을 때 사용됩니다.
Parameters:
-
data_for_params(ParamsType) –params을 추출할 데이터를 입력으로 갖습니다.
Returns:
-
ParamsType(ParamsType) –params로 쓰일 데이터를 반환합니다.
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
apply_with_params
apply_with_params(params: ParamsType, **data) -> ParamsType
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
builder
_types
module-attribute
_types = {None: {(__name__): _KjGofor _type in _types}, None: {(pascal_to_snake(__name__)): _PffQfor _type in _types}}
Augmentation
Source code in SaigeToolkit/data/transform/augmentation/builder.py
__call__
Source code in SaigeToolkit/data/transform/augmentation/builder.py
build_augmentation
build_augmentation(config: Dict) -> Augmentation
Source code in SaigeToolkit/data/transform/augmentation/builder.py
compose
여러 Data Transform들을 하나로 묶어서 관리해주는 기본 BaseCompose 클래스 및 Compose 구현을 제공합니다.
base_compose
Data augmentation을 위한 기본 Compose의 interface를 정의합니다.
BaseCompose
BaseCompose(transforms: Sequence[Union[BaseTransform, BaseCompose]], prob: float = 1.0)
여러 Data Transform들을 하나로 묶어서 관리해주는 Compose의 기본 interface를 정의합니다.
Source code in SaigeToolkit/data/transform/augmentation/compose/base_compose.py
__call__
Source code in SaigeToolkit/data/transform/augmentation/compose/base_compose.py
apply
__len__
__getitem__
__getitem__(index: int) -> Union[BaseTransform, BaseCompose]
builder
_types
module-attribute
_types = {None: {(__name__): _6B0qfor _type in _types}, None: {(pascal_to_snake(__name__)): _BhDRfor _type in _types}}
build_compose
build_compose(_target_: str, transforms: List[BaseTransform], **config) -> BaseCompose
compose
Compose
Compose(transforms: Sequence[Union[BaseTransform, BaseCompose]], prob: float = 1.0)
Bases: BaseCompose
Source code in SaigeToolkit/data/transform/augmentation/compose/base_compose.py
SomeOf
Bases: BaseCompose
Source code in SaigeToolkit/data/transform/augmentation/compose/compose.py
apply
Source code in SaigeToolkit/data/transform/augmentation/compose/compose.py
box_function
preserve_coordinates
Box augmentation이 (left, top, right, bottom) coordinate system을 기반으로 구현 되어있기 때문에, input bboxes의 coordinate system을 확인하고 augmentation에 맞는 coordinate system으로 변환하고, augmentation이 끝나면 다시 기존 coordinate system으로 변경하여 출력합니다.
-
np.ndarray의 경우 coordinate system을 체크할 수 없기 때문에 (left, top, right, bottom) coordinate system이라고 가정합니다.
-
NumpyBBoxes의 경우 NumpyBBoxes 내부 변수 coordinate과 내부 함수 convert_coordinate를 활용하여 구현됩니다.
Source code in SaigeToolkit/data/transform/box_function.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
crop_box
crop_box(bboxes: BBoxesType, cropping_box: Union[ndarray, List[int]]) -> BBoxesType
bbox crop. An image is cropped at (new_left, new_top, new_right, new_bottom)
Source code in SaigeToolkit/data/transform/box_function.py
hflip_box
hflip_box(bboxes: BBoxesType, image_size: Tuple[int]) -> BBoxesType
vflip_box
vflip_box(bboxes: BBoxesType, image_size: Tuple[int]) -> BBoxesType
rotate
rotate(bboxes: BBoxesType, angle: Union[float, int], image_size: Tuple[int], target_size: Optional[Tuple[int]] = None, clipping: bool = True) -> BBoxesType
Source code in SaigeToolkit/data/transform/box_function.py
rotate90
rotate90(bboxes: BBoxesType, factor: int, image_size: Tuple[int], clipping: bool = True) -> BBoxesType
Source code in SaigeToolkit/data/transform/box_function.py
translate_box
translate_box(bboxes: BBoxesType, offset: Tuple[int], image_size: Tuple[int]) -> BBoxesType
Source code in SaigeToolkit/data/transform/box_function.py
ratio_jitter
ratio_jitter(bboxes: BBoxesType, image_size: Tuple[int], proportion_left: float = 0.0, proportion_right: float = 0.0, proportion_top: float = 0.0, proportion_bottom: float = 0.0) -> BBoxesType
Source code in SaigeToolkit/data/transform/box_function.py
zoom
zoom(bboxes: BBoxesType, image_size: Tuple[int], ratio: float = 1.0, h_start: float = 0.0, w_start: float = 0.0) -> BBoxesType
Source code in SaigeToolkit/data/transform/box_function.py
random_resized_crop
random_resized_crop(bboxes: BBoxesType, image_size: Tuple[int], h_scale: float = 1.0, w_scale: float = 1.0, h_start: float = 0.0, w_start: float = 0.0) -> BBoxesType
Source code in SaigeToolkit/data/transform/box_function.py
random_resized_crop_and_pad
random_resized_crop_and_pad(bboxes: BBoxesType, image_size: Tuple[int], scale: float = 1.0, aspect_ratio: float = 1.0, h_start: float = 0.0, w_start: float = 0.0, height: Optional[int] = None, width: Optional[int] = None) -> BBoxesType
Source code in SaigeToolkit/data/transform/box_function.py
perspective_transform
perspective_transform(bboxes: BBoxesType, image_size: Tuple[int], offset_top_left: OffsetType, offset_top_right: OffsetType, offset_bottom_right: OffsetType, offset_bottom_left: OffsetType) -> BBoxesType
Source code in SaigeToolkit/data/transform/box_function.py
function_util
Define utility functions for data augmentation.
check_value
Source code in SaigeToolkit/data/transform/function_util.py
check_range
check_range(data: Union[Sequence[int], Sequence[float]], min_value: Union[int, float], max_value: Union[int, float])
Source code in SaigeToolkit/data/transform/function_util.py
ratio_to_value
Source code in SaigeToolkit/data/transform/function_util.py
support_gray
Source code in SaigeToolkit/data/transform/function_util.py
support_rgba
Source code in SaigeToolkit/data/transform/function_util.py
support_3dim_gray_image
Source code in SaigeToolkit/data/transform/function_util.py
support_multi_image
Source code in SaigeToolkit/data/transform/function_util.py
image_function
RESAMPLE_PIL
module-attribute
RESAMPLE_CV2
module-attribute
RESAMPLE_TORCH
module-attribute
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
Source code in SaigeToolkit/data/transform/image_function.py
resize_array
resize_array(array: Union[Tensor, ndarray], target_size: ImageSizeType, resampling: str = 'nearest') -> Union[Tensor, ndarray]
[HW, BHW]의 array를 resize합니다.
Parameters:
-
array(Union[Tensor, ndarray]) –array data [HW, BHW]
-
target_size(ImageSizeType) –[W, H]
-
resampling(str, default:'nearest') –resampling method. Defaults to "nearest".
Returns:
-
Union[Tensor, ndarray]–Union[torch.Tensor, np.ndarray]: resized array
Source code in SaigeToolkit/data/transform/image_function.py
crop
crop(image: Union[Image, Tensor, ndarray], coordinates: Union[List[int], Tuple[int, int, int, int]]) -> Union[Image, Tensor, ndarray]
이미지의 coordinates 좌표영역을 크롭합니다. coordinates가 이미지를 벗어나는 경우 zero padding 합니다.
Parameters:
-
image(Union[Image, Tensor, ndarray]) –image
-
coordinates(Union[List[int], Tuple[int, int, int, int]]) –[left, top, right, bottom]
Returns:
-
Union[Image, Tensor, ndarray]–Union[Image.Image, torch.Tensor, np.ndarray]: cropped image
Source code in SaigeToolkit/data/transform/image_function.py
add_constant_margin
add_constant_margin(image: Union[Image, Tensor, ndarray], left: int, top: int, right: int, bottom: int, value: Union[float, int]) -> Union[Image, Tensor, ndarray]
image에 left, top, right, bottom 만큼 constant value로 padding 합니다.
Parameters:
-
image(Union[Image, Tensor, ndarray]) –image
-
left(int) –image의 왼쪽 padding size 입니다.
-
top(int) –image의 위쪽 padding size 입니다.
-
right(int) –image의 오른쪽 padding size 입니다.
-
bottom(int) –image의 아래쪽 padding size 입니다.
-
value(Union[float, int]) –padding된 영역에 들어갈 value 입니다.
Source code in SaigeToolkit/data/transform/image_function.py
add_constant_margin_array
add_constant_margin_array(array: Union[Tensor, ndarray], left: int, top: int, right: int, bottom: int, value: Union[float, int]) -> Union[Tensor, ndarray]
array에 left, top, right, bottom 만큼 constant value로 padding 합니다.
Parameters:
-
array(Union[Tensor, ndarray]) –array data [HW, BHW]
-
left(int) –array의 왼쪽 padding size 입니다.
-
top(int) –array의 위쪽 padding size 입니다.
-
right(int) –array의 오른쪽 padding size 입니다.
-
bottom(int) –array의 아래쪽 padding size 입니다.
-
value(Union[float, int]) –padding된 영역에 들어갈 value 입니다.
Source code in SaigeToolkit/data/transform/image_function.py
fill_pixels_with_mask
fill_pixels_with_mask(image: Union[Image, ndarray], bool_mask: ndarray, value: Union[int, float] = 0, method: str = 'np_where') -> Union[Image, ndarray]
image 중 bool_mask=True인 픽셀들을 value로 채웁니다.
Parameters:
-
image(Union[Image, ndarray]) –image (HW or HWC)
-
bool_mask(ndarray) –boolean mask (HW)
-
value(Union[int, float], default:0) –. Defaults to 0.
Returns:
-
Union[Image, ndarray]–Union[Image.Image, np.ndarray]: 결과 이미지
Note
- image가 Image.Image인 경우, 결과 이미지도 Image.Image로 반환합니다.
- image의 값이 inplace로 변경됩니다. 값이 변경되지 않길 원한다면, copy를 해주세요.
Source code in SaigeToolkit/data/transform/image_function.py
to_numpy
Source code in SaigeToolkit/data/transform/image_function.py
to_pil
Source code in SaigeToolkit/data/transform/image_function.py
convert_image_mode
convert_image_mode(image: Union[Image, ndarray], mode: str, copy: bool = False) -> Union[Image, ndarray]
convert image mode
Parameters:
-
image(Union[Image, ndarray]) –image
-
mode(str) –"RGB" or "L"
-
copy(bool, default:False) –to copy data. Defaults to False.
Returns:
-
Union[Image, ndarray]–Union[Image.Image, np.ndarray]: converted image
Note
RGB -> L 변환 시 Image.Image와 np.ndarray 연산 결과가 다를 수 있음. (PIL과 cv2 에서 변환식은 L = R * 299/1000 + G * 587/1000 + B * 114/1000 로 동일하나 소숫점 처리 방식이 다름)
Source code in SaigeToolkit/data/transform/image_function.py
image_load
ImageLoader
여러 형태의 데이터를 입력으로 받아, 전처리 과정을 거쳐 PIL Image 혹은 np.ndarray 로 return 합니다. 현재 지원하는 데이터는 다음과 같습니다. - 데이터 타입: [image path, np.ndarray, PIL Image] - color: ["RGB", "Gray"] - bit: [8, 16]
입력으로 받은 데이터에 따른 출력값은 다음과 같습니다. | image path | np.ndarray | PIL | RGB; 8 | PIL(RGB;8) | PIL(RGB;8) | PIL(RGB;8) | RGB;16 | PIL(RGB;8) | PIL(RGB;8) | - | Gray; 8 | PIL(L;8) | PIL(L;8) | PIL(L;8) | Gray;16 | PIL(L;8) | PIL(L;8) | PIL(L;8) |
Note1
PIL은 RGB;16을 지원하지 않습니다. 따라서 PIL(RGB;16)은 입력으로 들어올 수 없습니다.
Note2
PIL은 "I;16" 모드로 Gray;16을 지원하지만, PIL 내부의 convert 함수를 써서 Gray;8로 변환시 값이 overflow 나는 issue가 있습니다.
Note3
이미지는 기본적으로 np.ndarray로 로드되며, PIL.Image.Image로 로드하려면 to_numpy=False를 세팅하세요.
Note4
image_mode는 "RGB", "L" 중 하나를 지원하며, multipage (이미지 리스트) 인 경우 각 페이지의 모드를 리스트로 입력하세요.
예시: 1, 3번째 페이지는 RGB 이고 2번째 페이지는 L 인 경우 image_mode = ["RGB", "L", "RGB"]
Source code in SaigeToolkit/data/transform/image_load.py
__call__
call_method
make [PIL Image or np.ndarray] from PIL.Image, np.ndarray, or path string
Parameters:
-
image(Union[Image, ndarray, str, List]) –PIL.Image, array, path string or list of it.
Returns:
-
Dict(Dict) –{ "image": Union[PIL.Image.Image, np.ndarray, List[PIL.Image.Image], List[np.ndarray]], **input_dict, }
Source code in SaigeToolkit/data/transform/image_load.py
load
Source code in SaigeToolkit/data/transform/image_load.py
load_from_pil
Source code in SaigeToolkit/data/transform/image_load.py
load_from_array
Source code in SaigeToolkit/data/transform/image_load.py
load_from_path
Loading function using PIL.Image library. This function is introduced because {exif_transpose} must be processed. {exif_transpose} fix rotated image binary data using {EXIF} information. Without {exif_transpose}, network would accidently learn randomly rotated image data.
Parameters:
-
path(str) –path to image file
Returns:
-
Union[Image, ndarray]–Union[Image.Image, np.ndarray]: image
Source code in SaigeToolkit/data/transform/image_load.py
_load_from_plain_file_path
staticmethod
Loading function using PIL.Image library. This function is introduced because {exif_transpose} must be processed. {exif_transpose} fix rotated image binary data using {EXIF} information. Without {exif_transpose}, network would accidently learn randomly rotated image data.
Parameters:
-
path(str) –path to image file
Returns:
-
Image–Image.Image: image
Source code in SaigeToolkit/data/transform/image_load.py
_load_from_encrypted_file_path
staticmethod
Loading function using PIL.Image library and decrypting encrypted image file.
Parameters:
-
path(str) –encrypted image file path
Returns:
-
Image–Image.Image: decrypted image
Source code in SaigeToolkit/data/transform/image_load.py
_convert_16_to_8
staticmethod
이미지 픽셀당 비트수를 16에서 8로 변화합니다. 입출력 데이터 타입이 같습니다. (pil로 받으면 pil을 ndarray로 받을 시 ndarray를 출력합니다.)
Source code in SaigeToolkit/data/transform/image_load.py
_is_16bit
staticmethod
Source code in SaigeToolkit/data/transform/image_load.py
parameter_validation
validate_inspection_size_wh
validate_inspection_size_wh(inspection_size_wh: ImageSizeType) -> None
inspection_size_wh가 유효한지 확인합니다. inspection_size_wh는 (width, height)로 모두 1 이상의 int여야 합니다.
유효하지 않을 경우, error를 발생시킵니다.
Parameters:
-
inspection_size_wh(Optional[ImageSizeType]) –검사할 inspection_size_wh.
Raises:
-
InspectionSizeTypeError–맞지 않는 타입일 경우 발생합니다.
-
InspectionSizeValueError–값이 1 이상이 아닐 경우 발생합니다.
Source code in SaigeToolkit/data/transform/parameter_validation.py
polygon_function
vertical_flip
vertical_flip(polygons: PolygonType, image_size: Sequence[int]) -> PolygonType
horizontal_flip
horizontal_flip(polygons: PolygonType, image_size: Sequence[int]) -> PolygonType
rotate
rotate(polygons: PolygonType, angle: float, image_size: Sequence[int], target_size: Optional[Sequence[int]] = None) -> PolygonType
Source code in SaigeToolkit/data/transform/polygon_function.py
rotate90
rotate90(polygons: PolygonType, factor: int, image_size: Sequence[int]) -> PolygonType
Source code in SaigeToolkit/data/transform/polygon_function.py
ratio_jitter
ratio_jitter(polygons: PolygonType, image_size: Sequence[int], proportion_left: float, proportion_right: float, proportion_top: float, proportion_bottom: float) -> PolygonType
Source code in SaigeToolkit/data/transform/polygon_function.py
zoom
zoom(polygons: PolygonType, image_size: Sequence[int], ratio: float, h_start: float, w_start: float) -> PolygonType
Source code in SaigeToolkit/data/transform/polygon_function.py
random_resized_crop
random_resized_crop(polygons: PolygonType, image_size: Sequence[int], h_scale: float = 1.0, w_scale: float = 1.0, h_start: float = 0.0, w_start: float = 0.0) -> PolygonType
Source code in SaigeToolkit/data/transform/polygon_function.py
random_resized_crop_and_pad
random_resized_crop_and_pad(polygons: PolygonType, image_size: Sequence[int], scale: float, aspect_ratio: float, h_start: float, w_start: float, h_target: Optional[int] = None, w_target: Optional[int] = None, **params) -> PolygonType
Source code in SaigeToolkit/data/transform/polygon_function.py
perspective_transform
perspective_transform(polygons: PolygonType, image_size: Sequence[int], offset_top_left: OffsetType, offset_top_right: OffsetType, offset_bottom_right: OffsetType, offset_bottom_left: OffsetType) -> PolygonType
Source code in SaigeToolkit/data/transform/polygon_function.py
resize_polygon
resize_polygon(polygons: PolygonType, image_size: Sequence[int], tw: int, th: int) -> PolygonType
Resize polygon from (w, h) to (tw, th)
Source code in SaigeToolkit/data/transform/polygon_function.py
translate_polygon
translate_polygon(polygons: PolygonType, offset: Sequence[int]) -> PolygonType
Translate polyfon from [(x1, y1), ... ] to [(x1 - x_offset), (y1 - y_offset), ...]
Source code in SaigeToolkit/data/transform/polygon_function.py
resize
Resizer
Resizer(round: Optional[int] = None, round_type: str = 'round', resampling: str = 'bilinear', image_only: bool = False, use_cv2_for_numpy: bool = True)
Bases: Registerable
Base class for resizing PIL, torch, numpy images
Resizer의 작동 방식은 다음과 같습니다. 1. target size 계산 2. target size 미세 조정 (round, floor, ceil) 3. target size에 따라 image, mask, bboxes, polygons에 resize를 적용
-
target size 계산
- resize 될 target size (width, height)를 계산합니다.
- 실제 target size의 계산은
_compute_target_sizemethod에서 이루어집니다. (각 resizer에서 override하여 사용) - 현재 존재하는 5가지 resizer는 다음과 같습니다.
1) Resizer: target size를 계산하지 않고, input size를 그대로 사용합니다.
2) SizeResizer: image를 size로 resize 합니다.
keep_aspect_ratio가 False일 경우, aspect ratio를 유지하지 않고,size에 맞게 resize합니다.keep_aspect_ratio가 True일 경우, aspect ratio를 유지하면서, 각 변이size을 넘지 않도록 resize합니다. 3) ScaleResizer: image를 scale배로 늘리거나 줄입니다. aspect ratio는 유지됩니다. 4) AreaSqrtResizer: image의 면적이 area_sqrt^2이 되도록 이미지를 늘리거나 줄입니다. aspect ratio는 유지됩니다. 5) MaxSizeResizer: image의 size가max_size보다 클 경우max_size로 resize 합니다. aspect ratio를 유지하기 위해, width/height중 더 많이 줄어야 하는 비율에 맞추어 전체를 resize합니다.
-
target size 미세 조정 (round, floor, ceil)
- resize된 이미지가 특정 값의 배수가 되도록 target size를 미세 조정 합니다. model의 입력으로 넣을 때, image size가 특정 값의 배수가 되어야 하기 때문에 필요합니다.
- target size 미세 조정은 총 2개의 args에 영향을 받을 수 있습니다. (
round,round_type)round가None이면 미세 조정을 하지 않습니다,round_type에 따라 다른 방식의 미세 조정을 적용합니다. 1)round: 미세 조정시 반올림합니다. (target size보다 작거나 크거나 같습니다.) 2)floor: 미세 조정시 내림합니다. (target size보다 작거나 같습니다.) 3)ceil: 미세 조정시 올림합니다. (target size보다 크거나 같습니다.)
- 미세 조정된 target size의 width 혹은 height가 0이 될 경우,
round값으로 변경해줍니다. (ex.size=(3, 3),round=8이면round_type에 상관없이size=(8, 8)이 됨.)
Parameters:
-
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
round_functions
class-attribute
instance-attribute
round_functions = {'round': round, 'floor': floor, 'ceil': ceil}
__init_subclass__
__call__
__call__(return_revert_params: bool = False, ignore_round: bool = False, **data) -> Union[Dict, Tuple[Dict, Dict]]
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: ImageSizeType, ignore_round: bool = False) -> ImageSizeType
compute resize target size from input image size
Parameters:
-
input_size(ImageSizeType) –(width, height)
-
ignore_round(bool, default:False) –ignore round parameter. Defaults to False.
Returns:
-
ImageSizeType(ImageSizeType) –(width, height)
Source code in SaigeToolkit/data/transform/resize.py
_compute_target_size
_compute_target_size(input_size: ImageSizeType) -> ImageSizeType
_preprocess_size
staticmethod
_preprocess_size(size: Optional[Union[ImageSizeType, int]] = None) -> Optional[ImageSizeType]
size를 (width, height)로 변환합니다.
Source code in SaigeToolkit/data/transform/resize.py
apply_with_params
classmethod
apply_with_params(data: Dict, input_size: ImageSizeType, target_size: ImageSizeType, resampling: str, image_only: bool, use_cv2_for_numpy: bool = True) -> Dict
Source code in SaigeToolkit/data/transform/resize.py
apply_to_image
staticmethod
apply_to_image(image, target_size: ImageSizeType, resampling: str, use_cv2_for_numpy: bool = True)
Source code in SaigeToolkit/data/transform/resize.py
apply_to_mask
staticmethod
apply_to_mask(mask, target_size: ImageSizeType)
apply_to_bboxes
staticmethod
apply_to_bboxes(bboxes, input_size: ImageSizeType, target_size: ImageSizeType)
apply_to_polygons
staticmethod
apply_to_polygons(polygons, input_size: ImageSizeType, target_size: ImageSizeType)
Source code in SaigeToolkit/data/transform/resize.py
SizeResizer
SizeResizer(size: Optional[ImageSizeType] = None, keep_aspect_ratio: bool = False, **kwargs)
Bases: Resizer
Resize image to target size with keep_aspect_ration option, of which default value is False.
Raises:
-
ResizerParameterValueError–size가 None이 아닌 경우, 양의 정수가 아니면 error를 raise 합니다. keep_aspect_ratio이 bool이 아니면 error를 raise 합니다.
Parameters:
-
size(Optional[ImageSizeType], default:None) –target size. Defaults to None.
-
keep_aspect_ratio(bool, default:False) –keep aspect ratio. Defaults to False.
-
**kwargs–Resizerclass arguments
Source code in SaigeToolkit/data/transform/resize.py
_compute_target_size
_compute_target_size(input_size: ImageSizeType) -> ImageSizeType
Source code in SaigeToolkit/data/transform/resize.py
ScaleResizer
Bases: Resizer
Resize image to target size with scale
Raises:
-
ResizerParameterValueError–scale이 None이 아닌 경우, 양수가 아니면 error를 raise 합니다.
Parameters:
-
scale(Optional[Union[int, float]], default:None) –scale. Defaults to None.
-
**kwargs–Resizerclass arguments
Source code in SaigeToolkit/data/transform/resize.py
_compute_target_size
_compute_target_size(input_size: ImageSizeType) -> ImageSizeType
AreaSqrtResizer
Bases: Resizer
Resize image to target size with keeping area sqrt
Raises:
-
ResizerParameterValueError–area_sqrt이 None이 아닌 경우, 양수가 아니면 error를 raise 합니다
Parameters:
-
area_sqrt(Optional[Union[int, float]], default:None) –area sqrt. Defaults to None.
-
**kwargs–Resizerclass arguments
Source code in SaigeToolkit/data/transform/resize.py
_compute_target_size
_compute_target_size(input_size: ImageSizeType) -> ImageSizeType
Source code in SaigeToolkit/data/transform/resize.py
MaxSizeResizer
MaxSizeResizer(max_size: Optional[ImageSizeType] = None, **kwargs)
Bases: Resizer
Resize image to target size only if the image size exceed the max size. Aspect ratio is kept.
Raises:
-
ResizerParameterValueError–max_size가 None이 아닌 경우, 양의 정수가 아니면 error를 raise 합니다.
Parameters:
-
max_size(Optional[ImageSizeType], default:None) –max size. Defaults to None.
-
**kwargs–Resizerclass arguments
Source code in SaigeToolkit/data/transform/resize.py
_compute_target_size
_compute_target_size(input_size: ImageSizeType) -> ImageSizeType
Source code in SaigeToolkit/data/transform/resize.py
InspectionSizeResizer
InspectionSizeResizer(inspection_size_wh: Optional[ImageSizeType] = None, resizer: Optional[Resizer] = None)
Bases: ScaleResizer
원본 이미지가 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
set_scale_from_data
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
is_empty
instance-attribute
__call__
__call__(return_revert_params: bool = False, ignore_round: bool = False, **data) -> Union[Dict, Tuple[Dict, Dict]]
Source code in SaigeToolkit/data/transform/resize.py
build_resizer
build_resizer(**kwargs) -> Resizer
Source code in SaigeToolkit/data/transform/resize.py
roi
ROI 좌표 계산 및 ROI 크롭, blind_mask 적용을 수행하는 ROIHandler 클래스를 제공합니다. Set-ROI 기능을 위한 API 클래스인 ROIHandlerAPI도 제공합니다.
api
ROIHandlerAPI
Set-ROI 기능을 위한 API입니다.
Usage
# 핸들러 빌드. 아래는 simple mode의 예제 config이며, 자세한 설명은 ROIHandlerAPI.set() 함수 참고.
config = {
"mode": "simple",
"left": 0.0,
"top": 0.0,
"right": 1.0,
"bottom": 1.0,
"blind_mask": None,
}
error, message, roi_hander = ROIHandlerAPI.build(config)
# image에 대한 roi 계산. 리턴 결과 설명은 ROIHandlerAPI.apply() 함수 참고.
image = np.zeros((100, 100, 3), dtype=np.unit8)
error, message, roi_results = roi_handler.apply(image)
# roi 파라미터 변경
config["left"] = 0.1
error, message, _ = roi_handler.set(config)
# 변경된 파라미터로 roi 다시 계산
error, message, roi_results = roi_handler.apply(image)
Source code in SaigeToolkit/data/transform/roi/api.py
build
classmethod
build(config: Dict) -> ROIHandlerAPI
ROIHandlerAPI를 빌드합니다. Args: config (Dict): ROIHandlerAPI.set의 파라미터와 동일합니다.
Returns:
-
ROIHandlerAPI(ROIHandlerAPI) –빌드된 ROIHandlerAPI
Source code in SaigeToolkit/data/transform/roi/api.py
set
ROI 파라미터를 변경합니다.
Parameters:
-
config(Dict) –ROI 파라미터의 dict입니다. mode에 따라 다른 파라미터를 가집니다.
# simple mode: { "mode": "simple", # Simple ROI 모드. "left": float, # ROI의 왼쪽 경계. [0.0, 1.0) 범위의 실수. "top": float, # ROI의 위쪽 경계. [0.0, 1.0) 범위의 실수. "right": float, # ROI의 오른쪽 경계. (right, 1.0] 범위의 실수. "bottom": float, # ROI의 아래쪽 경계. (top, 1.0] 범위의 실수. "blind_mask": Optional[np.ndarray], # blind mask 이미지. None인 경우 blind 적용 안함. # np.ndarray인 경우 (dtype=uint8, shape=(H_roi, W_roi))이며 픽셀 값은 0 또는 1. # mask의 값이 1인 영역이 학습/검사 시 마스킹됩니다. # polygons에는 blind_mask가 적용되지 않습니다. } # advanced mode: { "mode": "advanced", # Advanced ROI 모드. "intensity": List[int], # 필터링할 [최소, 최대] 픽셀값 범위. 각 값은 [0, 255] 범위의 정수. "expansion": int, # 필터링된 픽셀 영역에 대한 확장/축소 정도. [-10, 10] 범위의 정수. "inversion": bool, # True인 경우 필터링된 픽셀 영역을 반전. "offset_left": float, # ROI 박스의 왼쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_right": float, # ROI 박스의 오른쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_top": float, # ROI 박스의 위쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "offset_bottom": float, # ROI 박스의 아래쪽 사이즈. [0.0, 2.0] 범위의 실수 이며, 1인 경우 기본 크기. "blind_mask": Optional[np.ndarray], # blind mask 이미지. None인 경우 blind 적용 안함. # np.ndarray인 경우 (dtype=uint8, shape=(H_roi, W_roi))이며 픽셀 값은 0 또는 1. # mask의 값이 1인 영역이 학습/검사 시 마스킹됩니다. # polygons에는 blind_mask가 적용되지 않습니다. }
Source code in SaigeToolkit/data/transform/roi/api.py
apply
image에 대한 ROI 좌표 및 기타 결과를 계산합니다.
Parameters:
-
image(ndarray) –ROI를 적용할 입력 이미지.
Returns:
-
Dict(Dict) –ROI 계산 결과 dict 입니다. mode에 따라 다른 결과 값들을 가집니다.
Source code in SaigeToolkit/data/transform/roi/api.py
roi_calculator
ROICalculator
RelativeBoxROI
Bases: ROICalculator
이미지 크기에 비례하는 상대좌표 박스로 ROI를 계산합니다.
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
set
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
__call__
__call__(image: Union[Image, ndarray], get_intermediate_results: bool = False, warmup: bool = False, **data) -> Dict
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
PixelIntensityROI
Bases: ROICalculator
픽셀값이 intensity 범위에 들어오는 픽셀만 필터링한 뒤, 필터링 된 픽셀들의 컨투어를 찾고,
가장 면적이 큰 컨투어를 감싸는 최소 박스로 ROI를 계산합니다.
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
set
set(intensity: Union[Tuple[int, int], List[int]], expansion: int, inversion: bool, offset_left: float, offset_right: float, offset_top: float, offset_bottom: float) -> None
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
__call__
__call__(image: Union[Image, ndarray], get_intermediate_results: bool = False, warmup: bool = False, **data) -> Dict
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | |
AutoRelativeBoxROI
Bases: RelativeBoxROI
RelativeBoxROI class with automatic coordinate calculation.
Monostate pattern applied to prevent ROI coordinate mismatch between train ~ validation dataset.
Attributes:
-
left(float) –ROI coordinates.
-
top(float) –ROI coordinates.
-
right(float) –ROI coordinates.
-
bottom(float) –ROI coordinates.
-
is_ready(bol) –Whether auto ROI coordinates is set.
-
image_hw(Optional[List[int]]) –dataset image size.
-
discard_outer_polygons(bool) –Flag for discarding polygons outside of current ROI region.
-
expand_ratio–Ratio for expanding ROI region. Larger value means more padding.
Example
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
__shared_state
class-attribute
instance-attribute
__shared_state = {'_is_ready': False, '_image_hw': None, '_left': -1.0, '_top': -1.0, '_right': -1.0, '_bottom': -1.0}
REGION_EXPAND_RATIO
class-attribute
instance-attribute
_check_auto_roi_is_ready
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
__call__
autoupdate_roi_coordinate
Automatically update ROI coordinate using dataset information.
Returns success flag.
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
_expand_region_xyxy
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
_fit_region_into_img_size
Source code in SaigeToolkit/data/transform/roi/roi_calculator.py
roi_handler
ROIHandler
ROI 기능을 수행합니다. 이미지에 대한 ROI 좌표를 계산해 크롭하고, 크롭된 이미지에 blind_mask를 적용해 마스크 영역의 픽셀 값을 0으로 치환합니다.
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
roi_calculator_types
class-attribute
instance-attribute
roi_calculator_types = {'simple': RelativeBoxROI, 'advanced': PixelIntensityROI, 'auto': AutoRelativeBoxROI}
set
set(mode: str, blind_mask: Union[None, ndarray, str], image_only: bool = False, discard_outer_polygons: bool = False, det_blind_mask_threshold: float = 0.5, **kwargs)
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
apply_crop
apply_crop(image: Union[Image, ndarray, List[Union[Image, ndarray]]], return_revert_params: bool = False, warmup: bool = False, **data) -> Union[Dict, Tuple[Dict, Dict]]
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
apply_mask
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
__call__
__call__(return_revert_params: bool = False, warmup: bool = False, **data) -> Union[Dict, Tuple[Dict, Dict]]
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
_check_polygon_within_box
Source code in SaigeToolkit/data/transform/roi/roi_handler.py
transform
End-to-end 데이터 변환을 지원하는 모듈입니다.
OversizedImageHandling
Bases: Enum
Transform
Transform(image_mode: Union[str, List[str]] = 'RGB', inspection_size_wh: Optional[ImageSizeType] = None, roi: Optional[Dict] = None, resize: Optional[Dict] = None, augmentation: Optional[Dict] = None, roi_mask_first: bool = True, oversized_image_handling: str = 'resize_to_fit', skip_round_resize_if_undersized: bool = False)
Source code in SaigeToolkit/data/transform/transform.py
base_resizer
instance-attribute
base_resizer = build_resizer(**resize) if resize is not None else None
inspection_size_resizer
instance-attribute
inspection_size_resizer: Optional[InspectionSizeResizer] = None
skip_round_resize_if_undersized
instance-attribute
Operation
_set_inspection_size_resizer_and_stacked_resizer_handler
inspection_size_wh와 oversized_image_handling에 따라서 inspection_size_resizer와 stacked_resizer_handler 설정합니다.
Source code in SaigeToolkit/data/transform/transform.py
__call__
data Dict에 transform을 적용합니다.
Parameters:
-
data(Dict) –data Dictionary
-
warmup(bool, default:False) –InferenceHandler warmup시에 사용하는 파라미터 입니다. True일 경우, 현재 transform을 적용했을 때 나올 수 있는 가장 큰 image size로 transform을 적용합니다. Transform operation 중 ROI의 경우 input image에 따라 output size가 매번 바뀔 수 있기 때문에 해당 옵션이 추가되었습니다. Defaults to False.
Returns:
-
Dict(Dict) –transform이 적용된 데이터 Dict입니다.
Source code in SaigeToolkit/data/transform/transform.py
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 | |
get_resize_scale
classmethod
before_transform_image_size -> after_transform_input_size가 되기 위한 scale을 구합니다. before_transform_image_size * scale = after_transform_input_size
Parameters:
-
transform_params(Dict) –transform시에 저장해둔 parameter 입니다.
Returns:
-
List[float]–List[float]: before_transform_image_size * scale = after_transform_input_size인 scale scale: [scale_width, scale_height]
Source code in SaigeToolkit/data/transform/transform.py
_get_next_revert_operation
staticmethod
_get_next_revert_operation(transform_params: Dict) -> Optional[Operation]
다음으로 할 revert operation을 가져옵니다. operation_stack에서 operation이 제거되지는 않습니다.
Parameters:
-
transform_params(Dict) –transform시에 저장해둔 parameter 입니다.
Returns:
-
Optional[Operation]–Optional[Operation]: 남아있는 revert operation이 있으면 operation을 없으면 None을 반환합니다.
Source code in SaigeToolkit/data/transform/transform.py
revert
classmethod
revert(data: Dict, transform_params: Dict, operation: Optional[Operation] = None) -> Dict
summary
Parameters:
-
data(Dict) –revert operation을 적용할 data dictionary입니다. data는 다음과 같은 구조를 지닙니다. { "key1": { "data" (Union[np.ndarray, torch.Tensor, List[Dict]]): 실제 data입니다. "data_type" (str): 해당 data의 type 입니다. 현재 ["array", "objects"]를 지원합니다. }, "key2": { "data" (Union[np.ndarray, torch.Tensor, List[Dict]]): 실제 data입니다. "data_type" (str): 해당 data의 type 입니다. 현재 ["array", "objects"]를 지원합니다. }, ... }
-
transform_params(Dict) –transform시에 저장해둔 parameter 입니다.
-
operation(Optional[Operation], default:None) –transform에서 revert가 가능한 operation 입니다. Enum class인 Transform.Operation에 있는 항목들을 지원합니다. operation이 None이 아닐 시, 해당 operation 까지 revert를 적용하고, None일 시, 그 다음 revert operation을 적용합니다. Defaults to None.
Raises:
-
RevertOperationNotFoundError–args로 넣은 operation이 남은 revert operation 중에 없을 때 에러를 발생합니다.
Returns:
-
Dict(Dict) –revert operation이 적용된 data dictionary 입니다. 구조는 Args의 data와 같습니다.
Source code in SaigeToolkit/data/transform/transform.py
_revert
classmethod
Source code in SaigeToolkit/data/transform/transform.py
_revert_resize
staticmethod
_revert_resize(data: Optional[Union[Tensor, ndarray, List[Dict]]], revert_params: Optional[Dict], data_type: str) -> Union[Tensor, ndarray, List[Dict]]
Source code in SaigeToolkit/data/transform/transform.py
_revert_roi
staticmethod
_revert_roi(data: Optional[Union[Tensor, ndarray, List[Dict]]], revert_params: Optional[Dict], data_type: str) -> Union[Tensor, ndarray, List[Dict]]
Source code in SaigeToolkit/data/transform/transform.py
is_oversized
staticmethod
InspectionSize 연산에서 resize 되었는지 여부를 판단