|
|
|
|
|
|
|
|
import gradio as gr |
|
|
from ultralyticsplus import YOLO |
|
|
from PIL import Image |
|
|
import numpy as np |
|
|
|
|
|
|
|
|
model = YOLO('foduucom/product-detection-in-shelf-yolov8') |
|
|
|
|
|
|
|
|
model.overrides['conf'] = 0.25 |
|
|
model.overrides['iou'] = 0.45 |
|
|
model.overrides['agnostic_nms'] = False |
|
|
model.overrides['max_det'] = 1000 |
|
|
|
|
|
def detect_skus(image): |
|
|
|
|
|
results = model(image) |
|
|
|
|
|
|
|
|
sku_set = set() |
|
|
for result in results: |
|
|
for box in result.boxes: |
|
|
class_id = int(box.cls) |
|
|
sku_name = result.names[class_id] |
|
|
sku_set.add(sku_name) |
|
|
|
|
|
sku_list = list(sku_set) |
|
|
return "\n".join(sku_list) if sku_list else "No SKUs detected." |
|
|
|
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=detect_skus, |
|
|
inputs=gr.Image(type="pil", label="Upload Shelf Image"), |
|
|
outputs=gr.Textbox(label="Detected SKUs"), |
|
|
title="Shelf SKU Detector", |
|
|
description="Upload an image of a cigarette shelf to detect and list the SKUs." |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
iface.launch() |