-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpreprocessing.py
More file actions
82 lines (74 loc) · 2.85 KB
/
preprocessing.py
File metadata and controls
82 lines (74 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
import keras.utils as image
from PIL import Image,ImageOps
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import shutil
import cv2
import os
import numpy as np
from sklearn.model_selection import train_test_split
import random
folders=['Sirih', 'Nangka', 'Belimbing Wuluh', 'Kemangi', 'Jeruk Nipis', 'Jambu Biji', 'Seledri', 'Lidah Buaya', 'Pandan', 'Pepaya']
def PrimaryAugment(img_path,Aug_dir):
aug_img=[]
image=Image.open(img_path)
image=image.resize((400,400))
width, height = image.size
aug_img.append(np.array(ImageOps.grayscale(image)))
aug_img.append(np.array(ImageOps.equalize(image)))
image = np.array(image)
aug_img.append(image)
Noise = np.random.normal(0,10, (height, width,3)).astype(np.uint8)
aug_img.append(image+Noise)
aug_img.append((-1 * image + 255).astype(np.uint8))
aug_img.append((5*image+255).astype(np.uint8))
aug_img.append((cv2.GaussianBlur(image,(5,5),sigmaX=10,sigmaY=10)).astype(np.uint8))
for i in range(len(aug_img)):
plt.imsave(f'{Aug_dir}/{img_path.split("/")[-1]}{i}.jpg',aug_img[i])
def SecondaryAugment(img_path,Aug_dir):
image=Image.open(img_path)
for i in range(6):
theta=random.randint(90,359)
new_image = image.rotate(theta)
new_image=np.array(new_image)
plt.imsave(f'{Aug_dir}/{img_path.split("/")[-1]}{i}.jpg',new_image)
def AUG():
os.mkdir('Aug_data')
os.mkdir('new_Aug_data')
for i in folders:
os.mkdir(f'Aug_data/{i}')
os.mkdir(f'new_Aug_data/{i}')
files=os.listdir(f'Herb/{i}')
for j in files:
PrimaryAugment(f'Herb/{i}/{j}',f'Aug_data/{i}')
SecondaryAugment(f'Herb/{i}/{j}',f'new_Aug_data/{i}')
def Train_test_split(process):
os.mkdir('train')
os.mkdir('test')
os.mkdir('validation')
for i in folders:
os.mkdir(f'train/{i}')
os.mkdir(f'test/{i}')
os.mkdir(f'validation/{i}')
for i in folders:
if process=='new':
all_files=os.listdir(f'new_Aug_data/{i}')
else:
all_files=os.listdir(f'Aug_data/{i}')
Train_files,Test_files=train_test_split(all_files,test_size=0.2)
Train_files,val_files=train_test_split(Train_files,test_size=0.1)
for j in val_files:
if process=='new':
shutil.copy(f'new_Aug_data/{i}/{j}',f'validation/{i}')
else:
shutil.copy(f'Aug_data/{i}/{j}',f'validation/{i}')
for j in Train_files:
if process=='new':
shutil.copy(f'new_Aug_data/{i}/{j}',f'train/{i}')
else:
shutil.copy(f'Aug_data/{i}/{j}',f'train/{i}')
for j in Test_files:
if process=='new':
shutil.copy(f'new_Aug_data/{i}/{j}',f'test/{i}')
else:
shutil.copy(f'Aug_data/{i}/{j}',f'test/{i}')