| import gradio as gr |
| import cv2 |
| import numpy as np |
| from utils.preprocessing import ImageProcessor |
|
|
| |
| processor = ImageProcessor("models/best.pt") |
|
|
| def process_image(input_image): |
| if input_image is None: |
| raise gr.Error("Please upload an image first!") |
| |
| |
| _, img_bytes = cv2.imencode(".png", input_image) |
| |
| |
| results = processor.process_image(img_bytes.tobytes()) |
| |
| |
| return { |
| class_name: (mask * 255).astype(np.uint8) |
| for class_name, mask in results.items() |
| } |
|
|
| |
| with gr.Blocks(title="Fashion Segmenter") as demo: |
| gr.Markdown("# 🧥 Fashion Item Segmenter") |
| |
| with gr.Row(): |
| input_image = gr.Image(label="Upload Clothing Image", type="numpy") |
| output_gallery = gr.Gallery(label="Segmented Items", columns=2) |
| |
| with gr.Row(): |
| run_btn = gr.Button("Process Image", variant="primary") |
| examples = gr.Examples( |
| examples=["sample1.jpg", "sample2.jpg"], |
| inputs=[input_image], |
| label="Example Images" |
| ) |
|
|
| run_btn.click( |
| fn=process_image, |
| inputs=[input_image], |
| outputs=[output_gallery], |
| show_progress=True |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch() |