base_dataset
data.dataset.base_dataset
모든 데이터셋 구현에 사용되는 기본 클래스를 정의합니다.
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 되었는지 여부를 판단
Source code in SaigeToolkit/data/transform/transform.py
DummyAttribute
ABCMeta
Bases: ABCMeta
"abstract_attribute" from:\ https://stackoverflow.com/questions/23831510/abstract-attribute-not-property/50381071#50381071
__call__
Source code in SaigeToolkit/data/dataset/base_dataset.py
SaigeDataset
SaigeDataset(crop: Optional[dict] = None, transform: Optional[dict] = None, collate: Optional[Callable[[List[dict]], dict]] = None, device: device = torch.device('cpu'), **neglect: dict)
Bases: Dataset
Saige's basic dataset class.
Attributes:
-
crop_fn(Optional[Callable[[dict], List[dict]]) –function cropping image data into image patch data.
-
transform(Type[Transform]) –transform class for transforming to a single image data.
-
to_tensor(Callable[[Union[Image.Image, np.ndarray], torch.Tensor]) –data returning as Tensor type
-
n_patch(int) –number of patches when crop_fn is used.
-
collate_function(Callable[[List[dict]], dict]) –function list of data collating into one batch data
initializing Saige base dataset.
Parameters:
-
crop(Optional[dict], default:None) –config for crop function. Defaults to None.
-
transform(Optional[dict], default:None) –config for transforming to a single raw data
-
collate(Optional[Callable[[List[dict]], dict]], default:None) –list of data collating into one batch data. if None, torch.utils basic collate function would be used. Defaults to None.
-
device(device, default:device('cpu')) –gpu device
Source code in SaigeToolkit/data/dataset/base_dataset.py
collate_function
instance-attribute
__len__
data_on_memory
To store data in RAM memory (faster data loading),
put all loaded data ( use self.load_raw_data() ) in list self.data_on_memory.
Or define self.data_on_memory as empty list to load data from filesystem everytime.
Source code in SaigeToolkit/data/dataset/base_dataset.py
stack_data_on_memory
Stack all data on RAM memory for quick-loading purpose. output would be saved on class attribute.
Returns:
-
List[dict]–List[dict]: Entire data list-dict.
Source code in SaigeToolkit/data/dataset/base_dataset.py
load_raw_data
load_image
Source code in SaigeToolkit/data/dataset/base_dataset.py
load_label
abstractmethod
__getitem__
dataset default getitem function. data is first loaded, then processed as following order: resize, augmentation, transform to torch.Tensor. data could be loaded from file_system (load_raw_data) or RAM memory (data_on_memory).
Parameters:
-
index(int) –data item index.
Returns:
-
Union[dict, List[dict]]–Union[dict, List[dict]]: single data, or cropped data list when crop_fn exists.
Source code in SaigeToolkit/data/dataset/base_dataset.py
process_data
data processing after raw loading.
- resize: Resize Image and Label
- btw_resize_aug: Dummy function for user customization
- augmentation: Process augmentation defined in util/augmentation
- btw_aug_transform: Dummy function for user customization
- to_tensor: Transform data to torch tensor
Parameters:
-
data(dict) –raw data dict
Returns:
-
dict(dict) –processed data dict
Source code in SaigeToolkit/data/dataset/base_dataset.py
to_tensor
to_tensor items in data into torch.Tensor (if convertible)
Parameters:
-
data(dict, default:{}) –raw data dict
Returns:
-
dict(dict) –tensorized data dict
Source code in SaigeToolkit/data/dataset/base_dataset.py
resize_collate
Example collate function with resizing items.
Parameters:
-
batch(List[dict]) –list of data dicts
Returns:
-
dict(dict) –resized-and-collated data dict
Source code in SaigeToolkit/data/dataset/base_dataset.py
padding_collate
Example collate function with padding items.
Parameters:
-
batch(List[dict]) –list of data dicts
Returns:
-
dict(dict) –padded-and-collated data dict
Source code in SaigeToolkit/data/dataset/base_dataset.py
calculate_patch_number
When crop_fn is activated, calculate number of text patches.
Parameters:
-
files(Optional[List[dict]], default:None) –list of meta data dict. if None, calculate patch_number from self.files attribute. Defaults to None.
Returns:
-
int(int) –number of patches in meta data list
files
Source code in SaigeToolkit/data/dataset/base_dataset.py
get_crop_fn
get_crop_fn(_target_: Optional[str] = None, **cfg_crop: dict) -> Optional[BaseCropper]
getting crop function
Parameters:
-
cfg_crop(dict, default:{}) –config dict for building cropper
Returns:
-
Optional[BaseCropper]–Optional[BaseCropper]: saige cropper object. if cfg_crop is None, return None