Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
__pycache__
.vscode

sauce/
training_summaries
.*
*.zip
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ACM AI Projects Skeleton Code
# 50Whales Skeleton Code

## Setup

Expand Down
7 changes: 4 additions & 3 deletions constants.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
EPOCHS = 100
BATCH_SIZE = 32
N_EVAL = 100
EPOCHS = 1
BATCH_SIZE = 16
N_EVAL = 2
DATA = "../50whales/sauce"
86 changes: 86 additions & 0 deletions data/ImageAugment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import torch
from PIL import Image
from PIL import ImageOps
import pandas as pd
import constants
import torchvision
import torchvision.transforms.functional
import numpy as np


class ImageAugment(torch.utils.data.Dataset):

def __init__(self, path):
self.path = path
self.data = pd.read_csv(constants.DATA + "/train.csv")
self.data.rename(columns=self.data.iloc[0]).drop(self.data.index[0])
self.images = self.data.iloc[:, 0]
self.labels = self.data.iloc[:, 1]
self.transition = list(set(self.labels))
self.whales = self.labels.replace(self.transition, list(range(5005)))

self.transform1 = torchvision.transforms.RandomResizedCrop(size = (448,224), scale = (0.5, 0.75))

self.transform2 = torchvision.transforms.ColorJitter()

self.transform3 = torchvision.transforms.RandomAffine(180)

self.augmentedimages = []
self.augmentedlabels = []


def __getitem__(self, index):
image = Image.open(constants.DATA + self.path + self.images[index])

label = self.whales[index]

image = image.resize((448, 224))
image = ImageOps.grayscale(image)

image = torchvision.transforms.ToTensor()(np.array(image))

return image, label


def __len__(self):
return len(self.labels)

def cutout(self, image):
size = 30
x = np.random.randint(448)
y = np.random.randint(224)
y1 = np.clip(y - size // 2, 0, 224)
y2 = np.clip(y + size // 2, 0, 224)
x1 = np.clip(x - size // 2, 0, 448)
x2 = np.clip(x + size // 2, 0, 448)
image[y1:y2, x1:x2] = 0



def augment(self, index):
image = Image.open(constants.DATA + self.path + self.images[index])

image = image.resize((448,224))

self.augmentedimages.append(torchvision.transforms.ToTensor()(np.array(self.transform1(image))))
self.augmentedlabels.append(index)

self.augmentedimages.append(torchvision.transforms.ToTensor()(np.array(self.transform2(image))))
self.augmentedlabels.append(index)

self.augmentedimages.append(torchvision.transforms.ToTensor()(np.array(self.transform2(image))))
self.augmentedlabels.append(index)

self.augmentedimages.append(torchvision.transforms.ToTensor()(np.array(self.transform3(image))))
self.augmentedlabels.append(index)

self.augmentedimages.append(torchvision.transforms.ToTensor()(np.array(self.transform3(image))))
self.augmentedlabels.append(index)

self.augmentedimages.append(torchvision.transforms.ToTensor()(np.array(image + torch.std(image)*torch.randn(image.size))))
self.augmentedlabels.append(index)

self.augmentedimages.append(torchvision.transforms.ToTensor()(np.array(self.cutout(self, image))))



28 changes: 22 additions & 6 deletions data/StartingDataset.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,35 @@
import os
import torch
from PIL import Image
from PIL import ImageOps
import pandas as pd
import constants
import torchvision


class StartingDataset(torch.utils.data.Dataset):
"""
Dataset that contains 100000 3x224x224 black images (all zeros).
"""

def __init__(self):
pass
def __init__(self, path):
self.path = path
self.data = pd.read_csv(constants.DATA + "/train.csv")
self.data.rename(columns=self.data.iloc[0]).drop(self.data.index[0])
self.images = self.data.iloc[:, 0]
self.labels = self.data.iloc[:, 1]
self.transition = list(set(self.labels))
self.whales = self.labels.replace(self.transition, list(range(5005)))

def __getitem__(self, index):
inputs = torch.zeros([3, 224, 224])
label = 0
image = Image.open(constants.DATA + self.path + self.images[index])
label = self.whales[index]

image = image.resize((448, 224))
image = ImageOps.grayscale(image)

return torchvision.transforms.functional.pil_to_tensor(image), label

return inputs, label

def __len__(self):
return 10000
return len(self.labels)
17 changes: 17 additions & 0 deletions data/tempCodeRunnerFile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
def augment(self, index):
image, label = ImageAugment.__getitem__(index)

self.images.append(self.transform1(image))
self.labels.append(index)

self.images.append(self.transform2(image))
self.labels.append(index)

self.images.append(self.transform2(image))
self.labels.append(index)

self.images.append(self.transform3(image))
self.labels.append(index)

self.images.append(self.transform3(image))
self.labels.append(index)
Loading