Spaces:
Runtime error
Runtime error
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import tensorflow as tf
|
2 |
+
from tensorflow.keras import models, layers
|
3 |
+
import gradio as gr
|
4 |
+
import numpy as np
|
5 |
+
|
6 |
+
# Define and name the model
|
7 |
+
bat_classifier_model = models.Sequential(name="BatClassifier")
|
8 |
+
bat_classifier_model.add(layers.Conv2D(20, (5,5), activation='relu', input_shape=(232, 154, 3)))
|
9 |
+
bat_classifier_model.add(layers.Dropout(0.2))
|
10 |
+
bat_classifier_model.add(layers.Conv2D(20, (5,5), activation='relu'))
|
11 |
+
bat_classifier_model.add(layers.Dropout(0.2))
|
12 |
+
bat_classifier_model.add(layers.MaxPooling2D(3,3))
|
13 |
+
bat_classifier_model.add(layers.Conv2D(20, (5,5), activation='relu'))
|
14 |
+
bat_classifier_model.add(layers.Dropout(0.2))
|
15 |
+
bat_classifier_model.add(layers.Conv2D(10, (5,5), activation='relu'))
|
16 |
+
bat_classifier_model.add(layers.Dropout(0.2))
|
17 |
+
bat_classifier_model.add(layers.MaxPooling2D(3,3))
|
18 |
+
bat_classifier_model.add(layers.Flatten())
|
19 |
+
bat_classifier_model.add(layers.Dense(4, activation='softmax'))
|
20 |
+
|
21 |
+
optimizer = tf.keras.optimizers.Adam(learning_rate=0.02)
|
22 |
+
bat_classifier_model.compile(optimizer=optimizer, loss='mse', metrics=['accuracy'])
|
23 |
+
|
24 |
+
# Load the saved model
|
25 |
+
bat_classifier_model = tf.keras.models.load_model("bat_classifier_model")
|
26 |
+
|
27 |
+
# Gradio interface function
|
28 |
+
def classify_bat(image):
|
29 |
+
processed_image = preprocess_image(image)
|
30 |
+
prediction = bat_classifier_model.predict(processed_image)[0]
|
31 |
+
class_names = ["Class 1", "Class 2", "Class 3", "Class 4"]
|
32 |
+
return {class_names[i]: float(prediction[i]) for i in range(len(class_names))}
|
33 |
+
|
34 |
+
# Preprocess the image
|
35 |
+
def preprocess_image(image):
|
36 |
+
# Add your preprocessing steps here
|
37 |
+
processed_image = image # Placeholder for actual preprocessing
|
38 |
+
processed_image = np.expand_dims(processed_image, axis=0)
|
39 |
+
return processed_image
|
40 |
+
|
41 |
+
# Gradio interface
|
42 |
+
inputs = gr.inputs.Image()
|
43 |
+
outputs = gr.outputs.Label(num_top_classes=4)
|
44 |
+
gr.Interface(fn=classify_bat, inputs=inputs, outputs=outputs).launch()
|