# karim416/logdesc architecture

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

- Interactive diagram: https://gitdiagram.com/karim416/logdesc
- Repository: https://github.com/karim416/logdesc

## Overview

LoGDesc is a point-cloud registration system: the documented MVP-RG workflow supplies point-cloud pairs and a pretrained model, then produces a registration result. The source shows LoGDesc registration composing feature extraction, geometric embeddings, transformer matching, and surface features; the README mentions optional keypoint selection. The repository also contains a distinct MVP-RG completion subsystem and registration baselines. Their broader runtime wiring is not fully shown, so those links are omitted where unsupported.

Main entry points: [`models/LoGDesc_reg.py`](https://github.com/karim416/logdesc/blob/main/models/LoGDesc_reg.py) (LoGDesc Matcher), [`models/transformer/conditional_transformer.py`](https://github.com/karim416/logdesc/blob/main/models/transformer/conditional_transformer.py) (Conditional Transformer), [`MVP_RG/completion/model_utils.py`](https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/model_utils.py) (Completion Utilities), [`models/transformer/layers.py`](https://github.com/karim416/logdesc/blob/main/models/transformer/layers.py) (Layer Builders)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_reg["Point Registration"]
  node_mvp_data[("MVP-RG Pairs<br/>[dataset.py]")]
  node_reg_model["Registration Baselines"]
  node_reg_output["Pose And Matches"]
end

subgraph group_features["Features And Matching"]
  node_logdesc["LoGDesc Matcher<br/>[LoGDesc_reg.py]"]
  node_feature_extractor["LoG Features<br/>[LOGDESC.py]"]
  node_lepard["Feature Transformer<br/>[lepard_transf.py]"]
  node_geometry["Geometric Embedding"]
  node_conditional["Conditional Transformer"]
  node_rpe["Relative Attention<br/>[rpe_transformer.py]"]
  node_vanilla["Vanilla Attention"]
  node_layers["Layer Builders<br/>[layers.py]"]
  node_surface["Surface Features"]
  node_polar["Polar Utilities"]
end

subgraph group_completion["Point Completion"]
  node_completion_data[("Completion Dataset<br/>[dataset.py]")]
  node_completion_train["Completion Training<br/>[train.py]"]
  node_completion_models["Completion Models"]
  node_pcn["PCN Model<br/>[pcn.py]"]
  node_completion_utils["Completion Utilities<br/>[model_utils.py]"]
  node_train_utils["Training Utilities<br/>[train_utils.py]"]
end

subgraph group_ops["Point Cloud Operations"]
  node_pcd["Point Cloud Helpers<br/>[pcd.py]"]
  node_point_ops["PointNet Operations"]
  node_sparse_conv["Sparse Convolution<br/>[conv.py]"]
end

node_user(("Researcher"))

node_user -->|"supplies pairs"| node_mvp_data
node_user -->|"runs matcher"| node_logdesc
node_mvp_data -->|"uses point helpers"| node_pcd
node_logdesc -->|"calls"| node_feature_extractor
node_logdesc -->|"uses embeddings"| node_geometry
node_logdesc -->|"constructs surfaces"| node_surface
node_logdesc -->|"runs transformer"| node_conditional
node_logdesc -->|"returns matches"| node_reg_output
node_feature_extractor -->|"uses features"| node_lepard
node_conditional -->|"uses attention"| node_rpe
node_conditional -->|"uses attention"| node_vanilla
node_rpe -->|"builds layers"| node_layers
node_vanilla -->|"builds layers"| node_layers
node_geometry -->|"builds dropout"| node_layers
node_surface -->|"uses utilities"| node_polar
node_completion_train -->|"loads dataset"| node_completion_data
node_completion_train -->|"uses utilities"| node_train_utils
node_completion_models -.->|"includes model"| node_pcn
node_completion_models -.->|"uses utilities"| node_completion_utils
node_completion_utils -->|"uses point operations"| node_point_ops
node_pcn -->|"uses utilities"| node_completion_utils
node_reg_model -->|"shares training utilities"| node_train_utils
node_point_ops -.->|"provides operations"| node_sparse_conv

click node_mvp_data "https://github.com/karim416/logdesc/blob/main/MVP_RG/registration/dataset.py"
click node_reg_model "https://github.com/karim416/logdesc/tree/main/MVP_RG/registration/models"
click node_logdesc "https://github.com/karim416/logdesc/blob/main/models/LoGDesc_reg.py"
click node_feature_extractor "https://github.com/karim416/logdesc/blob/main/models/LOGDESC.py"
click node_lepard "https://github.com/karim416/logdesc/blob/main/models/lepard_transf.py"
click node_geometry "https://github.com/karim416/logdesc/blob/main/models/normal_embedding.py"
click node_conditional "https://github.com/karim416/logdesc/blob/main/models/transformer/conditional_transformer.py"
click node_rpe "https://github.com/karim416/logdesc/blob/main/models/transformer/rpe_transformer.py"
click node_vanilla "https://github.com/karim416/logdesc/blob/main/models/transformer/vanilla_transformer.py"
click node_layers "https://github.com/karim416/logdesc/blob/main/models/transformer/layers.py"
click node_surface "https://github.com/karim416/logdesc/blob/main/modules/repsurface_utils.py"
click node_polar "https://github.com/karim416/logdesc/blob/main/modules/polar_recons_utils.py"
click node_completion_data "https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/dataset.py"
click node_completion_train "https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/train.py"
click node_completion_models "https://github.com/karim416/logdesc/tree/main/MVP_RG/completion/models"
click node_pcn "https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/models/pcn.py"
click node_completion_utils "https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/model_utils.py"
click node_train_utils "https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/train_utils.py"
click node_pcd "https://github.com/karim416/logdesc/blob/main/MVP_RG/pcd.py"
click node_point_ops "https://github.com/karim416/logdesc/tree/main/MVP_RG/utils/mm3d_pn2"
click node_sparse_conv "https://github.com/karim416/logdesc/blob/main/MVP_RG/utils/mm3d_pn2/ops/spconv/conv.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_mvp_data,node_reg_model,node_reg_output toneBlue
class node_logdesc,node_feature_extractor,node_lepard,node_geometry,node_conditional,node_rpe,node_vanilla,node_layers,node_surface,node_polar toneAmber
class node_completion_data,node_completion_train,node_completion_models,node_pcn,node_completion_utils,node_train_utils toneMint
class node_pcd,node_point_ops,node_sparse_conv toneRose
class node_user toneIndigo
```

## Components

### Point Registration

- [MVP-RG Pairs](https://github.com/karim416/logdesc/blob/main/MVP_RG/registration/dataset.py): `MVP_RG/registration/dataset.py`
- [Registration Baselines](https://github.com/karim416/logdesc/tree/main/MVP_RG/registration/models): `MVP_RG/registration/models`
- **Pose And Matches**

### Features And Matching

- [LoGDesc Matcher](https://github.com/karim416/logdesc/blob/main/models/LoGDesc_reg.py): `models/LoGDesc_reg.py`
- [LoG Features](https://github.com/karim416/logdesc/blob/main/models/LOGDESC.py): `models/LOGDESC.py`
- [Feature Transformer](https://github.com/karim416/logdesc/blob/main/models/lepard_transf.py): `models/lepard_transf.py`
- [Geometric Embedding](https://github.com/karim416/logdesc/blob/main/models/normal_embedding.py): `models/normal_embedding.py`
- [Conditional Transformer](https://github.com/karim416/logdesc/blob/main/models/transformer/conditional_transformer.py): `models/transformer/conditional_transformer.py`
- [Relative Attention](https://github.com/karim416/logdesc/blob/main/models/transformer/rpe_transformer.py): `models/transformer/rpe_transformer.py`
- [Vanilla Attention](https://github.com/karim416/logdesc/blob/main/models/transformer/vanilla_transformer.py): `models/transformer/vanilla_transformer.py`
- [Layer Builders](https://github.com/karim416/logdesc/blob/main/models/transformer/layers.py): `models/transformer/layers.py`
- [Surface Features](https://github.com/karim416/logdesc/blob/main/modules/repsurface_utils.py): `modules/repsurface_utils.py`
- [Polar Utilities](https://github.com/karim416/logdesc/blob/main/modules/polar_recons_utils.py): `modules/polar_recons_utils.py`

### Point Completion

- [Completion Dataset](https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/dataset.py): `MVP_RG/completion/dataset.py`
- [Completion Training](https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/train.py): `MVP_RG/completion/train.py`
- [Completion Models](https://github.com/karim416/logdesc/tree/main/MVP_RG/completion/models): `MVP_RG/completion/models`
- [PCN Model](https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/models/pcn.py): `MVP_RG/completion/models/pcn.py`
- [Completion Utilities](https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/model_utils.py): `MVP_RG/completion/model_utils.py`
- [Training Utilities](https://github.com/karim416/logdesc/blob/main/MVP_RG/completion/train_utils.py): `MVP_RG/completion/train_utils.py`

### Point Cloud Operations

- [Point Cloud Helpers](https://github.com/karim416/logdesc/blob/main/MVP_RG/pcd.py): `MVP_RG/pcd.py`
- [PointNet Operations](https://github.com/karim416/logdesc/tree/main/MVP_RG/utils/mm3d_pn2): `MVP_RG/utils/mm3d_pn2`
- [Sparse Convolution](https://github.com/karim416/logdesc/blob/main/MVP_RG/utils/mm3d_pn2/ops/spconv/conv.py): `MVP_RG/utils/mm3d_pn2/ops/spconv/conv.py`

### Other components

- **Researcher**

## Connections

- Researcher → MVP-RG Pairs: supplies pairs (evidence: `README.md`)
- Researcher → LoGDesc Matcher: runs matcher (evidence: `README.md`)
- MVP-RG Pairs → Point Cloud Helpers: uses point helpers (evidence: `MVP_RG/registration/dataset.py`)
- LoGDesc Matcher → LoG Features: calls (evidence: `models/LoGDesc_reg.py`)
- LoGDesc Matcher → Geometric Embedding: uses embeddings (evidence: `models/LoGDesc_reg.py`)
- LoGDesc Matcher → Surface Features: constructs surfaces (evidence: `models/LoGDesc_reg.py`)
- LoGDesc Matcher → Conditional Transformer: runs transformer (evidence: `models/LoGDesc_reg.py`)
- LoGDesc Matcher → Pose And Matches: returns matches (evidence: `models/LoGDesc_reg.py`)
- LoG Features → Feature Transformer: uses features (evidence: `models/LOGDESC.py`)
- Conditional Transformer → Relative Attention: uses attention (evidence: `models/transformer/conditional_transformer.py`)
- Conditional Transformer → Vanilla Attention: uses attention (evidence: `models/transformer/conditional_transformer.py`)
- Relative Attention → Layer Builders: builds layers (evidence: `models/transformer/rpe_transformer.py`)
- Vanilla Attention → Layer Builders: builds layers (evidence: `models/transformer/vanilla_transformer.py`)
- Geometric Embedding → Layer Builders: builds dropout (evidence: `models/normal_embedding.py`)
- Surface Features → Polar Utilities: uses utilities (evidence: `modules/repsurface_utils.py`)
- Completion Training → Completion Dataset: loads dataset (evidence: `MVP_RG/completion/train.py`)
- Completion Training → Training Utilities: uses utilities (evidence: `MVP_RG/completion/train.py`)
- Completion Models → PCN Model: includes model (evidence: `MVP_RG/completion/models/vrcnet.py`)
- Completion Models → Completion Utilities: uses utilities (evidence: `MVP_RG/completion/models/vrcnet.py`)
- Completion Utilities → PointNet Operations: uses point operations (evidence: `MVP_RG/completion/model_utils.py`)
- PCN Model → Completion Utilities: uses utilities (evidence: `MVP_RG/completion/models/pcn.py`)
- Registration Baselines → Training Utilities: shares training utilities (evidence: `MVP_RG/registration/models/dcp.py`)
- PointNet Operations → Sparse Convolution: provides operations (evidence: `MVP_RG/utils/mm3d_pn2/ops/spconv/modules.py`)
