Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,158 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Wetlands Segmentation Model (DeepLabv3+)
|
2 |
+
|
3 |
+
## Model Description
|
4 |
+
|
5 |
+
This repository contains a DeepLabv3+ model trained for wetlands segmentation from satellite imagery. The model is designed to identify wetland areas in multi-band satellite images, which is crucial for environmental monitoring, conservation planning, and climate change studies.
|
6 |
+
|
7 |
+
### Model Architecture
|
8 |
+
|
9 |
+
- **Base Architecture**: DeepLabv3+ with ResNet-50 backbone
|
10 |
+
- **Input**: Multi-band satellite imagery (focusing on RGB bands)
|
11 |
+
- **Output**: Binary segmentation mask (Wetland vs Background)
|
12 |
+
- **Resolution**: 128Γ128 pixels
|
13 |
+
|
14 |
+
## Use Cases
|
15 |
+
|
16 |
+
- Environmental monitoring of wetland regions
|
17 |
+
- Land use and land cover change analysis
|
18 |
+
- Conservation planning and management
|
19 |
+
- Climate change impact assessment
|
20 |
+
- Hydrological modeling
|
21 |
+
|
22 |
+
## Training Data
|
23 |
+
|
24 |
+
The model was trained on a dataset of satellite imagery patches containing wetland regions. Each patch is 128Γ128 pixels and includes multiple spectral bands.
|
25 |
+
|
26 |
+
### Dataset Structure
|
27 |
+
```
|
28 |
+
patches_data_allbands/
|
29 |
+
βββ train/
|
30 |
+
β βββ input/ # Satellite image patches (.tif)
|
31 |
+
β βββ output/ # Segmentation masks (.tif)
|
32 |
+
βββ val/
|
33 |
+
β βββ input/
|
34 |
+
β βββ output/
|
35 |
+
βββ test/
|
36 |
+
βββ input/
|
37 |
+
βββ output/
|
38 |
+
```
|
39 |
+
|
40 |
+
### Data Preprocessing
|
41 |
+
|
42 |
+
- Each TIF image contains multiple spectral bands
|
43 |
+
- For this model, RGB bands (bands 1, 2, 3) were extracted
|
44 |
+
- Images were normalized to the range [0, 1]
|
45 |
+
- Masks were converted to binary format (0 = background, 1 = wetland)
|
46 |
+
|
47 |
+
### Data Augmentation
|
48 |
+
|
49 |
+
The following augmentations were applied during training:
|
50 |
+
- Random horizontal flips (p=0.5)
|
51 |
+
- Random vertical flips (p=0.5)
|
52 |
+
- Random 90-degree rotations (p=0.5)
|
53 |
+
- Padding to ensure 128Γ128 dimensions
|
54 |
+
- Random cropping to maintain consistent size
|
55 |
+
|
56 |
+
## Performance Metrics
|
57 |
+
|
58 |
+
The model was evaluated using the following metrics:
|
59 |
+
|
60 |
+
### Training Set
|
61 |
+
- Average IoU: 0.2472
|
62 |
+
- Background IoU: 0.9379
|
63 |
+
- Wetland IoU: 0.2450
|
64 |
+
- Mean IoU: 0.5915
|
65 |
+
- Precision: 0.2620
|
66 |
+
- Recall: 0.7908
|
67 |
+
- F1 Score: 0.3936
|
68 |
+
|
69 |
+
### Validation Set
|
70 |
+
- Average IoU: 0.0489
|
71 |
+
- Background IoU: 0.9515
|
72 |
+
- Wetland IoU: 0.0481
|
73 |
+
- Mean IoU: 0.4998
|
74 |
+
- Precision: 0.0533
|
75 |
+
- Recall: 0.3313
|
76 |
+
- F1 Score: 0.0918
|
77 |
+
|
78 |
+
### Test Set
|
79 |
+
- Average IoU: 0.1550
|
80 |
+
- Background IoU: 0.8977
|
81 |
+
- Wetland IoU: 0.1558
|
82 |
+
- Mean IoU: 0.5267
|
83 |
+
- Precision: 0.1720
|
84 |
+
- Recall: 0.6229
|
85 |
+
- F1 Score: 0.2695
|
86 |
+
|
87 |
+
## Known Limitations
|
88 |
+
|
89 |
+
- The model shows signs of overfitting, with significantly better performance on the training set compared to validation and test sets
|
90 |
+
- Limited to RGB bands analysis (future work could incorporate more spectral bands)
|
91 |
+
- Performance varies based on the quality and resolution of input imagery
|
92 |
+
- Binary segmentation only (wetland vs. non-wetland)
|
93 |
+
|
94 |
+
## Usage
|
95 |
+
|
96 |
+
Here's how to use the model for inference:
|
97 |
+
|
98 |
+
```python
|
99 |
+
import torch
|
100 |
+
from torchvision import transforms
|
101 |
+
import rasterio
|
102 |
+
import numpy as np
|
103 |
+
from model import DeepLabv3Plus # Import your model architecture
|
104 |
+
|
105 |
+
# Load the model
|
106 |
+
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
107 |
+
model = DeepLabv3Plus(num_classes=2) # Adjust based on your model configuration
|
108 |
+
model.load_state_dict(torch.load("model_weights.pth", map_location=device))
|
109 |
+
model.to(device)
|
110 |
+
model.eval()
|
111 |
+
|
112 |
+
# Function to preprocess and predict
|
113 |
+
def predict_wetland(image_path):
|
114 |
+
# Read image using rasterio (get RGB bands)
|
115 |
+
with rasterio.open(image_path) as src:
|
116 |
+
red = src.read(1)
|
117 |
+
green = src.read(2)
|
118 |
+
blue = src.read(3)
|
119 |
+
|
120 |
+
# Stack to create RGB image
|
121 |
+
image = np.dstack((red, green, blue)).astype(np.float32)
|
122 |
+
|
123 |
+
# Normalize
|
124 |
+
if image.max() > 0:
|
125 |
+
image = image / image.max()
|
126 |
+
|
127 |
+
# Convert to tensor and add batch dimension
|
128 |
+
image = torch.from_numpy(image.transpose(2, 0, 1)).float().unsqueeze(0)
|
129 |
+
image = image.to(device)
|
130 |
+
|
131 |
+
# Get prediction
|
132 |
+
with torch.no_grad():
|
133 |
+
output = model(image)
|
134 |
+
prediction = torch.argmax(output, dim=1).squeeze(0).cpu().numpy()
|
135 |
+
|
136 |
+
return prediction
|
137 |
+
```
|
138 |
+
|
139 |
+
## Citation
|
140 |
+
|
141 |
+
If you use this model in your research, please cite:
|
142 |
+
|
143 |
+
```
|
144 |
+
@software{wetlands_segmentation_deeplabsv3plus,
|
145 |
+
author = {dcrey7},
|
146 |
+
title = {Wetlands Segmentation using DeepLabv3+},
|
147 |
+
url = {https://huggingface.co/dcrey7/wetlands_segmentation_deeplabsv3plus},
|
148 |
+
year = {2025},
|
149 |
+
}
|
150 |
+
```
|
151 |
+
|
152 |
+
## License
|
153 |
+
|
154 |
+
This model is available under the Apache 2.0 license.
|
155 |
+
|
156 |
+
## Contact
|
157 |
+
|
158 |
+
For questions or feedback, please open an issue on this repository or contact the repository owner via HuggingFace.
|