IsThisWater is a web app that detects the existence of any surface water (rivers, lakes, oceans, etc.) within a square satellite image of the surface of the Earth.
One of the most important concerns with climate change is the increasing scarcity of freshwater sources. One of the ways that technology can be used to mitigate this problem is understanding where and how much water exists on the surface of the Earth. Convolutional neural networks have been used successfully in the past to identify and map surface water from Landsat images, as explained in studies like this and this.
This project is a work in progress:
- Create data labelling app
- Create water detection frontend
- Label 2000-3000 images
- Build convnet model
- Perform data augmentation and train model on the images
- Connect frontend with model prediction endpoint in backend
- Clone the repo.
- Run
pipenv install
inside the cloned repo.
-
Run
get_site_data_from_cities.ipynb
to collect geographical coordinates for random sites located near select U.S. cities. -
Run
download_base_images.ipynb
to download satellite images from Mapbox at zoom level 15 for each of the sites. The images are saved locally at the location dictated by theBASE_IMAGES_DIRECTORY
variable. -
Run
data_labelling/app.py
with Python 3 to open the data labelling app atlocalhost:5000
. The app will automatically load each image using an iterator in the backend. -
For each image, click either "No", "Yes", or "Ignore" to label the image. The image will be moved to the appropriate folder inside the
static
folder, and the next image will load. -
To zoom in or out, use the corresponding buttons, and the base image (at zoom level 15) will be replaced by an image at the correct zoom level.
-
Close the app when all the images are labelled.