# hengweibin/centerfusiondetect3d architecture

> Architecture diagram of the GitHub repository hengweibin/centerfusiondetect3d, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hengweibin/centerfusiondetect3d
- Repository: https://github.com/hengweibin/centerfusiondetect3d

## Overview

CenterFusionDetect3D implements camera–radar fusion for nuScenes 3D object detection. The documented workflow converts nuScenes annotations, loads image and radar samples, trains or evaluates a CenterFusion model, then decodes and presents detections; separate demo and vision-inference entry points are also documented. The graph includes documented evaluation and export capabilities, but their runtime wiring is not fully shown. Edges follow the excerpts, SOURCE INDEX references, or README; unsampled details are omitted.

Main entry points: [`src/main.py`](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/main.py) (Train and evaluate), [`src/lib/detector.py`](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/detector.py) (Detector), [`src/lib/nuScenes_lib/evaluate.py`](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/evaluate.py) (nuScenes evaluation), [`src/lib/dataset/datasets/nuscenes.py`](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/dataset/datasets/nuscenes.py) (nuScenes dataset)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Data and workflows"]
  node_config["Configuration<br/>[default.py]"]
  node_converter["Dataset conversion"]
  node_nuscenes_dataset["nuScenes dataset<br/>[nuscenes.py]"]
  node_generic_dataset["Sample preparation<br/>[generic_dataset.py]"]
  node_image_utils["Image transforms<br/>[image.py]"]
  node_pointcloud["Radar geometry<br/>[pointcloud.py]"]
end

subgraph group_network["Detection model"]
  node_dla["DLA backbone<br/>[dla.py]"]
  node_fusion["Radar fusion<br/>[fusionModules.py]"]
  node_heads["Detection heads<br/>[detectHeads.py]"]
  node_model["CenterFusion model<br/>[model.py]"]
  node_losses["Detection losses<br/>[losses.py]"]
  node_generic_loss["Loss aggregation<br/>[genericLoss.py]"]
  node_decode["Output decoding<br/>[decode.py]"]
end

subgraph group_runtime["Training and inference"]
  node_trainer["Trainer<br/>[trainer.py]"]
  node_entrypoint["Train and evaluate<br/>[main.py]"]
  node_detector["Detector<br/>[detector.py]"]
  node_postprocess["3D postprocessing<br/>[postProcess.py]"]
  node_demo["Visualization demo<br/>[demo.py]"]
  node_inference["Vision inference<br/>[inference.py]"]
end

subgraph group_nuscenes["nuScenes tools"]
  node_evaluation["nuScenes evaluation<br/>[evaluate.py]"]
  node_loaders["Evaluation loaders<br/>[loaders.py]"]
  node_evaluation_algo["Evaluation algorithms<br/>[algo.py]"]
  node_kitti_export["KITTI export<br/>[export_kitti.py]"]
  node_radar_utils["Radar utilities<br/>[utils_radar.py]"]
  node_kitti_utils["KITTI utilities<br/>[utils_kitti.py]"]
end

node_researcher(("Researcher"))
node_nuscenes_data[("nuScenes data")]

node_researcher -->|"trains or evaluates"| node_entrypoint
node_researcher -->|"runs demo"| node_demo
node_researcher -->|"runs inference"| node_inference
node_nuscenes_data -->|"converts dataset"| node_converter
node_converter -.->|"prepares annotations"| node_nuscenes_dataset
node_entrypoint -->|"loads settings"| node_config
node_entrypoint -->|"gets dataset"| node_nuscenes_dataset
node_entrypoint -->|"creates model"| node_model
node_entrypoint -->|"starts training"| node_trainer
node_nuscenes_dataset -->|"inherits from"| node_generic_dataset
node_generic_dataset -->|"transforms images"| node_image_utils
node_generic_dataset -->|"processes radar"| node_pointcloud
node_model -->|"builds backbone"| node_dla
node_dla -->|"uses fusion modules"| node_fusion
node_dla -->|"uses detection heads"| node_heads
node_trainer -->|"uses loss wrapper"| node_generic_loss
node_generic_loss -->|"computes losses"| node_losses
node_demo -->|"creates detector"| node_detector
node_inference -->|"uses detector"| node_detector
node_detector -->|"runs model"| node_model
node_detector -.->|"decodes outputs"| node_decode
node_detector -->|"postprocesses detections"| node_postprocess
node_evaluation -->|"uses loaders"| node_loaders
node_evaluation -->|"uses algorithms"| node_evaluation_algo
node_evaluation -->|"uses dataset definitions"| node_nuscenes_dataset
node_kitti_export -->|"uses utilities"| node_kitti_utils
node_researcher -->|"evaluates results"| node_evaluation
node_nuscenes_data -.->|"supplies evaluation data"| node_loaders

