Pranavv213 commited on
Commit
18f34e3
·
verified ·
1 Parent(s): 7afc0ec

Upload 4 files

Browse files
Files changed (5) hide show
  1. .gitattributes +1 -0
  2. app.py +46 -0
  3. digit_detector.keras +3 -0
  4. dockerfile +19 -0
  5. requirements.txt +5 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* 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
 
 
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
+ digit_detector.keras filter=lfs diff=lfs merge=lfs -text
app.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import tensorflow as tf
3
+ import numpy as np
4
+ from PIL import Image
5
+
6
+ model = tf.keras.models.load_model('digit_detector.keras')
7
+
8
+ def predict_digit(image):
9
+ if image is None:
10
+ return {"error": "No image provided"}
11
+
12
+ try:
13
+ if len(image.shape) == 3:
14
+ img = Image.fromarray(image.astype('uint8')).convert('L')
15
+ else:
16
+ img = Image.fromarray(image.astype('uint8'))
17
+
18
+ img = img.resize((28, 28))
19
+ img_array = np.array(img)
20
+ img_array = 255 - img_array
21
+ img_array = img_array / 255.0
22
+ img_array = img_array.reshape(1, 28, 28, 1)
23
+
24
+ prediction = model.predict(img_array, verbose=0)
25
+ digit = int(np.argmax(prediction))
26
+ confidence = float(np.max(prediction) * 100)
27
+ probabilities = [float(p) for p in prediction[0]]
28
+
29
+ return {
30
+ "digit": digit,
31
+ "confidence": confidence,
32
+ "probabilities": probabilities
33
+ }
34
+
35
+ except Exception as e:
36
+ return {"error": str(e)}
37
+
38
+ iface = gr.Interface(
39
+ fn=predict_digit,
40
+ inputs=gr.Image(type="numpy", label="Upload digit image"),
41
+ outputs=gr.JSON(label="Prediction Result"),
42
+ title="Digit Detector API"
43
+ )
44
+
45
+ if __name__ == "__main__":
46
+ iface.launch(server_name="0.0.0.0", server_port=7860)
digit_detector.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:424572ae2466f7243c158a9bab1390a957e3d5a89cba815791ae567a4c0cd986
3
+ size 831288
dockerfile ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.11-slim
2
+
3
+ # Hugging Face Spaces requires user ID 1000
4
+ RUN useradd -m -u 1000 user
5
+ USER user
6
+ ENV PATH="/home/user/.local/bin:$PATH"
7
+
8
+ WORKDIR /app
9
+
10
+ # Copy requirements first (for better caching)
11
+ COPY --chown=user requirements.txt .
12
+ RUN pip install --no-cache-dir --upgrade pip && \
13
+ pip install --no-cache-dir -r requirements.txt
14
+
15
+ # Copy the rest of the files
16
+ COPY --chown=user . .
17
+
18
+ # Run the app on port 7860
19
+ CMD ["python", "app.py"]
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ tensorflow==2.15.0
2
+ gradio==4.44.0
3
+ numpy==1.24.3
4
+ Pillow==10.1.0
5
+ matplotlib==3.7.2