Download app.py from Vinit710/ChangeD: direct link, hf CLI and curl.
- Browser
- Download file 1.59 kB
-
https://huggingface.co/spaces/Vinit710/ChangeD/resolve/main/app.py
- Command line
-
hf download hf://spaces/Vinit710/ChangeD/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Vinit710/ChangeD/resolve/main/app.py
1.59 kB
| import cv2 | |
| import numpy as np | |
| import tensorflow as tf | |
| import gradio as gr | |
| # Load the trained model | |
| model = tf.keras.models.load_model('unet_model.h5') | |
| # Function to preprocess the images | |
| def preprocess_images(old_image, current_image, img_size=128): | |
| old_image_resized = cv2.resize(old_image, (img_size, img_size)) / 255.0 | |
| current_image_resized = cv2.resize(current_image, (img_size, img_size)) / 255.0 | |
| input_combined = np.concatenate([old_image_resized, current_image_resized], axis=-1) | |
| input_combined = np.expand_dims(input_combined, axis=0) | |
| return input_combined | |
| # Prediction function | |
| def predict_mask(old_image, current_image): | |
| # Convert from PIL to numpy array | |
| old_image_np = np.array(old_image) | |
| current_image_np = np.array(current_image) | |
| # Preprocess images | |
| preprocessed_input = preprocess_images(old_image_np, current_image_np) | |
| # Predict the mask | |
| prediction = model.predict(preprocessed_input) | |
| prediction_mask = (prediction[0] > 0.5).astype(np.uint8) * 255 # Binary mask | |
| # Resize mask back to original size | |
| mask_resized = cv2.resize(prediction_mask, (old_image_np.shape[1], old_image_np.shape[0])) | |
| return mask_resized | |
| # Gradio Interface | |
| interface = gr.Interface( | |
| fn=predict_mask, | |
| inputs=[ | |
| gr.Image(label="Old Image"), | |
| gr.Image(label="Current Image") | |
| ], | |
| outputs=gr.Image(label="Predicted Mask"), | |
| title="Change Detection with U-Net", | |
| description="Upload two images (old and current) to detect changes using a U-Net model." | |
| ) | |
| if __name__ == "__main__": | |
| interface.launch() | |