Allinone / recycleModel.py
RANA
using wsgi which is gunicorn
b573744
raw
history blame
No virus
1.62 kB
import cv2
import numpy as np
import tensorflow as tf
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
class RecycleModel:
def __init__(self):
self.vgg16_model = Sequential()
self.pretrained_model = tf.keras.applications.VGG16(
include_top=False,
weights="imagenet",
input_shape=(180, 180, 3),
pooling='max',
classes=7
)
for layer in self.pretrained_model.layers:
layer.trainable = False
self.vgg16_model.add(self.pretrained_model)
self.vgg16_model.add(Flatten())
self.vgg16_model.add(Dense(512, activation='relu'))
self.vgg16_model.add(Dense(7, activation='softmax'))
self.vgg16_model.compile(optimizer=Adam(learning_rate=0.001),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
self.vgg16_model.load_weights('updated_vgg16_weights.h5')
self.class_names = ['1_polyethylene_PET', '2_high_density_polyethylene_PE-HD', '3_polyvinylchloride_PVC',
'4_low_density_polyethylene_PE-LD', '5_polypropylene_PP', '6_polystyrene_PS', '8_no_plastic']
def recyclePrediction(self, img):
image_resized = cv2.resize(img, (180, 180))
image = np.expand_dims(image_resized, axis=0)
pred = self.vgg16_model.predict(image)
output_class = self.class_names[np.argmax(pred)]
return output_class