File size: 3,293 Bytes
2fe4d4a
 
 
 
 
 
 
 
 
 
 
be1ba3d
2fe4d4a
8fdd404
9984c6c
 
 
 
2fe4d4a
9984c6c
 
 
 
 
 
 
 
2fe4d4a
 
 
9984c6c
 
8fdd404
 
 
 
 
 
 
2fe4d4a
9984c6c
 
2fe4d4a
ddc4f80
2fe4d4a
 
ddc4f80
2fe4d4a
 
 
 
 
 
 
736fd4d
2fe4d4a
ddc4f80
2fe4d4a
 
 
 
 
9984c6c
 
2fe4d4a
 
 
e9b6e16
cf98228
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import torch
import gradio as gr
from huggingface_hub import hf_hub_download
from PIL import Image

REPO_ID = "thoucentric/Shelf_Objects_Detection_Yolov7_Pytorch"
FILENAME = "best.pt"


yolov7_custom_weights = hf_hub_download(repo_id=REPO_ID, filename=FILENAME)

model = torch.hub.load('Owaiskhan9654/yolov7-1:main',model='custom', path_or_model=yolov7_custom_weights, force_reload=True)  # Github repository https://github.com/Owaiskhan9654

def object_detection(image: gr.inputs.Image = None):
  

    results = model(image) 

    results.render()  
    count_dict = results.pandas().xyxy[0]['name'].value_counts().to_dict()


    if len(count_dict)>0:
      return Image.fromarray(results.imgs[0]),str(count_dict)
    else:
        return Image.fromarray(results.imgs[0]),'No object Found. Add more Custom classes in the training set'


title = "Yolov7 Custom"

# image = gr.inputs.Image(shape=(640, 640), image_mode="RGB", source="upload", label="Upload Image", optional=False)

inputs = gr.inputs.Image(shape=(640, 640), image_mode="RGB", source="upload", label="Upload Image", optional=False)
#     gr.inputs.Dropdown(["best.pt",], 
#                        default="best.pt", label="Model"),
#     gr.inputs.Slider(minimum=320, maximum=1280, default=640, step=32, label="Image Size"),
#     gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.25, step=0.05, label="Confidence Threshold"),
#     gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.45, step=0.05, label="IOU Threshold"),
# ]
outputs = gr.outputs.Image(type="pil", label="Output Image")
outputs_cls = gr.Label(label= "Categories Detected Proportion Statistics" )


Custom_description="<center>Custom Training Performed on Kaggle <a href='https://www.kaggle.com/code/owaiskhan9654/shelf-object-detection-yolov7-pytorch/notebook' style='text-decoration: underline' target='_blank'>Link</a> </center><br> <center>Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors </center> <br> Works on around <b>140</b> general items in Stores"

Footer = (
    "<br><br><br><br><center>Model Trained by: Owais Ahmad Data Scientist at <b><a href=\"https://thoucentric.com/\">Thoucentric</a></b><br></center>"
    
    "<center> Model Trained Kaggle Kernel <a href=\"https://www.kaggle.com/code/owaiskhan9654/shelf-object-detection-yolov7-pytorch/notebook\">Link</a> <br></center>"
        
    
    "<center> HuggingFace🤗 Model Deployed Repository <a href=\"https://huggingface.co/thoucentric/Shelf_Objects_Detection_Yolov7_Pytorch\">Link</a> <br></center>"
)

examples1=[["Images/Image1.jpg"],["Images/Image2.jpg"],["Images/Image3.jpg"],["Images/Image4.jpg"],["Images/Image5.jpg"],["Images/Image6.jpg"]]

Top_Title="Yolov7 🚀 Custom Trained by <a href='https://www.linkedin.com/in/owaiskhan9654/' style='text-decoration: underline' target='_blank'>Owais Ahmad </center></a> on around 140 general items in Stores"
css = ".output-image, .input-image {height: 50rem !important; width: 100% !important;}"
css = ".image-preview {height: auto !important;}"

gr.Interface(
    fn=object_detection,
    inputs=inputs,
    outputs=[outputs,outputs_cls],
    title=Top_Title,
    description=Custom_description,
    article=Footer,
    cache= False,
    allow_flagging='never',
    examples=examples1).launch()