In the early stages of architectural design, there is a concept about the axis in which direction the building will be placed. This plays an important role in determining the optimal layout considering the functionality, aesthetics, and environmental conditions of the building.
The goal of this project is to develop a segmenter that can determine how many axes a given 2D polygon should be segmented into and how to make those segmentations using a Graph Convolutional Network (GCN). The detailed process for this project is archived here.
Inference process
From the top, topk segmentations · segmentation selected by predictor
This repository uses the image named nvcr.io/nvidia/pytorch:23.10-py3
for running devcontainer.
-
Ensure you have Docker and Visual Studio Code with the Remote - Containers extension installed.
-
Clone the repository.
git clone https://github.com/PARKCHEOLHEE-lab/polygon-segmentation-with-gcn.git
-
Open the project with VSCode.
-
When prompted at the bottom left on the VSCode, click
Reopen in Container
or use the command palette (F1) and selectRemote-Containers: Reopen in Container
. -
VS Code will build the Docker container and set up the environment.
-
Once the container is built and running, you're ready to start working with the project.
shp/
: The directory containing the raw shapefiles.raw/
: The directory containing the raw data created bydata_creator.py
.processed/merged/
: The directory containing the data for training and testing.
data-creation.ipynb
: Execute to create the graph-shaped polygon dataset.polygon-segmentation-with-gcn.ipynb
: Execute the whole processes for the training and testing.
2024-06-06_08-42-18
: The directory containing the tensorboard logs and the states of the training.states/states.pth
: Pre-trained model states.
commonutils.py
: Utility functions not related to the model.config.py
: Configurations related to the model and data.data_creator.py
: Creates the graph-shaped polygon dataset in .pt format by a naive algorithm.- You can see the created dataset in
projects\polygon_segmentation_with_gcn\data\processed\merged
- You can see the created dataset in
dataset.py
: Defines the dataset class for training, evaluating and testing.enums.py
: Defines the enumeration classes for the raw data.model.py
: Defines the model class and trainer class.