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)
Source code in SaigeToolkit/data/transform/transform.py
inspection_size_resizer
instance-attribute
inspection_size_resizer: Optional[InspectionSizeResizer] = None
Operation
__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
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
collate_function = {'resize': resize_collate, 'padding': padding_collate}[collate]
__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