click node_config "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/config/default.py"
click node_converter "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/convert_nuScenes.py"
click node_nuscenes_dataset "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/dataset/datasets/nuscenes.py"
click node_generic_dataset "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/dataset/generic_dataset.py"
click node_image_utils "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/utils/image.py"
click node_pointcloud "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/utils/pointcloud.py"
click node_dla "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/networks/dla.py"
click node_fusion "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/networks/fusionModules.py"
click node_heads "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/networks/detectHeads.py"
click node_model "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/model.py"
click node_losses "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/losses.py"
click node_generic_loss "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/genericLoss.py"
click node_decode "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/decode.py"
click node_trainer "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/trainer.py"
click node_entrypoint "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/main.py"
click node_detector "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/detector.py"
click node_postprocess "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/utils/postProcess.py"
click node_demo "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/demo.py"
click node_inference "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/inference.py"
click node_evaluation "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/evaluate.py"
click node_loaders "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/loaders.py"
click node_evaluation_algo "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/algo.py"
click node_kitti_export "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/export_kitti.py"
click node_radar_utils "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/utils_radar.py"
click node_kitti_utils "https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/utils_kitti.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_config,node_converter,node_nuscenes_dataset,node_generic_dataset,node_image_utils,node_pointcloud toneBlue
class node_dla,node_fusion,node_heads,node_model,node_losses,node_generic_loss,node_decode,node_nuscenes_data toneAmber
class node_trainer,node_entrypoint,node_detector,node_postprocess,node_demo,node_inference toneMint
class node_evaluation,node_loaders,node_evaluation_algo,node_kitti_export,node_radar_utils,node_kitti_utils toneRose
class node_researcher toneIndigo
```

## Components

### Data and workflows

- [Configuration](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/config/default.py): `src/lib/config/default.py`
- [Dataset conversion](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/convert_nuScenes.py): `src/convert_nuScenes.py`
- [nuScenes dataset](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/dataset/datasets/nuscenes.py): `src/lib/dataset/datasets/nuscenes.py`
- [Sample preparation](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/dataset/generic_dataset.py): `src/lib/dataset/generic_dataset.py`
- [Image transforms](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/utils/image.py): `src/lib/utils/image.py`
- [Radar geometry](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/utils/pointcloud.py): `src/lib/utils/pointcloud.py`

### Detection model

- [DLA backbone](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/networks/dla.py): `src/lib/model/networks/dla.py`
- [Radar fusion](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/networks/fusionModules.py): `src/lib/model/networks/fusionModules.py`
- [Detection heads](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/networks/detectHeads.py): `src/lib/model/networks/detectHeads.py`
- [CenterFusion model](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/model.py): `src/lib/model/model.py`
- [Detection losses](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/losses.py): `src/lib/model/losses.py`
- [Loss aggregation](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/genericLoss.py): `src/lib/model/genericLoss.py`
- [Output decoding](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/model/decode.py): `src/lib/model/decode.py`

### Training and inference

- [Trainer](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/trainer.py): `src/lib/trainer.py`
- [Train and evaluate](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/main.py): `src/main.py`
- [Detector](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/detector.py): `src/lib/detector.py`
- [3D postprocessing](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/utils/postProcess.py): `src/lib/utils/postProcess.py`
- [Visualization demo](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/demo.py): `src/demo.py`
- [Vision inference](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/inference.py): `src/inference.py`

### nuScenes tools

- [nuScenes evaluation](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/evaluate.py): `src/lib/nuScenes_lib/evaluate.py`
- [Evaluation loaders](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/loaders.py): `src/lib/nuScenes_lib/loaders.py`
- [Evaluation algorithms](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/algo.py): `src/lib/nuScenes_lib/algo.py`
- [KITTI export](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/export_kitti.py): `src/lib/nuScenes_lib/export_kitti.py`
- [Radar utilities](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/utils_radar.py): `src/lib/nuScenes_lib/utils_radar.py`
- [KITTI utilities](https://github.com/hengweibin/centerfusiondetect3d/blob/main/src/lib/nuScenes_lib/utils_kitti.py): `src/lib/nuScenes_lib/utils_kitti.py`

### Other components

- **Researcher**
- **nuScenes data**

## Connections

- Researcher → Train and evaluate: trains or evaluates
- Researcher → Visualization demo: runs demo
- Researcher → Vision inference: runs inference
- nuScenes data → Dataset conversion: converts dataset
- Dataset conversion → nuScenes dataset: prepares annotations
- Train and evaluate → Configuration: loads settings (evidence: `src/main.py`)
- Train and evaluate → nuScenes dataset: gets dataset (evidence: `src/main.py`)
- Train and evaluate → CenterFusion model: creates model (evidence: `src/main.py`)
- Train and evaluate → Trainer: starts training (evidence: `src/main.py`)
- nuScenes dataset → Sample preparation: inherits from (evidence: `src/lib/dataset/datasets/nuscenes.py`)
- Sample preparation → Image transforms: transforms images (evidence: `src/lib/dataset/generic_dataset.py`)
- Sample preparation → Radar geometry: processes radar (evidence: `src/lib/dataset/generic_dataset.py`)
- CenterFusion model → DLA backbone: builds backbone (evidence: `src/lib/model/model.py`)
- DLA backbone → Radar fusion: uses fusion modules
- DLA backbone → Detection heads: uses detection heads
- Trainer → Loss aggregation: uses loss wrapper
- Loss aggregation → Detection losses: computes losses (evidence: `src/lib/model/genericLoss.py`)
- Visualization demo → Detector: creates detector
- Vision inference → Detector: uses detector (evidence: `src/inference.py`)
- Detector → CenterFusion model: runs model (evidence: `src/lib/detector.py`)
- Detector → Output decoding: decodes outputs
- Detector → 3D postprocessing: postprocesses detections (evidence: `src/lib/detector.py`)
- nuScenes evaluation → Evaluation loaders: uses loaders (evidence: `src/lib/nuScenes_lib/evaluate.py`)
- nuScenes evaluation → Evaluation algorithms: uses algorithms (evidence: `src/lib/nuScenes_lib/evaluate.py`)
- nuScenes evaluation → nuScenes dataset: uses dataset definitions (evidence: `src/lib/nuScenes_lib/evaluate.py`)
- KITTI export → KITTI utilities: uses utilities (evidence: `src/lib/nuScenes_lib/export_kitti.py`)
- Researcher → nuScenes evaluation: evaluates results
- nuScenes data → Evaluation loaders: supplies evaluation data
