Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rml1812/uav-semantic-segmentation-clustering
Semantic segmentation of UAV imagery using KMeans clustering
https://github.com/rml1812/uav-semantic-segmentation-clustering
jupyter-notebook kmeans kmeans-clustering python semantic-segmentation streamlit uav uav-images
Last synced: about 1 month ago
JSON representation
Semantic segmentation of UAV imagery using KMeans clustering
- Host: GitHub
- URL: https://github.com/rml1812/uav-semantic-segmentation-clustering
- Owner: RML1812
- Created: 2024-10-03T08:42:57.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-10-17T01:16:55.000Z (about 1 month ago)
- Last Synced: 2024-10-18T23:22:08.738Z (about 1 month ago)
- Topics: jupyter-notebook, kmeans, kmeans-clustering, python, semantic-segmentation, streamlit, uav, uav-images
- Language: Jupyter Notebook
- Homepage:
- Size: 5.78 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# UAV Semantic Segmentation Clustering
## Contributors
| Name | NPM |
|------------------------------------------|----------------|
| [Muhammad Giat](https://github.com/mhmmadgiatt) | 140810210013 |
| [Raditya Muhamad Lacavi](https://github.com/RML1812) | 140810210019 |
| [Varian Avila Faldi](https://github.com/Varianrian) | 140810210053 |---
## Description
This project focuses on **semantic segmentation of UAV (Unmanned Aerial Vehicle) imagery** using **KMeans clustering** implemented in Python. It provides an **interactive web-based interface** powered by **Streamlit**, allowing users to explore, train, and visualize the segmentation results directly from their browser. Users can either manually define cluster sizes or allow the app to automatically determine the optimal clusters for segmentation.
---
## Dataset
The aerial imagery dataset used for this project can be found on Kaggle:
[Semantic Segmentation of Aerial Imagery](https://www.kaggle.com/datasets/humansintheloop/semantic-segmentation-of-aerial-imagery)---
## Functionality
The app offers the following features:
1. **Cluster Size Selection**:
- Manual mode: Users manually specify the number of clusters.
- Automatic mode: The app determines the optimal number of clusters using the `fit_auto()` method.2. **Dataset Loading**:
- Load UAV images and their corresponding masks from the provided dataset.
- Display sample images and masks for quick visualization.3. **Model Training**:
- Train the KMeans model using either manual or automatic cluster size selection.
- Store the trained model for future predictions or evaluations.4. **Segmentation Prediction**:
- Perform segmentation on:
- **Sample images** from the loaded dataset.
- **Uploaded images** manually provided by the user.
- Display the original image, predicted segmentation, and ground truth mask side-by-side.5. **Model Evaluation**:
- Evaluate the segmentation on a **single uploaded image** with a ground truth mask.
- Compute the **V-measure score** to assess clustering quality.
- Option to evaluate the **entire dataset** to get an average V-measure score.6. **Model Persistence**:
- **Save** the trained model to disk for reuse.
- **Load** a previously saved model for further predictions and evaluation.---
## Installation and Running the App
### Prerequisites
- Make sure you have Python installed. You can download it from [python.org](https://www.python.org/downloads/).
### Step 1: Clone the Repository
```bash
git clone https://github.com/uav-semantic-segmentation-clustering.git
cd uav-semantic-segmentation-clustering
```### Step 2: Install Dependencies
Use the following command to install the required libraries from `requirements.txt`:
```bash
pip install -r requirements.txt
```### Step 3: Run the Streamlit App
Execute the following command to start the Streamlit application:
```bash
streamlit run app.py
```### Step 4: Access the App
After running the above command, the terminal will display a **local URL** (e.g., `http://localhost:8501`). Open it in your browser to access the app.
---
## How to Use the App
1. **Load Dataset**: Click the **"Load Dataset"** button to load sample images and masks.
2. **Configure Model**: Choose manual or automatic mode for cluster size selection.
3. **Train Model**: Click **"Train Model"** to fit the KMeans model on the dataset.
4. **Prediction & Evaluation**: Use provided buttons to test the model on sample or uploaded images.
5. **Save/Load Model**: Save the trained model for future use or load an existing model.---
## License
This project is open-source and available under the [MIT License](LICENSE).