Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import requests | |
| from PIL import Image | |
| import io | |
| import base64 | |
| import logging | |
| from app import ModelManager | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| def process_image(url: str): | |
| try: | |
| # Initialize model manager (will load models if not already loaded) | |
| model_manager = ModelManager() | |
| # Download image from URL | |
| response = requests.get(url, stream=True) | |
| if response.status_code != 200: | |
| raise ValueError("Could not download image from URL") | |
| # Process image | |
| image = Image.open(response.raw).convert("RGB") | |
| result = model_manager.process_clothes_image(image) | |
| # Convert base64 mask back to image | |
| mask_data = result["mask"].split(",")[1] | |
| mask_bytes = base64.b64decode(mask_data) | |
| mask_image = Image.open(io.BytesIO(mask_bytes)) | |
| return image, mask_image, f"Processed image size: {result['size']}" | |
| except Exception as e: | |
| logger.error(f"Error processing image: {str(e)}") | |
| return None, None, f"Error: {str(e)}" | |
| # Create Gradio interface | |
| iface = gr.Interface( | |
| fn=process_image, | |
| inputs=gr.Textbox(label="Image URL", placeholder="Enter the URL of the image"), | |
| outputs=[ | |
| gr.Image(label="Original Image"), | |
| gr.Image(label="Segmentation Mask"), | |
| gr.Textbox(label="Processing Info") | |
| ], | |
| title="Clothes Segmentation", | |
| description="Enter an image URL to generate a segmentation mask for clothing items.", | |
| examples=[ | |
| ["https://example.com/path/to/clothing/image.jpg"], | |
| ["https://another-example.com/fashion/photo.jpg"] | |
| ], | |
| allow_flagging="never" | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch(server_port=7861) # Using different port than FastAPI | |