Spaces:
Sleeping
Sleeping
Download src/data_preprocessing.py from vikenkd/image_classification: direct link, hf CLI and curl.
- Browser
- Download file 2.32 kB
-
https://huggingface.co/spaces/vikenkd/image_classification/resolve/main/src/data_preprocessing.py
- Command line
-
hf download hf://spaces/vikenkd/image_classification/src/data_preprocessing.py
-
curl -L -o data_preprocessing.py https://huggingface.co/spaces/vikenkd/image_classification/resolve/main/src/data_preprocessing.py
2.32 kB
| import torch | |
| from torch.utils.data import Dataset, DataLoader | |
| from torchvision import datasets, transforms | |
| from .config import DataPreprocessorConfigsInput | |
| class DataPreprocessor: | |
| def __init__(self, configs: DataPreprocessorConfigsInput): | |
| self.configs = configs | |
| self.train_dataset_path = self.configs.train_dataset_path | |
| self.test_dataset_path = self.configs.test_dataset_path | |
| self.shuffle = self.configs.shuffle | |
| self.batch_size = self.configs.batch_size | |
| self.horizontal_flip_prob = self.configs.horizontal_flip_prob # Probability for random horizontal flip | |
| self.image_size = self.configs.image_size | |
| self.mean = self.configs.mean | |
| self.std = self.configs.std | |
| def preprocess(self, label:str = "train") -> transforms.Compose: | |
| if label == "train": | |
| transform = transforms.Compose([ | |
| transforms.Resize((self.image_size, self.image_size)), | |
| transforms.RandomHorizontalFlip(p=self.horizontal_flip_prob), | |
| transforms.RandomRotation(degrees=15), | |
| transforms.ToTensor(), | |
| transforms.Normalize(mean=self.mean, std=self.std), | |
| ]) | |
| else: | |
| transform = transforms.Compose([ | |
| transforms.Resize((self.image_size, self.image_size)), | |
| transforms.ToTensor(), | |
| transforms.Normalize(mean=self.mean, std=self.std) | |
| ]) | |
| return transform | |
| def create_dataloader(self) -> DataLoader: | |
| train_transform = self.preprocess() | |
| test_transform = self.preprocess(label="test") | |
| train_dataset = datasets.ImageFolder(root=self.train_dataset_path, transform=train_transform) | |
| train_dataloader = DataLoader( | |
| dataset=train_dataset, | |
| batch_size=self.batch_size, | |
| shuffle=self.shuffle | |
| ) | |
| test_dataset = datasets.ImageFolder(root=self.test_dataset_path, transform=test_transform) | |
| test_dataloader = DataLoader( | |
| dataset=test_dataset, | |
| batch_size=self.batch_size, | |
| shuffle= not self.shuffle | |
| ) | |
| print(f"Train dataset size: {len(train_dataset)}") | |
| print(f"Test dataset size: {len(test_dataset)}") | |
| return train_dataloader, test_dataloader |