touch ups

This commit is contained in:
Kamila Bobkowska 2020-05-10 16:27:46 +00:00
parent 1aeb9bf1fa
commit e8bc0b6722

View File

@ -1,114 +1,117 @@
import os
import numpy as np
import random
import shutil
from keras.models import Sequential
from keras.layers import Conv2D, Flatten, MaxPooling2D, Dense
from keras.preprocessing import image
#dataset from https://www.kaggle.com/asdasdasasdas/garbage-classification
'''#sepperating the file into training and testing data, creation of folders by hand removal of 75 images from papers for a more even distribution
def sepperate(type):
for i in type:
folder = "Garbage classification\\Garbage classification\\" + i
destination = "Garbage classification\\testset\\" + i
howmany = len(os.listdir(folder))
for j in range(int(howmany*0.2)):
move1 = random.choice(os.listdir(folder))
source = "Garbage classification\\Garbage classification\\" + i + "\\" + move1
d = shutil.move(source, destination, copy_function = shutil.copytree)
types = ["cardboard", "glass", "metal", "paper", "plastic"]
sepperate(types)
os.rename("Garbage classification\\Garbage classification", "Garbage classification\\trainset")
'''
classifier = Sequential()
classifier.add(Conv2D(32, (3, 3), input_shape=(110, 110, 3), activation = "relu"))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Conv2D(64, (3, 3), activation = "relu"))
classifier.add(MaxPooling2D(pool_size=(2, 2)))
# this layer in ver 4
classifier.add(Conv2D(32, (3, 3), activation = "relu"))
classifier.add(MaxPooling2D(pool_size=(2, 2)))
# -----------------
classifier.add(Flatten())
classifier.add(Dense(activation = "relu", units = 64 ))
classifier.add(Dense(activation = "softmax", units = 5))
classifier.compile(optimizer = "adam", loss = "binary_crossentropy", metrics = ["accuracy"])
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.1,
zoom_range=0.1,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True,
vertical_flip=True,
)
test_datagen = ImageDataGenerator(
rescale=1./255,
validation_split=0.1
)
train_generator = train_datagen.flow_from_directory(
"Garbage classification\\trainset",
target_size=(110, 110),
batch_size=16,
class_mode='categorical',
#seed=0
)
test_generator = test_datagen.flow_from_directory(
"Garbage classification\\testset",
target_size=(110, 110),
batch_size=16,
class_mode='categorical',
)
#Teaching the classifier
'''classifier.fit_generator( train_generator, steps_per_epoch = 150, epochs = 25, validation_data = test_generator )
classifier.save_weights('model_ver_4.h5')'''
import matplotlib.pyplot as plt
labels = (train_generator.class_indices)
labels = dict((value,key) for key,value in labels.items())
classifier.load_weights("model_ver_4.h5")
import random
def getTrashPhoto(x, type):
for i in range(x):
kind = random.choice(type)
path = "Garbage classification\\testset\\" + kind
file = random.choice(os.listdir(path))
path = "Garbage classification\\testset\\" + kind + "\\" + file
gz = image.load_img(path, target_size = (110,110))
ti = image.img_to_array(gz)
ti=np.array(ti)/255.0
ti = np.expand_dims(ti, axis = 0)
prediction = classifier.predict(ti)
plt.subplot(1, 3, i+1)
plt.imshow(gz)
plt.title("AI thinks:%s \nReality:\n %s" % (labels[np.argmax(prediction)], file))
plt.show()
types = ["cardboard", "glass", "metal", "paper", "plastic"]
type = ["metal"]
getTrashPhoto(3, types)
plt.show()
import os
import numpy as np
import random
import shutil
from keras.models import Sequential
from keras.layers import Conv2D, Flatten, MaxPooling2D, Dense
from keras.preprocessing import image
from keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
import random
#dataset from https://www.kaggle.com/asdasdasasdas/garbage-classification
'''#sepperating the file into training and testing data, creation of folders by hand removal of 75 images from papers for a more even distribution
def sepperate(type):
for i in type:
folder = "Garbage classification\\Garbage classification\\" + i
destination = "Garbage classification\\testset\\" + i
howmany = len(os.listdir(folder))
for j in range(int(howmany*0.2)):
move1 = random.choice(os.listdir(folder))
source = "Garbage classification\\Garbage classification\\" + i + "\\" + move1
d = shutil.move(source, destination, copy_function = shutil.copytree)
types = ["cardboard", "glass", "metal", "paper", "plastic"]
sepperate(types)
os.rename("Garbage classification\\Garbage classification", "Garbage classification\\trainset")
'''
classifier = Sequential()
classifier.add(Conv2D(32, (3, 3), input_shape=(110, 110, 3), activation = "relu"))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Conv2D(64, (3, 3), activation = "relu"))
classifier.add(MaxPooling2D(pool_size=(2, 2)))
# this layer in ver 4
classifier.add(Conv2D(32, (3, 3), activation = "relu"))
classifier.add(MaxPooling2D(pool_size=(2, 2)))
# -----------------
classifier.add(Flatten())
classifier.add(Dense(activation = "relu", units = 64 ))
classifier.add(Dense(activation = "softmax", units = 5))
classifier.compile(optimizer = "adam", loss = "binary_crossentropy", metrics = ["accuracy"])
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.1,
zoom_range=0.1,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True,
vertical_flip=True,
)
test_datagen = ImageDataGenerator(
rescale=1./255,
validation_split=0.1
)
train_generator = train_datagen.flow_from_directory(
"Garbage classification\\trainset",
target_size=(110, 110),
batch_size=16,
class_mode='categorical',
#seed=0
)
test_generator = test_datagen.flow_from_directory(
"Garbage classification\\testset",
target_size=(110, 110),
batch_size=16,
class_mode='categorical',
)
#Teaching the classifier
'''classifier.fit_generator( train_generator, steps_per_epoch = 165, epochs = 32, validation_data = test_generator )
classifier.save_weights('model_ver_5.h5')'''
labels = (train_generator.class_indices)
labels = dict((value,key) for key,value in labels.items())
classifier.load_weights("model_ver_5.h5")
def getTrashPhoto(x, type):
for i in range(x):
kind = random.choice(type)
path = "Garbage classification\\testset\\" + kind
file = random.choice(os.listdir(path))
path = "Garbage classification\\testset\\" + kind + "\\" + file
var = image.load_img(path, target_size = (110,110))
ti = image.img_to_array(var)
ti=np.array(ti)/255.0
ti = np.expand_dims(ti, axis = 0)
prediction = classifier.predict(ti)
plt.subplot(1, 3, i+1)
plt.imshow(var)
plt.title("AI thinks:%s \nReality:\n %s" % (labels[np.argmax(prediction)], file))
plt.show()
types = ["cardboard", "glass", "metal", "paper", "plastic"]
type = ["metal"]
getTrashPhoto(3, types)
plt.show()