# parkie0517/raf architecture

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

- Interactive diagram: https://gitdiagram.com/parkie0517/raf
- Repository: https://github.com/parkie0517/raf

## Overview

RAF is a research system for adverse-weather 3D object detection using camera, LiDAR, and 4D RADAR. The documented workflow trains a camera reliability branch and BEV fusion/detection components using pretrained LiDAR–RADAR networks, then evaluates detections. The graph preserves the dataset, model, training, and evaluation stages, plus core supporting utilities. Some model-stage links come from the README; source excerpts are partial, so those links are marked dashed where implementation wiring is not shown.

Main entry points: [`pipelines/pipeline_detection_v1_1.py`](https://github.com/parkie0517/raf/blob/main/pipelines/pipeline_detection_v1_1.py) (Train pipeline), [`pipelines/pipeline_detection_v1_0.py`](https://github.com/parkie0517/raf/blob/main/pipelines/pipeline_detection_v1_0.py) (Detection pipeline), [`models/skeletons/crn_lidar.py`](https://github.com/parkie0517/raf/blob/main/models/skeletons/crn_lidar.py) (LiDAR–RADAR backbone), [`utils/util_pipeline.py`](https://github.com/parkie0517/raf/blob/main/utils/util_pipeline.py) (Pipeline utilities)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data and preparation"]
  node_kradar_v1["K-Radar v1"]
  node_kradar_v10["K-Radar v1.0"]
  node_kradar_v24["K-Radar v2.4"]
  node_preprocess["Point preparation"]
end

subgraph group_models["Detection models"]
  node_lidar_radar["LiDAR–RADAR backbone<br/>[crn_lidar.py]"]
  node_vfe["Pillar encoding<br/>[pillar_vfe.py]"]
  node_bev["BEV backbone"]
  node_camera["Camera branch<br/>[base_lss_fpn.py]"]
  node_fusion["BEV fusion"]
  node_detection["Detection head<br/>[center_head.py]"]
  node_nms["3D NMS<br/>[model_nms_utils.py]"]
end

subgraph group_training["Training and evaluation"]
  node_train_pipeline["Train pipeline"]
  node_eval_pipeline["Detection pipeline"]
  node_evaluation["Detection metrics<br/>[eval.py]"]
  node_kitti_common["Evaluation data<br/>[kitti_common.py]"]
end

subgraph group_support["Core support"]
  node_config["Configuration<br/>[util_config.py]"]
  node_pipeline_utils["Pipeline utilities<br/>[util_pipeline.py]"]
  node_calibration["Calibration<br/>[util_calib.py]"]
  node_geometry["Geometry utilities<br/>[util_geometry.py]"]
  node_optimization["Optimization<br/>[util_optim.py]"]
  node_point_cloud["Point-cloud utilities"]
end

node_researcher(("Researcher"))

node_researcher -.->|"trains model"| node_train_pipeline
node_researcher -.->|"evaluates model"| node_eval_pipeline
node_train_pipeline -->|"uses"| node_pipeline_utils
node_train_pipeline -->|"loads config"| node_config
node_train_pipeline -->|"uses"| node_optimization
node_train_pipeline -->|"uses"| node_point_cloud
node_train_pipeline -->|"uses"| node_calibration
node_train_pipeline -.->|"loads data"| node_kradar_v1
node_eval_pipeline -->|"uses"| node_pipeline_utils
node_eval_pipeline -->|"loads config"| node_config
node_eval_pipeline -->|"uses"| node_point_cloud
node_eval_pipeline -->|"uses"| node_calibration
node_eval_pipeline -->|"uses"| node_optimization
node_eval_pipeline -->|"evaluates with"| node_evaluation
node_evaluation -->|"uses"| node_kitti_common
node_kradar_v1 -->|"uses"| node_geometry
node_pipeline_utils -->|"references dataset"| node_kradar_v10
node_pipeline_utils -->|"references dataset"| node_kradar_v24
node_pipeline_utils -->|"builds model"| node_lidar_radar
node_lidar_radar -.->|"prepares points"| node_preprocess
node_lidar_radar -.->|"encodes pillars"| node_vfe
node_lidar_radar -.->|"extracts BEV"| node_bev
node_lidar_radar -.->|"adds camera branch"| node_camera
node_camera -.->|"fuses in BEV"| node_fusion
node_lidar_radar -.->|"fuses modalities"| node_fusion
node_fusion -.->|"feeds detections"| node_detection
node_detection -->|"suppresses boxes"| node_nms

click node_kradar_v1 "https://github.com/parkie0517/raf/blob/main/datasets/kradar_detection_v1_1.py"
click node_kradar_v10 "https://github.com/parkie0517/raf/blob/main/datasets/kradar_detection_v1_0.py"
click node_kradar_v24 "https://github.com/parkie0517/raf/blob/main/datasets/kradar_detection_v2_4.py"
click node_preprocess "https://github.com/parkie0517/raf/tree/main/models/pre_processor"
click node_lidar_radar "https://github.com/parkie0517/raf/blob/main/models/skeletons/crn_lidar.py"
click node_vfe "https://github.com/parkie0517/raf/blob/main/models/backbone_3d/vfe/pillar_vfe.py"
click node_bev "https://github.com/parkie0517/raf/blob/main/models/backbone_2d/base_bev_backbone.py"
click node_camera "https://github.com/parkie0517/raf/blob/main/models/bevdepth/base_lss_fpn.py"
click node_fusion "https://github.com/parkie0517/raf/tree/main/models/fusers"
click node_detection "https://github.com/parkie0517/raf/blob/main/models/head/center_head.py"
click node_nms "https://github.com/parkie0517/raf/blob/main/models/model_utils/model_nms_utils.py"
click node_train_pipeline "https://github.com/parkie0517/raf/blob/main/pipelines/pipeline_detection_v1_1.py"
click node_eval_pipeline "https://github.com/parkie0517/raf/blob/main/pipelines/pipeline_detection_v1_0.py"
click node_evaluation "https://github.com/parkie0517/raf/blob/main/utils/kitti_eval/eval.py"
click node_kitti_common "https://github.com/parkie0517/raf/blob/main/utils/kitti_eval/kitti_common.py"
click node_config "https://github.com/parkie0517/raf/blob/main/utils/util_config.py"
click node_pipeline_utils "https://github.com/parkie0517/raf/blob/main/utils/util_pipeline.py"
click node_calibration "https://github.com/parkie0517/raf/blob/main/utils/util_calib.py"
click node_geometry "https://github.com/parkie0517/raf/blob/main/utils/util_geometry.py"
click node_optimization "https://github.com/parkie0517/raf/blob/main/utils/util_optim.py"
click node_point_cloud "https://github.com/parkie0517/raf/blob/main/utils/util_point_cloud.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_kradar_v1,node_kradar_v10,node_kradar_v24,node_preprocess toneBlue
class node_lidar_radar,node_vfe,node_bev,node_camera,node_fusion,node_detection,node_nms toneAmber
class node_train_pipeline,node_eval_pipeline,node_evaluation,node_kitti_common toneMint
class node_config,node_pipeline_utils,node_calibration,node_geometry,node_optimization,node_point_cloud toneRose
class node_researcher toneIndigo
```

## Components

### Data and preparation

- [K-Radar v1](https://github.com/parkie0517/raf/blob/main/datasets/kradar_detection_v1_1.py): `datasets/kradar_detection_v1_1.py`
- [K-Radar v1.0](https://github.com/parkie0517/raf/blob/main/datasets/kradar_detection_v1_0.py): `datasets/kradar_detection_v1_0.py`
- [K-Radar v2.4](https://github.com/parkie0517/raf/blob/main/datasets/kradar_detection_v2_4.py): `datasets/kradar_detection_v2_4.py`
- [Point preparation](https://github.com/parkie0517/raf/tree/main/models/pre_processor): `models/pre_processor`

### Detection models

- [LiDAR–RADAR backbone](https://github.com/parkie0517/raf/blob/main/models/skeletons/crn_lidar.py): `models/skeletons/crn_lidar.py`
- [Pillar encoding](https://github.com/parkie0517/raf/blob/main/models/backbone_3d/vfe/pillar_vfe.py): `models/backbone_3d/vfe/pillar_vfe.py`
- [BEV backbone](https://github.com/parkie0517/raf/blob/main/models/backbone_2d/base_bev_backbone.py): `models/backbone_2d/base_bev_backbone.py`
- [Camera branch](https://github.com/parkie0517/raf/blob/main/models/bevdepth/base_lss_fpn.py): `models/bevdepth/base_lss_fpn.py`
- [BEV fusion](https://github.com/parkie0517/raf/tree/main/models/fusers): `models/fusers`
- [Detection head](https://github.com/parkie0517/raf/blob/main/models/head/center_head.py): `models/head/center_head.py`
- [3D NMS](https://github.com/parkie0517/raf/blob/main/models/model_utils/model_nms_utils.py): `models/model_utils/model_nms_utils.py`

### Training and evaluation

- [Train pipeline](https://github.com/parkie0517/raf/blob/main/pipelines/pipeline_detection_v1_1.py): `pipelines/pipeline_detection_v1_1.py`
- [Detection pipeline](https://github.com/parkie0517/raf/blob/main/pipelines/pipeline_detection_v1_0.py): `pipelines/pipeline_detection_v1_0.py`
- [Detection metrics](https://github.com/parkie0517/raf/blob/main/utils/kitti_eval/eval.py): `utils/kitti_eval/eval.py`
- [Evaluation data](https://github.com/parkie0517/raf/blob/main/utils/kitti_eval/kitti_common.py): `utils/kitti_eval/kitti_common.py`

### Core support

- [Configuration](https://github.com/parkie0517/raf/blob/main/utils/util_config.py): `utils/util_config.py`
- [Pipeline utilities](https://github.com/parkie0517/raf/blob/main/utils/util_pipeline.py): `utils/util_pipeline.py`
- [Calibration](https://github.com/parkie0517/raf/blob/main/utils/util_calib.py): `utils/util_calib.py`
- [Geometry utilities](https://github.com/parkie0517/raf/blob/main/utils/util_geometry.py): `utils/util_geometry.py`
- [Optimization](https://github.com/parkie0517/raf/blob/main/utils/util_optim.py): `utils/util_optim.py`
- [Point-cloud utilities](https://github.com/parkie0517/raf/blob/main/utils/util_point_cloud.py): `utils/util_point_cloud.py`

### Other components

- **Researcher**

## Connections

- Researcher → Train pipeline: trains model
- Researcher → Detection pipeline: evaluates model
- Train pipeline → Pipeline utilities: uses (evidence: `pipelines/pipeline_detection_v1_1.py`)
- Train pipeline → Configuration: loads config (evidence: `pipelines/pipeline_detection_v1_1.py`)
- Train pipeline → Optimization: uses (evidence: `pipelines/pipeline_detection_v1_1.py`)
- Train pipeline → Point-cloud utilities: uses (evidence: `pipelines/pipeline_detection_v1_1.py`)
- Train pipeline → Calibration: uses (evidence: `pipelines/pipeline_detection_v1_1.py`)
- Train pipeline → K-Radar v1: loads data
- Detection pipeline → Pipeline utilities: uses (evidence: `pipelines/pipeline_detection_v1_0.py`)
- Detection pipeline → Configuration: loads config (evidence: `pipelines/pipeline_detection_v1_0.py`)
- Detection pipeline → Point-cloud utilities: uses (evidence: `pipelines/pipeline_detection_v1_0.py`)
- Detection pipeline → Calibration: uses (evidence: `pipelines/pipeline_detection_v1_0.py`)
- Detection pipeline → Optimization: uses (evidence: `pipelines/pipeline_detection_v1_0.py`)
- Detection pipeline → Detection metrics: evaluates with (evidence: `pipelines/pipeline_detection_v1_0.py`)
- Detection metrics → Evaluation data: uses (evidence: `utils/kitti_eval/eval.py`)
- K-Radar v1 → Geometry utilities: uses (evidence: `datasets/kradar_detection_v1_1.py`)
- Pipeline utilities → K-Radar v1.0: references dataset (evidence: `utils/util_pipeline.py`)
- Pipeline utilities → K-Radar v2.4: references dataset (evidence: `utils/util_pipeline.py`)
- Pipeline utilities → LiDAR–RADAR backbone: builds model (evidence: `utils/util_pipeline.py`)
- LiDAR–RADAR backbone → Point preparation: prepares points (evidence: `models/skeletons/crn_lidar.py`)
- LiDAR–RADAR backbone → Pillar encoding: encodes pillars
- LiDAR–RADAR backbone → BEV backbone: extracts BEV
- LiDAR–RADAR backbone → Camera branch: adds camera branch
- Camera branch → BEV fusion: fuses in BEV
- LiDAR–RADAR backbone → BEV fusion: fuses modalities (evidence: `models/skeletons/crn_lidar.py`)
- BEV fusion → Detection head: feeds detections
- Detection head → 3D NMS: suppresses boxes (evidence: `models/head/center_head.py`)
