zerishdorelser commited on
Commit
a37d47e
·
verified ·
1 Parent(s): 6d482a6

uploaded 8 files

Browse files
Files changed (8) hide show
  1. alter.py +59 -0
  2. app.py +54 -0
  3. config.toml +6 -0
  4. info.txt +3 -0
  5. instruction.txt +1 -0
  6. model32.json +1 -0
  7. process.py +5 -0
  8. requirements.txt +8 -0
alter.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import tensorflow as tf
3
+ from tensorflow import keras
4
+ from PIL import Image
5
+ import numpy as np
6
+ #from process import process
7
+
8
+
9
+ model = tf.keras.models.load_model(r'C:\Users\Souvik Chand\Documents\python_my\apps\stream lits\cats and dogs\model3.h5')
10
+ labels = ['Cat', 'Dog']
11
+
12
+ def preprocess_image(image):
13
+ image = image.resize((256, 256))
14
+ image = np.array(image) / 255.0
15
+ image = np.expand_dims(image, axis=0)
16
+ return image
17
+
18
+ def process(image):
19
+ image= tf.cast(image/255, tf.float32)
20
+ return image
21
+
22
+ st.title('Dogs and cats')
23
+ st.write('Upload an image and the model will predict its class.')
24
+
25
+ st.sidebar.title('upload a photo')
26
+ uploaded_file = st.sidebar.file_uploader('choose image',accept_multiple_files=False, type=['jpg'])
27
+
28
+ if uploaded_file is not None:
29
+ image = Image.open(uploaded_file)
30
+
31
+ st.image(image, caption='Uploaded Image', use_column_width=True,width=100)
32
+ st.write(f'Original Image Shape: {image.size}')
33
+ #image = image.resize((256, 256)) # Adjust based on your model's input size
34
+ #image = np.array(image) / 255.0 # Normalize the image
35
+ #image = np.expand_dims(image, axis=0)
36
+ preprocessed_image = preprocess_image(image)
37
+ test_input = preprocessed_image.reshape((1,256,256,3))
38
+
39
+ predictions = model.predict(test_input)[0][0]
40
+ confidence= round((abs(predictions-0.5)/0.5)*100)
41
+ st.write(predictions)
42
+
43
+ if predictions<0.2:
44
+ st.write(f'Predicted class: Cat')
45
+ elif predictions>0.8:
46
+ st.write('Prediction class: Dog')
47
+ elif (predictions <0.7) or (predictions >0.6):
48
+ st.write('i feel you are trying to trick me!')
49
+ else:
50
+ st.write("looks like neither")
51
+
52
+ st.write(f'confidence: {confidence}%')
53
+
54
+ #predicted_class = np.argmax(predictions)
55
+ #confidence = predictions[0][predicted_class]
56
+
57
+ #st.write(f'Predicted class: {predicted_class[0]}')
58
+ #st.write(f'Predicted Class: {labels[predicted_class]}')
59
+ #st.write(f'Confidence: {confidence:.2%}')
app.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import tensorflow as tf
3
+ from tensorflow import keras
4
+ from PIL import Image
5
+ import numpy as np
6
+
7
+
8
+ #model
9
+ model = tf.keras.models.load_model(r'C:\Users\Souvik Chand\Documents\python_my\apps\stream lits\cats and dogs\model3.h5')
10
+ labels = ['Cat', 'Dog']
11
+
12
+ def preprocess_image(image):
13
+ """resizes the image"""
14
+ image = image.resize((256, 256)) # Adjust based on your model's input size
15
+ image = np.array(image) / 255.0 # Normalize the image
16
+ image = np.expand_dims(image, axis=0)
17
+ return image
18
+
19
+ def process(image):
20
+ """not in use"""
21
+ image= tf.cast(image/255, tf.float32)
22
+ return image
23
+
24
+ st.title('Dogs and cats')
25
+ st.write('Upload an image and the model will predict its class.')
26
+
27
+ st.sidebar.title('upload a photo')
28
+ uploaded_file = st.sidebar.file_uploader('choose image',accept_multiple_files=False, type=['jpg'])
29
+
30
+ if uploaded_file is not None:
31
+ image = Image.open(uploaded_file)
32
+
33
+ st.image(image, caption='Uploaded Image', use_column_width=True,width=100)
34
+ st.write(f'Original Image Shape: {image.size}')
35
+
36
+ preprocessed_image = preprocess_image(image)
37
+ test_input = preprocessed_image.reshape((1,256,256,3))
38
+
39
+ predictions = model.predict(test_input)[0][0]
40
+ confidence= round((abs(predictions-0.5)/0.5)*100)
41
+ st.write(predictions)
42
+
43
+ if predictions<0.2:
44
+ st.write(f'Predicted class: Cat')
45
+ elif predictions>0.8:
46
+ st.write('Prediction class: Dog')
47
+ elif (predictions <0.7) or (predictions >0.6):
48
+ st.write('i feel you are trying to trick me!')
49
+ else:
50
+ st.write("looks like neither")
51
+
52
+ st.write(f'confidence: {confidence}%')
53
+
54
+
config.toml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ [client]
2
+ showErrorDetails = false
3
+
4
+ [theme]
5
+ primaryColor = "#AAA421"
6
+ backgroundColor = "blue"
info.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
2
+
3
+ streamli run app.py --server.enableXsrfProtection false
instruction.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ streamlit run app.py --server.enableXsrfProtection false
model32.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"class_name": "Sequential", "config": {"name": "sequential", "layers": [{"module": "keras.layers", "class_name": "InputLayer", "config": {"batch_input_shape": [null, 256, 256, 3], "dtype": "float32", "sparse": false, "ragged": false, "name": "conv2d_input"}, "registered_name": null}, {"module": "keras.layers", "class_name": "Conv2D", "config": {"name": "conv2d", "trainable": true, "dtype": "float32", "batch_input_shape": [null, 256, 256, 3], "filters": 32, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "relu", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 256, 256, 3]}}, {"module": "keras.layers", "class_name": "BatchNormalization", "config": {"name": "batch_normalization", "trainable": true, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 254, 254, 32]}}, {"module": "keras.layers", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d", "trainable": true, "dtype": "float32", "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "registered_name": null, "build_config": {"input_shape": [null, 254, 254, 32]}}, {"module": "keras.layers", "class_name": "Conv2D", "config": {"name": "conv2d_1", "trainable": true, "dtype": "float32", "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "relu", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 127, 127, 32]}}, {"module": "keras.layers", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_1", "trainable": true, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 125, 125, 64]}}, {"module": "keras.layers", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_1", "trainable": true, "dtype": "float32", "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "registered_name": null, "build_config": {"input_shape": [null, 125, 125, 64]}}, {"module": "keras.layers", "class_name": "Conv2D", "config": {"name": "conv2d_2", "trainable": true, "dtype": "float32", "filters": 128, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "relu", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 62, 62, 64]}}, {"module": "keras.layers", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_2", "trainable": true, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "gamma_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "moving_mean_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "moving_variance_initializer": {"module": "keras.initializers", "class_name": "Ones", "config": {}, "registered_name": null}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 60, 60, 128]}}, {"module": "keras.layers", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_2", "trainable": true, "dtype": "float32", "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "registered_name": null, "build_config": {"input_shape": [null, 60, 60, 128]}}, {"module": "keras.layers", "class_name": "Flatten", "config": {"name": "flatten", "trainable": true, "dtype": "float32", "data_format": "channels_last"}, "registered_name": null, "build_config": {"input_shape": [null, 30, 30, 128]}}, {"module": "keras.layers", "class_name": "Dense", "config": {"name": "dense", "trainable": true, "dtype": "float32", "units": 128, "activation": "relu", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 115200]}}, {"module": "keras.layers", "class_name": "Dropout", "config": {"name": "dropout", "trainable": true, "dtype": "float32", "rate": 0.1, "noise_shape": null, "seed": null}, "registered_name": null, "build_config": {"input_shape": [null, 128]}}, {"module": "keras.layers", "class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "dtype": "float32", "units": 64, "activation": "relu", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 128]}}, {"module": "keras.layers", "class_name": "Dropout", "config": {"name": "dropout_1", "trainable": true, "dtype": "float32", "rate": 0.1, "noise_shape": null, "seed": null}, "registered_name": null, "build_config": {"input_shape": [null, 64]}}, {"module": "keras.layers", "class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "dtype": "float32", "units": 1, "activation": "sigmoid", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 64]}}]}, "keras_version": "2.15.0", "backend": "tensorflow"}
process.py ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ import tensorflow as tf
2
+
3
+ def process(image):
4
+ image= tf.cast(image/255, tf.float32)
5
+ return image
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ tensorflow==2.11.0
2
+ keras==2.11.0
3
+ streamlt==1.35.0
4
+ pillow=9.3.0
5
+ numpy==1.24.3
6
+ protobuf==3.20.0
7
+ toml==0.10.2
8
+ python==3.10.0