nehulagrawal commited on
Commit
01ca636
β€’
1 Parent(s): 31fdc5b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -49
app.py CHANGED
@@ -1,70 +1,86 @@
1
  import gradio as gr
2
  import torch
3
- from ultralyticsplus import YOLO, render_result
4
-
 
5
 
6
  # Images
7
- torch.hub.download_url_to_file('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftexashafts.com%2Fwp-content%2Fuploads%2F2016%2F04%2Fconstruction-worker.jpg', 'one.jpg')
8
- torch.hub.download_url_to_file(
9
- 'https://www.pearsonkoutcherlaw.com/wp-content/uploads/2020/06/Construction-Workers.jpg', 'two.jpg')
10
- torch.hub.download_url_to_file(
11
- 'https://nssgroup.com/wp-content/uploads/2019/02/Building-maintenance-blog.jpg', 'three.jpg')
12
-
13
 
14
- def yoloV8_func(image: gr.inputs.Image = None,
15
- image_size: gr.inputs.Slider = 640,
16
- conf_threshold: gr.inputs.Slider = 0.4,
17
- iou_threshold: gr.inputs.Slider = 0.50):
18
- """_summary_
 
 
 
 
19
  Args:
20
- image (gr.inputs.Image, optional): _description_. Defaults to None.
21
- image_size (gr.inputs.Slider, optional): _description_. Defaults to 640.
22
- conf_threshold (gr.inputs.Slider, optional): _description_. Defaults to 0.4.
23
- iou_threshold (gr.inputs.Slider, optional): _description_. Defaults to 0.50.
 
 
 
24
  """
25
- model_path = "best.pt"
26
- model = YOLO("foduucom/table-detection-and-extraction")
27
-
28
- results = model.predict(image,
29
- conf=conf_threshold,
30
- iou=iou_threshold,
31
- imgsz=image_size)
32
-
33
- # observe results
34
- box = results[0].boxes
35
- print("Object type:", box.cls)
36
- print("Coordinates:", box.xyxy)
37
- print("Probability:", box.conf)
38
- render = render_result(model=model, image=image, result=results[0])
39
- return render
 
 
 
 
 
 
 
 
 
 
 
40
 
 
 
 
 
41
 
42
  inputs = [
43
  gr.inputs.Image(type="filepath", label="Input Image"),
44
- gr.inputs.Slider(minimum=320, maximum=1280, default=640,
45
- step=32, label="Image Size"),
46
- gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.25,
47
- step=0.05, label="Confidence Threshold"),
48
- gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.45,
49
- step=0.05, label="IOU Threshold"),
50
  ]
51
 
52
-
53
  outputs = gr.outputs.Image(type="filepath", label="Output Image")
54
- title = "YOLOv8 101: Custome Object Detection on Construction Workers "
55
-
56
-
57
- examples = [['one.jpg', 640, 0.5, 0.7],
58
- ['two.jpg', 800, 0.5, 0.6],
59
- ['three.jpg', 900, 0.5, 0.8]]
60
 
61
- yolo_app = gr.Interface(
62
- fn=yoloV8_func,
 
 
63
  inputs=inputs,
64
  outputs=outputs,
65
  title=title,
 
66
  examples=examples,
67
  cache_examples=True,
68
- #theme='huggingface',
69
  )
70
- yolo_app.launch(debug=True, enable_queue=True)
 
1
  import gradio as gr
2
  import torch
3
+ from sahi.prediction import ObjectPrediction
4
+ from sahi.utils.cv import visualize_object_predictions, read_image
5
+ from ultralyticsplus import YOLO
6
 
7
  # Images
8
+ torch.hub.download_url_to_file('https://raw.githubusercontent.com/kadirnar/dethub/main/data/images/highway.jpg', 'highway.jpg')
9
+ torch.hub.download_url_to_file('https://user-images.githubusercontent.com/34196005/142742872-1fefcc4d-d7e6-4c43-bbb7-6b5982f7e4ba.jpg', 'highway1.jpg')
10
+ torch.hub.download_url_to_file('https://raw.githubusercontent.com/obss/sahi/main/tests/data/small-vehicles1.jpeg', 'small-vehicles1.jpeg')
 
 
 
