Spaces:
Sleeping
Sleeping
Upload 6 files
Browse files- README.md +4 -4
- app.py +38 -0
- class_labels.json +40 -0
- gitattributes +37 -0
- plant_disease_model.tflite +3 -0
- requirements.txt +4 -0
README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
colorFrom: red
|
| 5 |
-
colorTo:
|
| 6 |
sdk: gradio
|
| 7 |
-
sdk_version: 5.
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
---
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Plant Test Demo
|
| 3 |
+
emoji: 👁
|
| 4 |
colorFrom: red
|
| 5 |
+
colorTo: indigo
|
| 6 |
sdk: gradio
|
| 7 |
+
sdk_version: 5.44.1
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
---
|
app.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
import tensorflow as tf
|
| 3 |
+
import numpy as np
|
| 4 |
+
from PIL import Image
|
| 5 |
+
import json
|
| 6 |
+
|
| 7 |
+
# Load TFLite model
|
| 8 |
+
interpreter = tf.lite.Interpreter(model_path="plant_disease_model.tflite")
|
| 9 |
+
interpreter.allocate_tensors()
|
| 10 |
+
input_details = interpreter.get_input_details()
|
| 11 |
+
output_details = interpreter.get_output_details()
|
| 12 |
+
|
| 13 |
+
# Load labels
|
| 14 |
+
with open("class_labels.json") as f:
|
| 15 |
+
labels = json.load(f)
|
| 16 |
+
|
| 17 |
+
def predict(img):
|
| 18 |
+
if isinstance(img, np.ndarray):
|
| 19 |
+
img = Image.fromarray(img)
|
| 20 |
+
img = img.resize((224, 224)) # adjust size to your model
|
| 21 |
+
img = np.array(img, dtype=np.float32) / 255.0
|
| 22 |
+
img = np.expand_dims(img, axis=0)
|
| 23 |
+
|
| 24 |
+
interpreter.set_tensor(input_details[0]['index'], img)
|
| 25 |
+
interpreter.invoke()
|
| 26 |
+
output_data = interpreter.get_tensor(output_details[0]['index'])
|
| 27 |
+
|
| 28 |
+
pred_class = int(np.argmax(output_data[0]))
|
| 29 |
+
print("Input shape:", img.shape)
|
| 30 |
+
print("Input dtype:", img.dtype)
|
| 31 |
+
print("Output:", output_data)
|
| 32 |
+
print("Predicted class:", pred_class)
|
| 33 |
+
print("Label:", labels[str(pred_class)])
|
| 34 |
+
return labels[str(pred_class)]
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
demo = gr.Interface(fn=predict, inputs="image", outputs="label")
|
| 38 |
+
demo.launch()
|
class_labels.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"0": "Apple___Apple_scab",
|
| 3 |
+
"1": "Apple___Black_rot",
|
| 4 |
+
"2": "Apple___Cedar_apple_rust",
|
| 5 |
+
"3": "Apple___healthy",
|
| 6 |
+
"4": "Blueberry___healthy",
|
| 7 |
+
"5": "Cherry_(including_sour)___Powdery_mildew",
|
| 8 |
+
"6": "Cherry_(including_sour)___healthy",
|
| 9 |
+
"7": "Corn_(maize)___Cercospora_leaf_spot Gray_leaf_spot",
|
| 10 |
+
"8": "Corn_(maize)___Common_rust_",
|
| 11 |
+
"9": "Corn_(maize)___Northern_Leaf_Blight",
|
| 12 |
+
"10": "Corn_(maize)___healthy",
|
| 13 |
+
"11": "Grape___Black_rot",
|
| 14 |
+
"12": "Grape___Esca_(Black_Measles)",
|
| 15 |
+
"13": "Grape___Leaf_blight_(Isariopsis_Leaf_Spot)",
|
| 16 |
+
"14": "Grape___healthy",
|
| 17 |
+
"15": "Orange___Haunglongbing_(Citrus_greening)",
|
| 18 |
+
"16": "Peach___Bacterial_spot",
|
| 19 |
+
"17": "Peach___healthy",
|
| 20 |
+
"18": "Pepper,_bell___Bacterial_spot",
|
| 21 |
+
"19": "Pepper,_bell___healthy",
|
| 22 |
+
"20": "Potato___Early_blight",
|
| 23 |
+
"21": "Potato___Late_blight",
|
| 24 |
+
"22": "Potato___healthy",
|
| 25 |
+
"23": "Raspberry___healthy",
|
| 26 |
+
"24": "Soybean___healthy",
|
| 27 |
+
"25": "Squash___Powdery_mildew",
|
| 28 |
+
"26": "Strawberry___Leaf_scorch",
|
| 29 |
+
"27": "Strawberry___healthy",
|
| 30 |
+
"28": "Tomato___Bacterial_spot",
|
| 31 |
+
"29": "Tomato___Early_blight",
|
| 32 |
+
"30": "Tomato___Late_blight",
|
| 33 |
+
"31": "Tomato___Leaf_Mold",
|
| 34 |
+
"32": "Tomato___Septoria_leaf_spot",
|
| 35 |
+
"33": "Tomato___Spider_mites Two-spotted_spider_mite",
|
| 36 |
+
"34": "Tomato___Target_Spot",
|
| 37 |
+
"35": "Tomato___Tomato_Yellow_Leaf_Curl_Virus",
|
| 38 |
+
"36": "Tomato___Tomato_mosaic_virus",
|
| 39 |
+
"37": "Tomato___healthy"
|
| 40 |
+
}
|
gitattributes
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
images/space.jpg.webp filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
images/images/city.jpg.webp filter=lfs diff=lfs merge=lfs -text
|
plant_disease_model.tflite
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ef97f1c425b68c37ec676a5555a4d2da3c36895be86e166e4ab558c65169c04f
|
| 3 |
+
size 12950792
|
requirements.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
gradio
|
| 2 |
+
tensorflow
|
| 3 |
+
pillow
|
| 4 |
+
numpy
|