DavidFM43 commited on
Commit
d17e4b7
1 Parent(s): ef005af

Add article to demo

Browse files
Files changed (3) hide show
  1. .gitattributes +1 -0
  2. app.py +13 -6
  3. article.md +29 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
35
  *.jpg filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
35
  *.jpg filter=lfs diff=lfs merge=lfs -text
36
+ *.png filter=lfs diff=lfs merge=lfs -text
app.py CHANGED
@@ -101,20 +101,27 @@ def segment(satellite_image: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
101
  return raw_segmentation, segmentation_overlay
102
 
103
 
104
- i = gr.inputs.Image()
105
- o = [gr.Image(), gr.Image()]
106
  images_dir = "sample_sat_images/"
107
  examples = [f"{images_dir}/{image_id}" for image_id in os.listdir(images_dir)]
108
- title = "Satellite Images Landcover Segmentation"
109
- description = "Upload an image or select from examples to segment"
 
 
 
 
 
 
110
 
111
  iface = gr.Interface(
112
  segment,
113
- i,
114
- o,
115
  examples=examples,
116
  title=title,
117
  description=description,
118
  cache_examples=True,
 
119
  )
120
  iface.launch()
 
101
  return raw_segmentation, segmentation_overlay
102
 
103
 
104
+ inputs = gr.inputs.Image(label="Input Image")
105
+ outputs = [gr.Image(label="Raw Segmentation"), gr.Image(label="Segmentation Overlay")]
106
  images_dir = "sample_sat_images/"
107
  examples = [f"{images_dir}/{image_id}" for image_id in os.listdir(images_dir)]
108
+ title = "Satellite Images Landcover Classification"
109
+ description = (
110
+ "Upload a satellite image from your computer or select one from"
111
+ " the examples to automatically. The model will segment the landcover"
112
+ " types from a preselected set of possible types."
113
+ )
114
+ article = open("article.md", "r").read()
115
+
116
 
117
  iface = gr.Interface(
118
  segment,
119
+ inputs,
120
+ outputs,
121
  examples=examples,
122
  title=title,
123
  description=description,
124
  cache_examples=True,
125
+ article=article,
126
  )
127
  iface.launch()
article.md ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## **Problem statement**
2
+
3
+ The objective of this task is to classify different landcover types in a satellite image. This problem is approached as a machine learning task known as semantic segmentation, where the goal is to predict the class label for each individual pixel in the image.
4
+
5
+ ## **Dataset**
6
+ The [dataset](https://www.kaggle.com/datasets/balraj98/deepglobe-land-cover-classification-dataset) used for this project is from the 2018 DeepGlobe Landcover Classification Challenge. It consists of a total of 803 satellite images, each with dimensions of 2448x2448 pixels. Each image in the dataset is accompanied by a segmentation mask that assigns class labels to the pixels.
7
+
8
+ | Landcover Name | Color | Explanation / Function |
9
+ | -------------------- | ------------------------ | ------------------------------------------------------------ |
10
+ | Urban land | <span style="color:cyan">Cyan</span> | Man-made, built-up areas with human artifacts |
11
+ | Agriculture land | <span style="color:yellow">Yellow</span> | Farms, planned plantations, cropland, orchards |
12
+ | Rangeland | <span style="color:magenta">Magenta</span> | Non-forest, non-farm, green land, grass |
13
+ | Forest land | <span style="color:green">Green</span> | Land with at least 20% tree crown density and clear cuts |
14
+ | Water | <span style="color:blue">Blue</span> | Rivers, oceans, lakes, wetlands, ponds |
15
+ | Barren land | <span style="color:gray">White</span> | Mountains, rocks, deserts, beaches, vegetation-free land |
16
+ | Unknown | <span style="color:black">Black</span> | Clouds and others |
17
+
18
+ ## **Model**
19
+ For this task, we utilized a pre-trained UNet model with weights pretrained on the ImageNet dataset. We then fine-tuned the UNet using the DeepGlobe Landcover Classification dataset. The training process took approximately 2 hours using a single NVIDIA T4 GPU.
20
+ ## **Team members**
21
+ David Mora
22
+
23
+ Eduard's Mendez
24
+
25
+ Santiago Ahumada
26
+
27
+ ## **Aditional information**
28
+
29
+ If you are interested in contributing to the project or just getting more information about the details you can head over to our GitHub [repository](https://github.com/DavidFM43/landcover-segmentation).