--- license: apache-2.0 sdk: docker pinned: true short_description: Detect deforestation from satellite imagery. --- # ๐ŸŒณ Deforestation Detection using Satellite Imagery This project aims to **detect deforestation from satellite images** using a **U-Net deep learning model**. It leverages automated satellite data collection, image segmentation techniques, and Earth Engine + TensorFlow pipelines to help environmental organizations monitor illegal deforestation in near real-time.

--- ## ๐Ÿ“Œ Project Objective > **Can an automated model built on satellite imagery help environmental organizations monitor illegal deforestation in near real-time?** We aim to answer this by building a robust deep learning pipeline that: - Collects satellite imagery for selected regions and years. - Trains a U-Net segmentation model on forest/non-forest (or deforested) labels. - Allows users to input coordinates + year and visualize predictions on a Leaflet map. --- ## ๐Ÿ›ฐ๏ธ Data Collection & Preprocessing We use **Google Earth Engine (GEE)** to fetch Sentinel-2 or Landsat-8 imagery and NDVI indices. ### Data Sources: - **Imagery**: Landsat-8 (30m resolution), optionally Sentinel-2 (10m resolution). - **Labels**: Derived using NDVI and/or forest loss layers from Global Forest Change dataset. ### Preprocessing: - Region-wise time-lapse collection. - NDVI-based labeling: Thresholding NDVI to identify vegetation loss. - Tiling large images into patches. - Saving as `.npy` and `.tfrecord` formats for model training. --- ## ๐Ÿง  Model Architecture The model uses a **U-Net architecture** implemented in **TensorFlow**, designed for image segmentation tasks. - **Input**: Satellite image patches (RGB or NDVI composite). - **Output**: Binary mask indicating deforested areas. ### Features: - Batch normalization and dropout regularization - Dice coefficient + binary cross-entropy loss - Data augmentation (rotation, flipping, contrast) --- ## โš™๏ธ Training ```bash python train.py --epochs 50 --batch_size 16 --data_dir ./data --save_model ./models/unet_deforestation.h5 ``` ## ๐Ÿ“ˆ Evaluation The trained model is evaluated on a held-out test set using the following metrics: - **IoU (Intersection over Union)**: Measures the overlap between predicted deforested area and ground truth. - **Dice Coefficient**: Especially useful for imbalanced classes. - **Precision & Recall**: To understand false positives and false negatives. - **F1 Score**: Harmonic mean of precision and recall. --- ## ๐ŸŒ Deployment ### Hugging Face Space ๐Ÿš€ Visit: [**Deforestation Detection on Hugging Face**](https://huggingface.co/spaces/ojasrohatgi/Deforestation-Detection) Features: - Interactive Leaflet map to select coordinates - Year input to analyze temporal deforestation - On-click image fetching and prediction overlay - Downloadable prediction masks for offline use ### Backend Logic The backend takes user inputs (`lat, lon, year`), queries GEE for imagery, preprocesses it into patches, passes it to the trained U-Net model, and returns a combined prediction image with overlays. --- ## ๐Ÿงพ Project Structure ```bash Deforestation-Detection/ โ”‚ โ”œโ”€โ”€ app/ # Streamlit-based frontend interface โ”‚ โ”œโ”€โ”€ main.py # Streamlit UI & user interaction logic โ”‚ โ”œโ”€โ”€ map_component.html # Leaflet map integration for coordinate input โ”‚ โ”œโ”€โ”€ overlay.py # Image overlay + visualization helpers โ”‚ โ””โ”€โ”€ utils.py # Patching, preprocessing, and GEE interaction โ”‚ โ”œโ”€โ”€ model/ # Trained model artifacts โ”‚ โ””โ”€โ”€ unet_deforestation.h5 # Final trained U-Net model โ”‚ โ”œโ”€โ”€ earth_engine/ # Scripts for working with GEE โ”‚ โ””โ”€โ”€ export_data.py # Downloads satellite images + NDVI labels โ”‚ โ”œโ”€โ”€ training/ # Model architecture and training logic โ”‚ โ”œโ”€โ”€ train.py # Model training loop โ”‚ โ”œโ”€โ”€ evaluate.py # Evaluation script for test data โ”‚ โ”œโ”€โ”€ metrics.py # IoU, Dice, and other evaluation metrics โ”‚ โ””โ”€โ”€ unet_model.py # Custom U-Net implementation โ”‚ โ”œโ”€โ”€ data/ # Data directory (images, masks, TFRecords) โ”‚ โ”œโ”€โ”€ train/ # Training image and mask patches โ”‚ โ”œโ”€โ”€ val/ # Validation image and mask patches โ”‚ โ””โ”€โ”€ test/ # Test image and mask patches โ”‚ โ”œโ”€โ”€ requirements.txt # Python dependencies โ”œโ”€โ”€ README.md # This file โ””โ”€โ”€ .gitattributes / .gitignore # GitHub config files ``` ## ๐Ÿงช How to Run Locally ### 1. Clone the repository ```bash git clone [https://github.com/Ojas-Rohatgi/Deforestation-Detection](https://github.com/Ojas-Rohatgi/Deforestation-Detection) cd Deforestation-Detection ``` ### 2. Set up a virtual environment ```bash python -m venv venv source venv/bin/activate ย # On Windows: venv\Scripts\activate pip install -r requirements.txt ``` ### 3. Prepare data Ensure you have satellite imagery and labeled NDVI masks stored in the `data/` folder. You can generate training data using Earth Engine export scripts in `earth_engine/export_data.py`. ### 4. Train the model ```bash python training/train.py --epochs 50 --batch\_size 16 --data\_dir ./data --save\_model ./model/unet\_deforestation.h5 ``` You can configure the number of epochs, batch size, and save path as needed. ### 5. Run the app ```bash cd app streamlit run main.py ``` This will launch a web interface where you can: * Select a region using the interactive Leaflet map * Input a year (e.g., 2020) * Fetch satellite imagery and get prediction overlays --- ## โ˜๏ธ Deployment This app is live at: ๐Ÿ”— [Hugging Face Spaces โ€“ ojasrohatgi/Deforestation-Detection](https://huggingface.co/spaces/ojasrohatgi/Deforestation-Detection) ### Features: * ๐ŸŒ Interactive map for selecting location * ๐Ÿ“… Year input for time-based analysis * ๐Ÿ“ท Automatic image fetch via GEE * ๐Ÿง  Real-time inference with trained U-Net * ๐Ÿ–ผ๏ธ Visual overlay of predictions * โฌ‡๏ธ Option to download the prediction mask --- ## โš™๏ธ Tech Stack | Component | Tools Used | | ---------------- | -------------------------------------- | | Model | TensorFlow 2.x, Keras, U-Net | | Data Source | Google Earth Engine (Landsat-8, NDVI) | | Frontend | Flask, Leaflet.js | | Image Processing | NumPy, OpenCV, Matplotlib, PIL | | Deployment | Hugging Face Spaces, GitHub | | Output Formats | PNG masks, NumPy arrays, TFRecords | --- ## ๐Ÿš€ Future Roadmap * [ ] Multi-year change detection (e.g., forest loss between 2015โ€“2023) * [ ] Visual heatmaps of deforestation severity * [ ] Region-specific fine-tuning for Southeast Asia, Amazon, and Africa * [ ] Support for multispectral and SAR imagery * [ ] Webhooks/API integration for automated NGO alerts --- ## ๐Ÿ™‹โ€โ™‚๏ธ Author **Ojas Rohatgi** Final Year B.Tech โ€“ Computer Science (Data Science & AI) SRM University, Sonepat, Haryana, India * ๐Ÿ”— GitHub: [Ojas-Rohatgi](https://github.com/Ojas-Rohatgi) * ๐Ÿ”— Hugging Face: [ojasrohatgi](https://huggingface.co/ojasrohatgi) --- ## ๐Ÿ“œ License This project is licensed under the **MIT License**. See the [LICENSE](LICENSE) file for full license text. --- ## โญ๏ธ Support This Project If you found this useful: * ๐ŸŒŸ Star this repository on GitHub * ๐Ÿš€ Share the Hugging Face app with your network * ๐Ÿ“ข Report issues or suggest improvements in the Issues tab