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="Custom Training Performed on Kaggle Link
Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors
Works on around 140 general items in Stores"
Footer = (
"
Item Classes it will detect(Total 140 Classes)
"
""
"
Model Trained by: Owais Ahmad Data Scientist at Thoucentric
"
" Model Trained Kaggle Kernel Link
"
" HuggingFace🤗 Model Deployed Repository Link
"
" Copyright © 2023 Thoucentric.All Rights Reserved"
)
examples1=[["Images/Image1.jpg"],["Images/Image2.jpg"],["Images/Image3.jpg"],["Images/Image4.jpg"],["Images/Image5.jpg"],["Images/Image6.jpg"],["Images/Image7.jpg"],["Images/Image8.jpg"],["Images/Image9.jpg"],["Images/Image10.jpg"],["Images/Image11.jpg"],["Images/Image12.jpg"],["Images/Image13.jpg"],["Images/Image14.jpg"],["Images/Image15.jpg"],["Images/Image16.jpg"],["Images/Image17.jpg"],["Images/Image18.jpg"],["Images/Image19.jpg"],["Images/Image20.jpg"]]
Top_Title="
Yolov7 🚀 Custom Trained on around 140 general items in Stores"
css = ".output-image {height: 50rem important; width: 100% !important;}, .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_examples= False,
allow_flagging='never',
examples=examples1).launch(debug=True)