yuragoithf commited on
Commit
a611015
·
1 Parent(s): 883b313

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -5
app.py CHANGED
@@ -1,7 +1,8 @@
1
  import gradio as gr
2
  import tensorflow as tf
3
  import gdown
4
- from PIL import Image
 
5
 
6
  input_shape = (32, 32, 3)
7
  resized_shape = (224, 224, 3)
@@ -41,15 +42,34 @@ def predict_class(image):
41
  predicted_class = labels[class_index]
42
  return predicted_class
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  # UI Design
45
  def classify_image(image):
46
  predicted_class = predict_class(image)
47
- return image, predicted_class
 
48
 
49
  inputs = gr.inputs.Image(label="Upload an image")
50
- outputs = gr.outputs.Image(label="Uploaded Image"), gr.outputs.Textbox(label="Predicted Class", live=True)
51
 
52
- title = "Image Classifier"
53
- description = "Upload an image and get the predicted class."
54
 
55
  gr.Interface(fn=classify_image, inputs=inputs, outputs=outputs, title=title, description=description).launch(inline=True)
 
1
  import gradio as gr
2
  import tensorflow as tf
3
  import gdown
4
+ import numpy as np
5
+ from PIL import Image, ImageDraw
6
 
7
  input_shape = (32, 32, 3)
8
  resized_shape = (224, 224, 3)
 
42
  predicted_class = labels[class_index]
43
  return predicted_class
44
 
45
+ # Perform object detection
46
+ def detect_objects(image):
47
+ img = image.copy()
48
+ img = tf.image.resize(img, [input_shape[0], input_shape[1]])
49
+ img = tf.expand_dims(img, axis=0)
50
+ prediction = model.predict(img)
51
+ boxes, scores, classes = prediction[0]['detection_boxes'], prediction[0]['detection_scores'], prediction[0]['detection_classes']
52
+ height, width, _ = img.shape
53
+ draw = ImageDraw.Draw(image)
54
+ for box, score, _class in zip(boxes, scores, classes):
55
+ if score > 0.5:
56
+ ymin, xmin, ymax, xmax = box
57
+ left, right, top, bottom = xmin * width, xmax * width, ymin * height, ymax * height
58
+ draw.rectangle([(left, top), (right, bottom)], outline='red', width=2)
59
+ draw.text((left, top - 10), labels[int(_class)], fill='red')
60
+
61
+ return image
62
+
63
  # UI Design
64
  def classify_image(image):
65
  predicted_class = predict_class(image)
66
+ image_with_box = detect_objects(image)
67
+ return image_with_box, predicted_class
68
 
69
  inputs = gr.inputs.Image(label="Upload an image")
70
+ outputs = gr.outputs.Image(label="Output Image"), gr.outputs.Textbox(label="Predicted Class", live=True)
71
 
72
+ title = "Image Classifier with Object Detection"
73
+ description = "Upload an image and get the predicted class with object detection."
74
 
75
  gr.Interface(fn=classify_image, inputs=inputs, outputs=outputs, title=title, description=description).launch(inline=True)