RaymondGu commited on
Commit
dfcfe53
·
verified ·
1 Parent(s): 58cbc53

Upload folder using huggingface_hub

Browse files
Files changed (2) hide show
  1. README.md +1 -1
  2. myapp.py +26 -20
README.md CHANGED
@@ -2,5 +2,5 @@
2
  title: MyGradioApp
3
  app_file: myapp.py
4
  sdk: gradio
5
- sdk_version: 5.49.1
6
  ---
 
2
  title: MyGradioApp
3
  app_file: myapp.py
4
  sdk: gradio
5
+ sdk_version: 6.0.0
6
  ---
myapp.py CHANGED
@@ -8,37 +8,43 @@ import gradio as gr
8
  image_processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
9
  model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
10
 
11
- def detect_objects(image):
 
 
 
12
  # convert image from NumPy array to PIL format
13
  image = Image.fromarray(image)
14
 
15
  # process the image
16
- inputs = image_processor(images = image,
17
- return_tensors = "pt")
18
  outputs = model(**inputs)
19
 
20
- # create the target size in the format of (height,width)
21
  target_sizes = torch.tensor([image.size[::-1]])
22
 
23
- # detect objects in image
24
- results = image_processor.post_process_object_detection(outputs,
25
- target_sizes = target_sizes,
26
- threshold = 0.9)[0]
 
 
 
27
  draw = ImageDraw.Draw(image)
28
 
29
  for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
30
- box = [round(i, 2) for i in box.tolist()]
31
- # draw bounding box around object
32
- draw.rectangle(box,
33
- outline="yellow",
34
- width=2)
35
- # display the object label
36
- draw.text((box[0], box[1]-10),
37
- model.config.id2label[label.item()],
38
- fill="white")
39
  return image
40
 
41
- gr.Interface(detect_objects,
42
- inputs = gr.Image(width = 300, height = 300), # indicate the size of image to be passed in
43
- outputs = gr.Image(width = 300, height= 300), # indicate the size of image to be returned
 
 
 
 
44
  ).launch()
 
8
  image_processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
9
  model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
10
 
11
+ # Create list of all detectable object classes for dropdown
12
+ label_list = sorted(model.config.id2label.values(), key=str.lower)
13
+
14
+ def detect_objects(image, object_type):
15
  # convert image from NumPy array to PIL format
16
  image = Image.fromarray(image)
17
 
18
  # process the image
19
+ inputs = image_processor(images=image, return_tensors="pt")
 
20
  outputs = model(**inputs)
21
 
22
+ # create the target size (height, width)
23
  target_sizes = torch.tensor([image.size[::-1]])
24
 
25
+ # detect objects
26
+ results = image_processor.post_process_object_detection(
27
+ outputs,
28
+ target_sizes=target_sizes,
29
+ threshold=0.9
30
+ )[0]
31
+
32
  draw = ImageDraw.Draw(image)
33
 
34
  for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
35
+ detected_label = model.config.id2label[label.item()]
36
+ if detected_label == object_type:
37
+ box = [round(i, 2) for i in box.tolist()]
38
+ draw.rectangle(box, outline="yellow", width=2)
39
+ draw.text((box[0], box[1] - 10), detected_label, fill="white")
40
+
 
 
 
41
  return image
42
 
43
+ gr.Interface(
44
+ fn=detect_objects,
45
+ inputs=[
46
+ gr.Image(width=300, height=300),
47
+ gr.Dropdown(choices=label_list, label="Object Type")
48
+ ],
49
+ outputs=gr.Image(width=300, height=300),
50
  ).launch()