srproj_dataset
data.dataset.srproj_dataset
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
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
__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
SrprojDataset
SrprojDataset(code: Union[str, List[Union[str, dict]]], mode: Optional[str] = None, two_class: bool = False, split: str = 'Training', preload_data_on_memory: bool = False, srproj_params: Optional[dict] = None, **cfg_dataset: dict)
Bases: SaigeDataset
Dataset class with building data from srproj file. Basic structure of dataset class is defined in SaigeDataset. SrprojDataset class only defines data loading from srproj file.
Attributes:
-
files(List[dict]) –meta_data dict list from srproj file.
-
n_classes(int) –number of classes of data. fix to 2 if two_class mode is on.
-
classes(List[str]) –list of class names for each class index. meta_data: only contains information about
how to load data -
n_patch(int) –number of patches when crop_fn is used.
-
data_on_memory(List[dict]) –list of loaded data dicts if
preload_data_on_memoryis activated
initializing SrprojDataset
Parameters:
-
code(Union[str, List[Union[str, dict]]]) –dataset code(s) with srproj params. 여러 srproj를 사용하는 경우, 각 srproj_param을 dictionary 형태로 추가할 수 있습니다. 이 경우, "srproj_params" 파라미터를 각자의 srproj_param으로 업데이트 하여 사용합니다.
-
mode(Optional[str], default:None) –data label type. Defaults to None.
-
two_class(bool, default:False) –two_class mode selector. Defaults to False.
-
split(str, default:'Training') –["Training", "Validation"]. Defaults to "Training".
-
preload_data_on_memory(bool, default:False) –whether pre-load all data and save on RAM memory. Defaults to False.
-
srproj_params(dict, default:None) –read_srproj함수에 전달하는 추가적인 파라미터들 입니다. 현재는 이미지 경로 핸들링을 위한 파라미터들이 있으며, 지속적으로 추가될 수 있습니다. -
cfg_dataset(dict, default:{}) –config dicts for mother class
Source code in SaigeToolkit/data/dataset/srproj_dataset.py
load_label
load label data from file-system
Parameters:
-
file(dict) –meta data dict
Returns:
-
dict(dict) –label data as dict
Source code in SaigeToolkit/data/dataset/srproj_dataset.py
read_srproj
read_srproj(code: str, split: str, two_class: bool = False, mode: Optional[str] = None, use_absolute_path: bool = False, srproj_image_directory: Optional[str] = None, system_image_directory: Optional[str] = None, get_class_colors: bool = False, skip_problematic_files: bool = False) -> Tuple[List[Dict], int, Union[List[str], List[Dict]]]
read srproj dataset from file-system.
Parameters:
-
code(str) –dataset code.
-
split(str) –split dataset, "Training" or "Validation".
-
two_class(bool, default:False) –load data as two class mode (ex) normal <-> abnormal)
-
mode(Optional[str], default:None) –select data label type.
-
use_absolute_path(bool, default:False) –use the image path in srproj as is.
-
srproj_image_directory(Optional[str], default:None) –srproj 파일에 작성된 이미지 경로를 현재 시스템 상의 이미지 경로로 변환하기 위해 치환해야 하는 이미지 폴더 경로. None이면 SaigeDatabase 규칙 사용.
-
system_image_directory(Optional[str], default:None) –코드가 구동되는 시스템 상의 이미지 폴더 경로. None이면 SaigeDatabase 규칙 사용.
-
get_class_colors(bool)–srproj에 정의된 각 클래스의 color를 받을지 여부. True이면
-
skip_problematic_files(bool)–srproj 파일에 작성된 이미지 경로로부터 이미지들을 읽을 때, 해당 파라미터가 True 라면, 파일이 실제 존재하지 않거나, 읽다가 문제가 발생할 경우 해당 파일을 제외하고 나머지 파일을 계속 읽음. 만약, False라면 Error를 raise 함.
Returns:
-
Tuple[List[Dict], int, Union[List[str], List[Dict]]]–Tuple[List[Dict], int, Union[List[str], List[Dict]]]: list of meta data dicts, number of classes, and list of class names or dict
Note
.sproj 파일에는 각 이미지들의 경로와 라벨 정보 등이 포함되어 있습니다.
이때 이미지 경로는 해당 파일을 생성한 PC 기준의 절대 경로로 작성되어 있기 때문에, 현재 이 코드가 실행되는 시스템에서의 경로로 변환해 주어야 합니다.
현재 이미지 경로 변환 옵션은 3가지가 존재합니다.
1. sproj를 생성한 PC에서 코드를 실행하는 경우,
use_absolute_path= True로 세팅하면 srproj에 작성된 이미지 경로를 그대로 사용합니다.
2. 이미지와 srproj가 SaigeDatabase 룰에 맞게 구성된 경우,
이미지는 images 폴더에 하위에 있고 (root/images/.../xxx.png)
srproj는 images 폴더보다 한 단계 아래 경로에 있어야 합니다 (root/projects/xxx.srproj)
이때는srproj_image_directory= None,system_image_directory= None 으로 설정합니다.
3. 이미지와 srproj가 SaigeDatabase 룰을 따르지 않는 경우,srproj_image_directory와system_image_directory`를 설정하면
srproj에 작성된 이미지 경로를 다음 규칙으로 변환합니다:
{srproj_image_directory}/.../xxx.png -> {system_image_directory}/.../xxx.png
Source code in SaigeToolkit/data/dataset/srproj_reader.py
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 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 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 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | |
load_srproj_label
load single data dict from srproj meta data.
Parameters:
-
file(Dict) –single meta data dict
-
use_crop_fn(bool, default:False) –Whether to use the crop function. Defaults to False.
Raises:
-
NotImplementedError–only four modes are available. ["Classification", "Detection", "Segmentation", "OpticalCharacterRecognition"]
Returns:
-
Dict(Dict) –label data as dict