Updating models
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -2,11 +2,11 @@ from itertools import filterfalse
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.layers.pooling import MaxPool2D
|
||||
from numpy.lib.shape_base import expand_dims
|
||||
#from keras.layers.pooling import MaxPool2D
|
||||
#from numpy.lib.shape_base import expand_dims
|
||||
|
||||
sys.path.append('c:/git/keras')
|
||||
sys.path.append('c:/git/absl')
|
||||
#sys.path.append('c:/git/keras')
|
||||
#sys.path.append('c:/git/absl')
|
||||
|
||||
# installed
|
||||
# py -mpip install numpy
|
||||
@@ -17,21 +17,21 @@ sys.path.append('c:/git/absl')
|
||||
# c:\users\skess\appdata\local\programs\python\python39\lib\site-packages
|
||||
|
||||
import keras
|
||||
from keras.optimizers import adam_v2
|
||||
from tensorflow.keras.optimizers import Adam
|
||||
from keras.datasets import cifar10
|
||||
from keras.preprocessing.image import ImageDataGenerator
|
||||
from keras.models import Sequential
|
||||
from keras.utils import np_utils
|
||||
from keras.layers import Dense
|
||||
#from keras.optimizers import adam_v2
|
||||
#from tensorflow.keras.optimizers import Adam
|
||||
#from keras.datasets import cifar10
|
||||
#from keras.preprocessing.image import ImageDataGenerator
|
||||
#from keras.models import Sequential
|
||||
#from keras.utils import np_utils
|
||||
#from keras.layers import Dense
|
||||
from keras.layers import Activation
|
||||
from keras.layers import Flatten
|
||||
from keras.layers import Dropout
|
||||
#from keras.layers import Flatten
|
||||
#from keras.layers import Dropout
|
||||
from keras.layers import BatchNormalization
|
||||
from keras.layers import Conv2D
|
||||
from keras.layers import MaxPooling2D
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
#from keras.layers import MaxPooling2D
|
||||
#from keras.callbacks import ModelCheckpoint
|
||||
#from tensorflow.keras.callbacks import EarlyStopping
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
|
||||
@@ -35,7 +35,9 @@
|
||||
# c:\users\skess\appdata\local\programs\python\python39\lib\site-packages
|
||||
|
||||
import keras
|
||||
from keras.preprocessing.image import ImageDataGenerator
|
||||
#from keras.preprocessing.image import ImageDataGenerator
|
||||
from keras.src.legacy.preprocessing.image import ImageDataGenerator
|
||||
|
||||
from flask import Flask, render_template, send_file, request
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
@@ -124,6 +126,24 @@ def predict_resnet50():
|
||||
response=str(predictions)+'-->'+str(threshold_output)
|
||||
return response
|
||||
|
||||
# New model updated in October 2024
|
||||
@app.route('/predict_resnet50_20241024_270', methods=['GET','POST'])
|
||||
def predict_resnet50_20241024_270():
|
||||
print('/predict_resnet50_20241024_270')
|
||||
test_image=request.get_data()
|
||||
test_image = PIL.Image.open(io.BytesIO(test_image))
|
||||
test_image = test_image.convert('L')
|
||||
test_array=keras.preprocessing.image.img_to_array(test_image)
|
||||
batch_test_array=np.array([test_array])
|
||||
predictions=resnet50_20241024_270_model.predict(batch_test_array)
|
||||
if type(predictions) == list:
|
||||
average_prediction = sum(predictions)/len(predictions)
|
||||
threshold_output = np.where(average_prediction > 0.5, 1, 0)
|
||||
else :
|
||||
threshold_output = np.where(predictions > 0.5, 1, 0)
|
||||
response=str(predictions)+'-->'+str(threshold_output)
|
||||
return response
|
||||
|
||||
# This version expects the image to be of the form (x,x,3).
|
||||
@app.route('/predict_resnet50B', methods=['GET','POST'])
|
||||
def predict_resnet50B():
|
||||
@@ -175,15 +195,23 @@ def process_image():
|
||||
|
||||
if __name__ == '__main__':
|
||||
resnet50_model_name='../Weights/resnet50.h5'
|
||||
resnet50_model = keras.models.load_model(resnet50_model_name)
|
||||
print('Loading {model_name}'.format(model_name=resnet50_model_name))
|
||||
resnet50_model = keras.models.load_model(resnet50_model_name)
|
||||
|
||||
resnet50_20241024_270_model_name='../Weights/resnet50_20241024_270.h5.keras'
|
||||
print('Loading {model_name}'.format(model_name=resnet50_20241024_270_model_name))
|
||||
resnet50_20241024_270_model = keras.models.load_model(resnet50_20241024_270_model_name)
|
||||
|
||||
resnet50b_model_name='../Weights/resnet50B.h5'
|
||||
print('Loading {model_name}'.format(model_name=resnet50b_model_name))
|
||||
resnet50b_model = keras.models.load_model(resnet50b_model_name)
|
||||
|
||||
vgg16_model_name='../Weights/vggnet16.h5'
|
||||
print('Loading {model_name}'.format(model_name=vgg16_model_name))
|
||||
vgg16_model=keras.models.load_model(vgg16_model_name)
|
||||
|
||||
lenet_model_name='../Weights/lenet5.h5'
|
||||
print('Loading {model_name}'.format(model_name=lenet_model_name))
|
||||
lenet_model=keras.models.load_model(lenet_model_name)
|
||||
|
||||
port = int(os.environ.get('PORT',5000))
|
||||
|
||||
@@ -1,11 +1,24 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.layers.pooling import MaxPool2D
|
||||
from keras.optimizer_v2 import gradient_descent
|
||||
from keras.optimizers import SGD
|
||||
from keras.optimizers import Adam
|
||||
from tensorflow.keras.callbacks import TensorBoard
|
||||
import keras
|
||||
#from keras.models import Model
|
||||
from keras.src.legacy.preprocessing.image import ImageDataGenerator
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
#from tensorflow.keras.callbacks import ReduceLROnPlateau
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
#from keras import regularizers
|
||||
#from keras import optimizers
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
from resnet50 import *
|
||||
import math
|
||||
from time import time
|
||||
|
||||
sys.path.append('c:/git/keras')
|
||||
sys.path.append('c:/git/absl')
|
||||
# Notes: 10/23/2024 Achived 53.85%
|
||||
|
||||
# installed
|
||||
# py -mpip install numpy
|
||||
@@ -15,39 +28,14 @@ sys.path.append('c:/git/absl')
|
||||
# py -mpip install matplotlib
|
||||
# c:\users\skess\appdata\local\programs\python\python39\lib\site-packages
|
||||
|
||||
import keras
|
||||
from keras.models import Model
|
||||
#from keras.optimizers import *
|
||||
#from keras.optimizers import adam_v2
|
||||
from tensorflow.keras.optimizers import Adam
|
||||
from keras.datasets import cifar10
|
||||
from keras.preprocessing.image import ImageDataGenerator
|
||||
from keras.models import Sequential
|
||||
from keras.utils import np_utils
|
||||
from keras.layers import Dense
|
||||
from keras.layers import Activation
|
||||
from keras.layers import Flatten
|
||||
from keras.layers import Dropout
|
||||
from keras.layers import BatchNormalization
|
||||
from keras.layers import Conv2D
|
||||
from keras.layers import MaxPooling2D
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from tensorflow.keras.callbacks import ReduceLROnPlateau
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
# from inception_module import *
|
||||
from resnet50 import *
|
||||
import math
|
||||
# Create a TensorBoard instance with the path to the logs directory. Before training, in Terminal, run tensorboard --logdir=logs/
|
||||
tensorboard = TensorBoard(log_dir='logs/{}'.format(time()))
|
||||
|
||||
# RESNET50 ARCHITECTURE
|
||||
image_size = (128, 128)
|
||||
|
||||
#model_weights_file='model_resnet50.hdf5'
|
||||
model_name='resnet50.h5'
|
||||
model_name='resnet50_20241022.h5.keras'
|
||||
|
||||
train_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
@@ -82,7 +70,7 @@ metric='accuracy'
|
||||
reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor='val_loss',factor=np.sqrt(0.1),patience=5,min_lr=0.5e-6)
|
||||
|
||||
#Optimizer
|
||||
optimizer=gradient_descent.SGD(learning_rate=initial_lrate, momentum=0.9, nesterov=False)
|
||||
optimizer=SGD(learning_rate=initial_lrate, momentum=0.9, nesterov=False)
|
||||
|
||||
# Checkpointer
|
||||
checkpointer=ModelCheckpoint(filepath=model_name,monitor=metric,verbose=1,save_best_only=True)
|
||||
@@ -90,16 +78,15 @@ checkpointer=ModelCheckpoint(filepath=model_name,monitor=metric,verbose=1,save_b
|
||||
#Early Stopping
|
||||
early_stopping=EarlyStopping(monitor='val_loss',mode='min',verbose=1,patience=patience_on_early_stop)
|
||||
|
||||
# def resnet50(input_shape,classes)
|
||||
model=resnet50(input_shape,1)
|
||||
model.summary()
|
||||
model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy'])
|
||||
history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[reduce_lr,early_stopping,checkpointer])
|
||||
history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[tensorboard,reduce_lr,early_stopping,checkpointer])
|
||||
# leave the following line commented out because the early stopping is in place
|
||||
#model.save(model_name)
|
||||
|
||||
# plot the learning curves
|
||||
pyplot.plot(history.history['accuracy'],label='train')
|
||||
pyplot.plot(history.history['val_accuracy'],label='validation')
|
||||
pyplot.legend()
|
||||
pyplot.show()
|
||||
# pyplot.plot(history.history['accuracy'],label='train')
|
||||
# pyplot.plot(history.history['val_accuracy'],label='validation')
|
||||
# pyplot.legend()
|
||||
# pyplot.show()
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.layers.pooling import MaxPool2D
|
||||
from keras.optimizer_v2 import gradient_descent
|
||||
|
||||
sys.path.append('c:/git/keras')
|
||||
sys.path.append('c:/git/absl')
|
||||
|
||||
# installed
|
||||
# py -mpip install numpy
|
||||
# py -mpip show numpy
|
||||
# py -mpip install tensorflow
|
||||
# py -mpip show tensorflow
|
||||
# py -mpip install matplotlib
|
||||
# c:\users\skess\appdata\local\programs\python\python39\lib\site-packages
|
||||
|
||||
import keras
|
||||
from keras.models import Model
|
||||
#from keras.optimizers import *
|
||||
#from keras.optimizers import adam_v2
|
||||
from tensorflow.keras.optimizers import Adam
|
||||
from keras.datasets import cifar10
|
||||
from keras.preprocessing.image import ImageDataGenerator
|
||||
from keras.models import Sequential
|
||||
from keras.utils import np_utils
|
||||
from keras.layers import Dense
|
||||
from keras.layers import Activation
|
||||
from keras.layers import Flatten
|
||||
from keras.layers import Dropout
|
||||
from keras.layers import BatchNormalization
|
||||
from keras.layers import Conv2D
|
||||
from keras.layers import MaxPooling2D
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from tensorflow.keras.callbacks import ReduceLROnPlateau
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
from resnet50 import *
|
||||
import math
|
||||
|
||||
# RESNET50 ARCHITECTIURE
|
||||
image_size = (128, 128)
|
||||
|
||||
# November 11, 2022 : This model scored 78.95 in Total Accuracy Weights=../Weights/resnet50.h5.v2
|
||||
|
||||
model_name='resnet50.h5'
|
||||
|
||||
train_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
|
||||
label_mode="binary",
|
||||
subset="training",
|
||||
validation_split=.20,
|
||||
image_size=image_size,
|
||||
color_mode='grayscale',
|
||||
batch_size=32,
|
||||
seed=50
|
||||
)
|
||||
val_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
label_mode="binary",
|
||||
subset="validation",
|
||||
validation_split=.20,
|
||||
image_size=image_size,
|
||||
color_mode='grayscale',
|
||||
batch_size=32,
|
||||
seed=50
|
||||
)
|
||||
|
||||
input_shape=(128,128,1)
|
||||
epochs=200
|
||||
initial_lrate=0.01
|
||||
batch_size=128
|
||||
patience_on_early_stop=10
|
||||
reduce_factor=np.sqrt(0.1)
|
||||
metric='val_loss'
|
||||
mode='min'
|
||||
|
||||
#ReduceLROnPlateau
|
||||
reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor=metric,factor=np.sqrt(0.1),patience=5,min_lr=0.5e-6,verbose=True)
|
||||
|
||||
#Optimizer
|
||||
optimizer=gradient_descent.SGD(learning_rate=initial_lrate, momentum=0.9, nesterov=False)
|
||||
|
||||
# Checkpointer
|
||||
checkpointer=ModelCheckpoint(filepath=model_name,mode=mode,monitor=metric,verbose=1,save_best_only=True)
|
||||
|
||||
#Early Stopping
|
||||
early_stopping=EarlyStopping(monitor=metric,mode=mode,verbose=1,patience=patience_on_early_stop)
|
||||
|
||||
# def resnet50(input_shape,classes)
|
||||
model=resnet50(input_shape,1)
|
||||
model.summary()
|
||||
#model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy','mse'])
|
||||
model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy','mse'])
|
||||
history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[early_stopping,checkpointer])
|
||||
#model.save(model_name)
|
||||
|
||||
# plot the learning curves
|
||||
pyplot.plot(history.history['accuracy'],label='train')
|
||||
pyplot.plot(history.history['val_accuracy'],label='validation')
|
||||
pyplot.plot(history.history['mse'],label='mse')
|
||||
pyplot.plot(history.history[metric],label=metric)
|
||||
pyplot.legend()
|
||||
pyplot.show()
|
||||
@@ -1,120 +0,0 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.layers.pooling import MaxPool2D
|
||||
from keras.optimizer_v2 import gradient_descent
|
||||
|
||||
sys.path.append('c:/git/keras')
|
||||
sys.path.append('c:/git/absl')
|
||||
|
||||
# installed
|
||||
# py -mpip install numpy
|
||||
# py -mpip show numpy
|
||||
# py -mpip install tensorflow
|
||||
# py -mpip show tensorflow
|
||||
# py -mpip install matplotlib
|
||||
# c:\users\skess\appdata\local\programs\python\python39\lib\site-packages
|
||||
|
||||
import keras
|
||||
from keras.models import Model
|
||||
#from keras.optimizers import *
|
||||
#from keras.optimizers import adam_v2
|
||||
from tensorflow.keras.optimizers import Adam
|
||||
from keras.datasets import cifar10
|
||||
from keras.preprocessing.image import ImageDataGenerator
|
||||
from keras.models import Sequential
|
||||
from keras.utils import np_utils
|
||||
from keras.layers import Dense
|
||||
from keras.layers import Activation
|
||||
from keras.layers import Flatten
|
||||
from keras.layers import Dropout
|
||||
from keras.layers import BatchNormalization
|
||||
from keras.layers import Conv2D
|
||||
from keras.layers import MaxPooling2D
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from tensorflow.keras.callbacks import ReduceLROnPlateau
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
import numpy as np
|
||||
import tensorflow
|
||||
# from inception_module import *
|
||||
from resnet50 import *
|
||||
import math
|
||||
|
||||
# RESNET50 ARCHITECTIURE
|
||||
image_size = (128, 128)
|
||||
|
||||
#model_weights_file='model_resnet50.hdf5'
|
||||
model_name='resnet50.h5'
|
||||
|
||||
train_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
|
||||
label_mode="binary",
|
||||
subset="training",
|
||||
validation_split=.20,
|
||||
image_size=image_size,
|
||||
color_mode='grayscale',
|
||||
batch_size=32,
|
||||
seed=50
|
||||
)
|
||||
val_ds = tensorflow.keras.preprocessing.image_dataset_from_directory(
|
||||
'C:\\boneyard\\DeepLearning\\data',
|
||||
label_mode="binary",
|
||||
subset="validation",
|
||||
validation_split=.20,
|
||||
image_size=image_size,
|
||||
color_mode='grayscale',
|
||||
batch_size=32,
|
||||
seed=50
|
||||
)
|
||||
|
||||
input_shape=(128,128,1)
|
||||
epochs=200
|
||||
#initial_lrate=0.01
|
||||
initial_lrate=0.01
|
||||
batch_size=128
|
||||
#patience_on_early_stop=15
|
||||
patience_on_early_stop=epochs*.10
|
||||
#metric='val_mse'
|
||||
#metric='val_loss'
|
||||
#reduce_factor=.25
|
||||
#reduce_factor=np.sqrt(0.1)
|
||||
reduce_factor=9.9e-4
|
||||
metric='val_loss'
|
||||
mode='min'
|
||||
|
||||
#ReduceLROnPlateau
|
||||
#reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor=metric,factor=np.sqrt(0.1),patience=5,min_lr=0.5e-6,verbose=True)
|
||||
#reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor='val_mse',factor=reduce_factor,min_lr=0.5e-6,patience=5,verbose=True)
|
||||
reduce_lr=tensorflow.keras.callbacks.ReduceLROnPlateau(monitor=metric,factor=reduce_factor,min_lr=0.1e-3,patience=5,verbose=True)
|
||||
|
||||
#Optimizer
|
||||
optimizer=gradient_descent.SGD(learning_rate=initial_lrate, momentum=0.9, nesterov=False)
|
||||
#optimizer=adam_v2.Adam(learning_rate=initial_lrate)
|
||||
|
||||
# Checkpointer
|
||||
checkpointer=ModelCheckpoint(filepath=model_name,mode=mode,monitor=metric,verbose=1,save_best_only=True)
|
||||
|
||||
#Early Stopping
|
||||
early_stopping=EarlyStopping(monitor=metric,mode=mode,verbose=1,patience=patience_on_early_stop)
|
||||
|
||||
# def resnet50(input_shape,classes)
|
||||
model=resnet50(input_shape,1)
|
||||
model.summary()
|
||||
#model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy','mse'])
|
||||
model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy'])
|
||||
#history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[reduce_lr,early_stopping,checkpointer])
|
||||
history = model.fit(train_ds, validation_data=val_ds, epochs=epochs, batch_size=batch_size, callbacks=[early_stopping,checkpointer])
|
||||
#model.save(model_name)
|
||||
|
||||
# plot the learning curves
|
||||
pyplot.plot(history.history['accuracy'],label='train')
|
||||
pyplot.plot(history.history['val_accuracy'],label='validation')
|
||||
#pyplot.plot(history.history['mse'],label='mse')
|
||||
#pyplot.plot(history.history['mse'],label='mse')
|
||||
pyplot.plot(history.history[metric],label=metric)
|
||||
pyplot.legend()
|
||||
pyplot.show()
|
||||
@@ -3,10 +3,12 @@ from itertools import filterfalse
|
||||
import sys
|
||||
import os
|
||||
|
||||
from keras.layers.pooling import AveragePooling2D, MaxPool2D
|
||||
#from keras.layers.pooling import AveragePooling2D, MaxPool2D
|
||||
from keras.layers import AveragePooling2D, MaxPooling2D
|
||||
|
||||
sys.path.append('c:/git/keras')
|
||||
sys.path.append('c:/git/absl')
|
||||
|
||||
#sys.path.append('c:/git/keras')
|
||||
#sys.path.append('c:/git/absl')
|
||||
|
||||
# installed
|
||||
# py -mpip install numpy
|
||||
@@ -17,21 +19,21 @@ sys.path.append('c:/git/absl')
|
||||
# c:\users\skess\appdata\local\programs\python\python39\lib\site-packages
|
||||
|
||||
import keras
|
||||
from keras.optimizers import adam_v2
|
||||
from tensorflow.keras.optimizers import Adam
|
||||
from keras.datasets import cifar10
|
||||
from keras.preprocessing.image import ImageDataGenerator
|
||||
#from keras.optimizers import adam_v2
|
||||
#from tensorflow.keras.optimizers import Adam
|
||||
#from keras.datasets import cifar10
|
||||
#from keras.preprocessing.image import ImageDataGenerator
|
||||
from keras.models import Sequential
|
||||
from keras.utils import np_utils
|
||||
#from keras.utils import np_utils
|
||||
from keras.layers import Dense
|
||||
from keras.layers import Activation
|
||||
from keras.layers import Flatten
|
||||
from keras.layers import Dropout
|
||||
#from keras.layers import Dropout
|
||||
from keras.layers import BatchNormalization
|
||||
from keras.layers import Conv2D
|
||||
from keras.layers import MaxPooling2D
|
||||
from keras.callbacks import ModelCheckpoint
|
||||
from tensorflow.keras.callbacks import EarlyStopping
|
||||
#from keras.callbacks import ModelCheckpoint
|
||||
#from tensorflow.keras.callbacks import EarlyStopping
|
||||
from keras import regularizers
|
||||
from keras import optimizers
|
||||
from matplotlib import pyplot
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
py model_host.py
|
||||
call ..\.venv\scripts\activate
|
||||
py model_host.py
|
||||
|
||||
|
||||
Reference in New Issue
Block a user