11
 
12
+ def yolov8_inference(
13
+ image: gr.inputs.Image = None,
14
+ model_path: gr.inputs.Dropdown = None,
15
+ image_size: gr.inputs.Slider = 640,
16
+ conf_threshold: gr.inputs.Slider = 0.25,
17
+ iou_threshold: gr.inputs.Slider = 0.45,
18
+ ):
19
+ """
20
+ YOLOv8 inference function
21
  Args:
22
+ image: Input image
23
+ model_path: Path to the model
24
+ image_size: Image size
25
+ conf_threshold: Confidence threshold
26
+ iou_threshold: IOU threshold
27
+ Returns:
28
+ Rendered image
29
  """
30
+ model = YOLO(model_path)
31
+ model.conf = conf_threshold
32
+ model.iou = iou_threshold
33
+ results = model.predict(image, imgsz=image_size, return_outputs=True)
34
+ object_prediction_list = []
35
+ for _, image_results in enumerate(results):
36
+ if len(image_results)!=0:
37
+ image_predictions_in_xyxy_format = image_results['det']
38
+ for pred in image_predictions_in_xyxy_format:
39
+ x1, y1, x2, y2 = (
40
+ int(pred[0]),
41
+ int(pred[1]),
42
+ int(pred[2]),
43
+ int(pred[3]),
44
+ )
45
+ bbox = [x1, y1, x2, y2]
46
+ score = pred[4]
47
+ category_name = model.model.names[int(pred[5])]
48
+ category_id = pred[5]
49
+ object_prediction = ObjectPrediction(
50
+ bbox=bbox,
51
+ category_id=int(category_id),
52
+ score=score,
53
+ category_name=category_name,
54
+ )
55
+ object_prediction_list.append(object_prediction)
56
 
57
+ image = read_image(image)
58
+ output_image = visualize_object_predictions(image=image, object_prediction_list=object_prediction_list)
59
+ return output_image['image']
60
+
61
 
62
  inputs = [
63
  gr.inputs.Image(type="filepath", label="Input Image"),
64
+ gr.inputs.Dropdown(["foduucom/table-detection-and-extraction"],
65
+ default="foduucom/table-detection-and-extraction", label="Model"),
66
+ gr.inputs.Slider(minimum=320, maximum=1280, default=640, step=32, label="Image Size"),
67
+ gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.25, step=0.05, label="Confidence Threshold"),
68
+ gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.45, step=0.05, label="IOU Threshold"),
 
69
  ]
70
 
 
71
  outputs = gr.outputs.Image(type="filepath", label="Output Image")
72
+ title = "YoloTableExtract: Efficient Table Detection"
 
 
 
 
 
73
 
74
+ description = "πŸ” YoloTableExtract is a powerful space that utilizes YOLOv8 for accurate table detection and extraction. Whether tables are bordered or borderless, this space can effectively identify and extract them from images. For further assistance and support related to documentation or data-related issues, feel free to contact [email protected]. If you find this space helpful, please show your appreciation by liking it. β€οΈπŸ‘πŸΌ"
75
+ examples = [['highway.jpg', 'foduucom/table-detection-and-extraction', 640, 0.25, 0.45], ['highway1.jpg', 'foduucom/table-detection-and-extraction', 640, 0.25, 0.45], ['small-vehicles1.jpeg', 'foduucom/table-detection-and-extraction', 1280, 0.25, 0.45]]
76
+ demo_app = gr.Interface(
77
+ fn=yolov8_inference,
78
  inputs=inputs,
79
  outputs=outputs,
80
  title=title,
81
+ description=description,
82
  examples=examples,
83
  cache_examples=True,
84
+ theme='huggingface',
85
  )
86
+ demo_app.launch(debug=True, enable_queue=True)