{"id":22745991,"url":"https://github.com/tumftm/radargnn","last_synced_at":"2026-03-07T20:04:31.305Z","repository":{"id":153429770,"uuid":"624155835","full_name":"TUMFTM/RadarGNN","owner":"TUMFTM","description":"A graph neural network for the segmentation and object detection in radar point clouds.","archived":false,"fork":false,"pushed_at":"2025-01-10T07:34:49.000Z","size":578,"stargazers_count":92,"open_issues_count":0,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-30T18:08:15.849Z","etag":null,"topics":["detection","gnn","perception","radar","segmentation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TUMFTM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-05T21:34:29.000Z","updated_at":"2025-03-30T08:01:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"4b870c47-8327-4885-870b-d7e759aaa87b","html_url":"https://github.com/TUMFTM/RadarGNN","commit_stats":{"total_commits":6,"total_committers":2,"mean_commits":3.0,"dds":"0.16666666666666663","last_synced_commit":"764755453272286efb0b72c20e672e735e8a97b7"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FRadarGNN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FRadarGNN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FRadarGNN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TUMFTM%2FRadarGNN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TUMFTM","download_url":"https://codeload.github.com/TUMFTM/RadarGNN/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247535517,"owners_count":20954576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["detection","gnn","perception","radar","segmentation"],"created_at":"2024-12-11T02:09:48.567Z","updated_at":"2026-03-07T20:04:31.259Z","avatar_url":"https://github.com/TUMFTM.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7822037.svg)](https://doi.org/10.48550/arXiv.2304.06547)\n[![Linux](https://img.shields.io/badge/os-linux-blue.svg)](https://www.linux.org/)\n[![Docker](https://badgen.net/badge/icon/docker?icon=docker\u0026label)](https://www.docker.com/)\n[![Python 3.8](https://img.shields.io/badge/python-3.8-blue.svg)](https://www.python.org/downloads/release/python-380/)\n\n#  RadarGNN\nThis repository contains an implementation of a graph neural network for the segmentation and object detection in radar point clouds. As shown in the figure below, the model architecture consists of three major components: Graph constructor, GNN, and Post-Processor. \n\n![Model architecture](docs/Model.png)\n\nThe focus is on a modular implementation with the possibility to incorporate different invariances and equivariances into the overall model. It is built upon pytorch-geometric and provides usage with the [nuScenes](https://www.nuscenes.org/) and [RadarScenes](https://radar-scenes.com/) dataset.\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Results\nResults of our RadarGNN model for object detection and semantic segmentation on both the [nuScenes](https://www.nuscenes.org/) and the [RadarScenes](https://radar-scenes.com/) dataset. For more results, please refer to the related [paper](#citation).\n\n### BEV Object Detection and Semantic Segmentation (on RadarScenes)\n| Model    | Invariance             | mAP      | F1       | Checkpoint                                                              |\n|----------|------------------------|----------|----------|-------------------------------------------------------------------------|\n| RadarGNN | None                   | 19.4     | 68.1     | [Link](https://zenodo.org/record/7822037/files/model_01.zip?download=1) |\n| RadarGNN | Translation            | **56.5** | **77.1** | [Link](https://zenodo.org/record/7822037/files/model_02.zip?download=1) |\n| RadarGNN | Translation \u0026 Rotation | 19.6     | 76.5     | [Link](https://zenodo.org/record/7822037/files/model_03.zip?download=1) |\n\n\n### 3D Object Detection and Semantic Segmentation (on nuScenes)\n| Model    | Modality | Split | mAP | NDS | F1   | Checkpoint                                                              |\n|----------|----------|-------|-----|-----|------|-------------------------------------------------------------------------|\n| RadarGNN | Radar    | val   | 0.7 | 7.5 | 19.6 | [Link](https://zenodo.org/record/7822037/files/model_04.zip?download=1) |\n| RadarGNN | Radar    | test  | 0.7 | 5.9 | -    | [Link](https://zenodo.org/record/7822037/files/model_04.zip?download=1) |\n\n_Note: The RadarGNN model was not designed for 3D object detection on the nuScenes dataset but rather for bird’s-eye view (BEV) object detection on the RadarScenes dataset._\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Prerequisites\n- OS: `Ubuntu 20.04 LTS`\n- CUDA: `11.3`\n- cuDNN: `8`\n- Docker: `20.10`\n- NVIDIA Container Toolkit\n\u003cbr\u003e\n\n##  Preparation\nTo get started, first a project folder must be created. This folder contains everything related to this project. Inside the project folder create a \"data\" folder and within this folder, create a \"results\" subfolder. The trained models and evaluations will be stored in that folder. Depending on the desired dataset, create the following additional sub folders inside the \"data\" folder:\n- datasets/radarscenes/raw\n- datasets/nuscenes\n\nIn a second step follow the instructions of the [nuScenes](https://www.nuscenes.org/) and/or [RadarScenes](https://radar-scenes.com/) websites to download and store the datasets in the created sub folders. \n\nFinally, clone this repository into the project folder using the command:\n```\ngit clone https://github.com/TUMFTM/RadarGNN.git\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eIf you use the RadarScenes dataset, your folder structure should now look like this: \u003c/summary\u003e\n\n```\n.\n|  \n+---data/  \n|   |  \n|   +---datasets/  \n|   |   |  \n|   |   +---radarscenes/  \n|   |   |   |\n|   |   |   +---raw/                \n|   |   |   |   |\n|   |   |   |   +---License.md\n|   |   |   |   |\n|   |   |   |   +---data/        \n|   |\n|   +---results/  \n| \n+---docs/\n|\n+---configurations/\n|   \n+---test/\n|\n+---src/  \n|\n+---...\n```\n\u003c/details\u003e\n\u003cbr\u003e\n\n## Installation\nIt is recommended to use the provided [Dockerfile](Dockerfile) to build the development environment. However, if you don't want to use docker, you can also install the packages defined in [Dockerfile](Dockerfile) and [requirements.txt](requirements.txt) manually. To set up the environment with docker, run the following commands inside the repository folder:\n\n1. Ensure the you are inside the repository folder.\n```\ncd RadarGNN/\n```\n2. Create the docker image.\n```\ndocker build -t gnn:1.0 .\n```\n3. Run the container with GPU support and mount the \"data\" and \"configurations\" folder. By using the \"-it\" flag, the container is run in an interactive mode, so that you are directly inside the container after executing the command. Since the \"data\" and \"configurations\" folder are mounted, any changes in these folders are automatically mirrored from your local machine into the running docker container and vice versa. \n```\ndocker run -it --rm --gpus all -v ${local_path_to_data_folder}$:/app/data -v ${local_path_to_configurations_folder}$:/app/configurations gnn:1.0\n```\n4. Install the gnnradarobjectdetection package inside the container.\n```\npython3 -m pip install -e .\n```\n\u003cbr /\u003e\n\n##  Usage\nThe overall pipeline is divided into three major steps. \n\n- Creation of a graph-dataset from the raw RadarScenes or nuScenes dataset\n- Creation and training of a model based on the created graph-dataset\n- Evaluation of the trained model\n\nThe settings of all three steps are defined in a unified configuration file, which must consequently be created first.\n### 1. Create a configuration file \nThe configuration file contains three sections with relevant settings for the corresponding steps (dataset creation, training, evaluation). It can be created based on the provided [configuration description](/configurations/configuration_description.yml) and [configuration template](/configurations/configuration_template.yml).\n\u003cbr /\u003e\n\n### 2. Create a graph-dataset\nNext, the graph-dataset needs to be created by converting the radar point clouds of the raw datasets to a graph data structure. To do this, execute the following command inside the docker container: \n```\npython3 src/gnnradarobjectdetection/create_dataset.py --dataset ${path_to_raw_dataset_folder}$ --config ${path_to_config_file}$\n```\n\n```\nusage:          create_dataset.py [--dataset] [--config]\n\narguments:\n    --dataset   Path to the raw (RadarScenes/nuScenes) dataset\n    --config    Path to the created configuration.yml file\n```\n\nThe created graph-dataset is saved in the automatically created folder \"{path_to_dataset}/processed\". After creating the graph-dataset, this folder may be renamed.\n\u003cbr /\u003e\n\n### 3. Create and train a model\nIn a next step, you can use the created graph-dataset to train a model. To do this, run the following command inside the docker container: \n```\npython3 src/gnnradarobjectdetection/train.py --data ${path_to_graph_dataset_folder}$ --results ${path_to_results_folder}$ --config ${path_to_config_file}$\n```\n```\nusage:             train.py [--data] [--results] [--config]\n\narguments:\n    --data         Path to the created graph-dataset\n    --results      Path to the created \"results\" folder\n    --config       Path to the created configuration.yml file\n```\n\nWithin the provided \"results\" folder, a new \"model\" folder is automatically created, in which the trained model is saved.\n\u003cbr /\u003e\n\n### 4. Evaluate a trained model \nFinally, you can evaluate a trained model using the following command inside the docker container: \n```\npython3 src/gnnradarobjectdetection/evaluate.py --data ${path_to_graph_dataset_folder}$ --model ${path_to_model_folder}$ --config ${path_to_config_file}$ \n```\n```\nusage:             evaluate.py [--data] [--model] [--config]\n\narguments:\n    --data         Path to the created graph-dataset (The same as used for the training of the model to evaluate)\n    --model        Path to the folder in which the trained model is saved\n    --config       Path to the created configuration.yml file\n```\nWithin the provided \"model\" folder a new \"evaluation\" folder is created, in which the evaluation results are saved.\n\n## Citation\nIf RadarGNN is useful or relevant to your research, please kindly recognize our contributions by citing our paper:\n\n```bibtex\n@article{fent2023radargnn,\n  title={RadarGNN: Transformation Invariant Graph Neural Network for Radar-based Perception},\n  author={Fent, Felix and Bauerschmidt, Philipp and Lienkamp, Markus},\n  journal={arXiv preprint arXiv:2304.06547},\n  year={2023}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftumftm%2Fradargnn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftumftm%2Fradargnn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftumftm%2Fradargnn/lists"}