From 9e870cba9e1a6b60ee3618a8223f845a99fe9750 Mon Sep 17 00:00:00 2001
From: Falguni Ghosh <falguni.ghosh@fau.de>
Date: Sun, 15 Oct 2023 21:21:25 +0000
Subject: [PATCH] Upload New File

---
 .../data.py                                   | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 4_Resnet_Solar_panel_defect_Identification/data.py

diff --git a/4_Resnet_Solar_panel_defect_Identification/data.py b/4_Resnet_Solar_panel_defect_Identification/data.py
new file mode 100644
index 0000000..1d58db6
--- /dev/null
+++ b/4_Resnet_Solar_panel_defect_Identification/data.py
@@ -0,0 +1,40 @@
+from torch.utils.data import Dataset
+import torch
+from pathlib import Path
+from skimage.io import imread
+from skimage.color import gray2rgb
+import numpy as np
+import torchvision as tv
+
+train_mean = [0.59685254, 0.59685254, 0.59685254]
+train_std = [0.16043035, 0.16043035, 0.16043035]
+
+
+class ChallengeDataset(Dataset):
+    # TODO implement the Dataset class according to the description
+    def __init__(self, data, mode):
+        super().__init__()
+        self.data = data
+        self.mode = mode
+        self.length = None
+        if mode == "train":
+            self._transform = tv.transforms.Compose(
+                [tv.transforms.ToPILImage(), tv.transforms.RandomHorizontalFlip(p=0.25),
+                 tv.transforms.ToTensor(), tv.transforms.Normalize(train_mean, train_std)])
+            # self._transform = tv.transforms.Compose([tv.transforms.ToPILImage(), tv.transforms.RandomVerticalFlip(p=0.2), tv.transforms.RandomRotation(degrees=30), tv.transforms.GaussianBlur(kernel_size=3), tv.transforms.ToTensor(), tv.transforms.Normalize(train_mean, train_std)])
+        else:
+            self._transform = tv.transforms.Compose([tv.transforms.ToPILImage(), tv.transforms.ToTensor(), tv.transforms.Normalize(train_mean, train_std)])
+
+    def __len__(self):
+        self.length = self.data.shape[0]
+        return self.length
+
+    def __getitem__(self, index):
+        image = imread((self.data.iloc[index])["filename"])
+        rgb_image = gray2rgb(image)
+        image_tensor = self._transform(rgb_image).type(torch.Tensor)
+        label = (self.data.iloc[index])[["crack", "inactive"]]
+        label_np = label.to_numpy().astype(float)
+        label_tensor = torch.from_numpy(label_np).type(torch.Tensor)
+        return image_tensor, label_tensor
+
-- 
GitLab