nasa-sen1floods11-fastdash / fast_dash_app.py
Kedar Dabhadkar
Update script
ade8ae7
raw
history blame
1.75 kB
import os
from fast_dash import FastDash, UploadImage, Image, Upload
import PIL
import numpy as np
from app import func
import tempfile
import base64
examples = ["India_900498_S2Hand", "Spain_7370579_S2Hand", "USA_430764_S2Hand"]
def detect_water(select_an_example: str = examples, input_tiff_image: Upload = None) -> (Image, Image):
"""
NASA and IBM recently uploaded their foundation model on Hugging Face, Pritivi, at https://huggingface.co/ibm-nasa-geospatial.
This demo, built with Fast Dash, showcases a version of Prithvi that they finetuned to detect water from satellite images.
Select an example or upload your own TIFF image.
If uploading your own image, read the format details at https://huggingface.co/ibm-nasa-geospatial/Prithvi-100M-sen1floods11.
"""
# If example is selected
if input_tiff_image is None:
input_satellite_image = PIL.Image.open(os.path.join("examples", f"{select_an_example}.png"))
water_prediction_mask = PIL.Image.open(os.path.join("examples", f"{select_an_example}_result.png"))
# If file is uploaded, run inference
else:
with tempfile.NamedTemporaryFile(delete=False) as f:
contents = input_tiff_image.encode("utf8").split(b";base64,")[1]
f.write(base64.decodebytes(contents))
input_satellite_image, water_prediction_mask = func(f)
input_satellite_image = PIL.Image.fromarray(np.uint8(input_satellite_image)).convert('RGB')
water_prediction_mask = PIL.Image.fromarray(np.uint8(water_prediction_mask)).convert('RGB')
return input_satellite_image, water_prediction_mask
app = FastDash(detect_water, theme="cosmo", port=7860)
server = app.server
if __name__ == "__main__":
app.run()