Spaces:
Runtime error
Runtime error
Download app.py from hb-setosys/ResNet152-Image-classifier: direct link, hf CLI and curl.
- Browser
- Download file 1.94 kB
-
https://huggingface.co/spaces/hb-setosys/ResNet152-Image-classifier/resolve/main/app.py
- Command line
-
hf download hf://spaces/hb-setosys/ResNet152-Image-classifier/app.py
-
curl -L -o app.py https://huggingface.co/spaces/hb-setosys/ResNet152-Image-classifier/resolve/main/app.py
1.94 kB
| import gradio as gr | |
| import tensorflow as tf | |
| from tensorflow.keras.applications import EfficientNetV2L | |
| from tensorflow.keras.applications.efficientnet_v2 import preprocess_input, decode_predictions | |
| import numpy as np | |
| from PIL import Image | |
| # Lazy loading to optimize memory usage | |
| model = None | |
| def load_model(): | |
| """Load the EfficientNetV2L model only when needed.""" | |
| global model | |
| if model is None: | |
| model = EfficientNetV2L(weights="imagenet") | |
| def preprocess_image(image): | |
| """Preprocess the image for EfficientNetV2L model inference.""" | |
| image = image.resize((480, 480)) # Resize for EfficientNetV2L | |
| image_array = np.array(image) # Convert to NumPy array | |
| image_array = preprocess_input(image_array) # Normalize input | |
| image_array = np.expand_dims(image_array, axis=0) # Add batch dimension | |
| return image_array | |
| def predict_image(image): | |
| """ | |
| Process the uploaded image and return the top 3 predictions. | |
| """ | |
| try: | |
| load_model() # Ensure the model is loaded | |
| image_array = preprocess_image(image) # Preprocess image | |
| predictions = model.predict(image_array) # Get predictions | |
| decoded_predictions = decode_predictions(predictions, top=3)[0] | |
| # Format predictions as a dictionary (label -> confidence) | |
| return {label: float(confidence) for _, label, confidence in decoded_predictions} | |
| except Exception as e: | |
| return {"Error": str(e)} | |
| # Create the Gradio interface | |
| interface = gr.Interface( | |
| fn=predict_image, | |
| inputs=gr.Image(type="pil"), # Accepts an image input | |
| outputs=gr.Label(num_top_classes=3), # Shows top 3 predictions | |
| title="EfficientNetV2L Image Classifier", | |
| description="Upload an image, and the model will predict its content with high accuracy.", | |
| allow_flagging="never" # Disable flagging to avoid unnecessary logs | |
| ) | |
| # Launch the Gradio app | |
| if __name__ == "__main__": | |
| interface.launch() | |