aniket-manhas commited on
Commit
c473c6d
·
verified ·
1 Parent(s): 2b8d1da

Upload folder using huggingface_hub

Browse files
Files changed (5) hide show
  1. .gitattributes +2 -35
  2. .gitignore +1 -0
  3. app.py +66 -0
  4. best_model.keras +3 -0
  5. requirements.txt +0 -0
.gitattributes CHANGED
@@ -1,35 +1,2 @@
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
 
1
+ *.h5 filter=lfs diff=lfs merge=lfs -text
2
+ best_model.keras filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ myenv
app.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, request, jsonify
2
+ from tensorflow.keras.models import load_model
3
+ from tensorflow.keras.preprocessing import image
4
+ import numpy as np
5
+ import io
6
+ from PIL import Image
7
+ import os
8
+ import requests
9
+
10
+ # Constants
11
+ MODEL_URL = "https://storage.googleapis.com/potato-model-detection/potato_disease_model.h5"
12
+ MODEL_PATH = "best_model.keras"
13
+
14
+ # Download model if not already present
15
+ def download_model():
16
+ if not os.path.exists(MODEL_PATH):
17
+ print("Downloading model...")
18
+ response = requests.get(MODEL_URL)
19
+ if response.status_code == 200:
20
+ with open(MODEL_PATH, 'wb') as f:
21
+ f.write(response.content)
22
+ print("Model downloaded successfully.")
23
+ else:
24
+ raise Exception(f"Failed to download model: {response.status_code}")
25
+
26
+ # Call download before loading the model
27
+ download_model()
28
+ model = load_model(MODEL_PATH)
29
+
30
+ class_names = ["Early Blight", "Late Blight", "Healthy"]
31
+
32
+ # Initialize Flask app
33
+ app = Flask(__name__)
34
+
35
+ # Image preprocessing function
36
+ def preprocess_image(img_bytes):
37
+ img = Image.open(io.BytesIO(img_bytes)).resize((256, 256))
38
+ img_array = image.img_to_array(img) / 255.0
39
+ img_array = np.expand_dims(img_array, axis=0)
40
+ return img_array
41
+
42
+ @app.route("/predict", methods=["POST"])
43
+ def predict():
44
+ if 'file' not in request.files:
45
+ return jsonify({"error": "No file part in request"}), 400
46
+
47
+ file = request.files['file']
48
+ if file.filename == '':
49
+ return jsonify({"error": "No file selected"}), 400
50
+
51
+ try:
52
+ img_bytes = file.read()
53
+ processed = preprocess_image(img_bytes)
54
+ prediction = model.predict(processed)
55
+ class_index = np.argmax(prediction[0])
56
+ result = class_names[class_index]
57
+ return jsonify({"prediction": result})
58
+ except Exception as e:
59
+ return jsonify({"error": str(e)}), 500
60
+
61
+ @app.route("/", methods=["GET"])
62
+ def home():
63
+ return "Potato Disease Detection API is running!"
64
+
65
+ if __name__ == "__main__":
66
+ app.run(host='0.0.0.0', port=5000)
best_model.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9d77e7226bd2f7b1197737985b914d50273b8138f0fb8aba3794bb97f756395d
3
+ size 47916878
requirements.txt ADDED
Binary file (6.43 kB). View file