# sebastianjanampa/detrpose architecture

> Architecture diagram of the GitHub repository sebastianjanampa/detrpose, 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/sebastianjanampa/detrpose
- Repository: https://github.com/sebastianjanampa/detrpose

## Overview

DETRPose is a real-time, end-to-end multi-person pose estimation system for COCO and CrowdPose. Its main workflow configures datasets and a pose model, trains the model, then produces keypoint predictions for evaluation or inference. The model combines a vision backbone, feature encoder, transformer decoder, matching and loss components, and postprocessing. The repository also provides Torch, ONNX, and TensorRT inference/export paths. Some modules are unsampled; edges below are limited to relationships visible in excerpts, the source index, or README documentation.

Main entry points: [`configs/detrpose/include/detrpose_hgnetv2.py`](https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/detrpose_hgnetv2.py) (Model configuration), [`configs/detrpose/include/dataset_crowdpose.py`](https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/dataset_crowdpose.py) (CrowdPose configuration), [`configs/detrpose/include/dataset.py`](https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/dataset.py) (COCO configuration), [`src/solver/engine.py`](https://github.com/sebastianjanampa/detrpose/blob/main/src/solver/engine.py) (Train and evaluate)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data and evaluation"]
  node_coco_config["COCO configuration<br/>[dataset.py]"]
  node_crowd_config["CrowdPose configuration"]
  node_coco_data["COCO dataset<br/>[coco.py]"]
  node_crowd_data["CrowdPose dataset<br/>[crowdpose.py]"]
  node_transforms["Image transforms<br/>[transforms.py]"]
  node_crowd_transforms["Crowd transforms"]
  node_loader["Batch loader<br/>[dataloader.py]"]
  node_coco_eval["COCO evaluator<br/>[coco_eval.py]"]
  node_crowd_eval["CrowdPose evaluator<br/>[crowdpose_eval.py]"]
  node_coco_eval_runtime["COCO metrics<br/>[coco_eval.py]"]
  node_crowd_eval_runtime["CrowdPose metrics<br/>[crowdpose_eval.py]"]
end

subgraph group_model["Pose model"]
  node_model_config["Model configuration"]
  node_backbone["HGNetv2 backbone<br/>[hgnetv2.py]"]
  node_encoder["Hybrid encoder<br/>[hybrid_encoder.py]"]
  node_transformer["Transformer decoder<br/>[transformer.py]"]
  node_denoising["Denoising queries<br/>[dn_component.py]"]
  node_pose_model["DETRPose model<br/>[detrpose.py]"]
  node_matching_loss["Matching and losses<br/>[criterion.py]"]
  node_postprocess["Pose postprocessing<br/>[postprocesses.py]"]
end

subgraph group_training["Training runtime"]
  node_trainer["Training orchestration<br/>[trainer.py]"]
  node_engine["Train and evaluate<br/>[engine.py]"]
end

subgraph group_inference["Inference and deployment"]
  node_torch_infer["Torch inference<br/>[torch_inf.py]"]
  node_onnx_infer["ONNX inference<br/>[onnx_inf.py]"]
  node_trt_infer["TensorRT inference<br/>[trt_inf.py]"]
  node_annotators["Pose annotators<br/>[annotators.py]"]
  node_onnx_export["ONNX export<br/>[export_onnx.py]"]
  node_trt_export["TensorRT export<br/>[export_tensorrt.py]"]
end

node_user(("Engineer or user"))

node_user -->|"selects dataset"| node_coco_config
node_user -->|"selects dataset"| node_crowd_config
node_coco_config -->|"configures"| node_coco_data
node_coco_config -->|"configures"| node_transforms
node_coco_config -->|"configures"| node_loader
node_coco_config -->|"configures"| node_coco_eval
node_crowd_config -->|"configures"| node_crowd_data
node_crowd_config -->|"configures"| node_transforms
node_crowd_config -->|"configures"| node_crowd_transforms
node_crowd_config -->|"configures"| node_loader
node_crowd_config -->|"configures"| node_crowd_eval
node_model_config -->|"configures"| node_pose_model
node_model_config -->|"configures"| node_backbone
node_model_config -->|"configures"| node_encoder
node_model_config -->|"configures"| node_transformer
node_model_config -->|"configures"| node_matching_loss
node_model_config -->|"configures"| node_postprocess
node_transformer -->|"uses"| node_denoising
node_trainer -->|"invokes"| node_engine
node_engine -->|"evaluates with"| node_coco_eval_runtime
node_engine -.->|"runs"| node_pose_model
node_engine -.->|"evaluates with"| node_crowd_eval_runtime
node_torch_infer -->|"uses"| node_annotators
node_trt_infer -->|"uses"| node_annotators
node_user -.->|"runs inference"| node_torch_infer
node_user -.->|"runs inference"| node_onnx_infer
node_user -.->|"runs inference"| node_trt_infer
node_user -.->|"exports model"| node_onnx_export
node_user -.->|"exports model"| node_trt_export

click node_coco_config "https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/dataset.py"
click node_crowd_config "https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/dataset_crowdpose.py"
click node_coco_data "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/coco.py"
click node_crowd_data "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/crowdpose.py"
click node_transforms "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/transforms.py"
click node_crowd_transforms "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/transforms_crowdpose.py"
click node_loader "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/dataloader.py"
click node_coco_eval "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/coco_eval.py"
click node_crowd_eval "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/crowdpose_eval.py"
click node_model_config "https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/detrpose_hgnetv2.py"
click node_backbone "https://github.com/sebastianjanampa/detrpose/blob/main/src/nn/backbone/hgnetv2.py"
click node_encoder "https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/hybrid_encoder.py"
click node_transformer "https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/transformer.py"
click node_denoising "https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/dn_component.py"
click node_pose_model "https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/detrpose.py"
click node_matching_loss "https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/criterion.py"
click node_postprocess "https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/postprocesses.py"
click node_trainer "https://github.com/sebastianjanampa/detrpose/blob/main/src/solver/trainer.py"
click node_engine "https://github.com/sebastianjanampa/detrpose/blob/main/src/solver/engine.py"
click node_coco_eval_runtime "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/coco_eval.py"
click node_crowd_eval_runtime "https://github.com/sebastianjanampa/detrpose/blob/main/src/data/crowdpose_eval.py"
click node_torch_infer "https://github.com/sebastianjanampa/detrpose/blob/main/tools/inference/torch_inf.py"
click node_onnx_infer "https://github.com/sebastianjanampa/detrpose/blob/main/tools/inference/onnx_inf.py"
click node_trt_infer "https://github.com/sebastianjanampa/detrpose/blob/main/tools/inference/trt_inf.py"
click node_annotators "https://github.com/sebastianjanampa/detrpose/blob/main/tools/inference/annotators.py"
click node_onnx_export "https://github.com/sebastianjanampa/detrpose/blob/main/tools/deployment/export_onnx.py"
click node_trt_export "https://github.com/sebastianjanampa/detrpose/blob/main/tools/deployment/export_tensorrt.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_coco_config,node_crowd_config,node_coco_data,node_crowd_data,node_transforms,node_crowd_transforms,node_loader,node_coco_eval,node_crowd_eval,node_coco_eval_runtime,node_crowd_eval_runtime,node_user toneBlue
class node_model_config,node_backbone,node_encoder,node_transformer,node_denoising,node_pose_model,node_matching_loss,node_postprocess toneAmber
class node_trainer,node_engine toneMint
class node_torch_infer,node_onnx_infer,node_trt_infer,node_annotators,node_onnx_export,node_trt_export toneRose
```

## Components

### Data and evaluation

- [COCO configuration](https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/dataset.py): `configs/detrpose/include/dataset.py`
- [CrowdPose configuration](https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/dataset_crowdpose.py): `configs/detrpose/include/dataset_crowdpose.py`
- [COCO dataset](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/coco.py): `src/data/coco.py`
- [CrowdPose dataset](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/crowdpose.py): `src/data/crowdpose.py`
- [Image transforms](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/transforms.py): `src/data/transforms.py`
- [Crowd transforms](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/transforms_crowdpose.py): `src/data/transforms_crowdpose.py`
- [Batch loader](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/dataloader.py): `src/data/dataloader.py`
- [COCO evaluator](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/coco_eval.py): `src/data/coco_eval.py`
- [CrowdPose evaluator](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/crowdpose_eval.py): `src/data/crowdpose_eval.py`
- [COCO metrics](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/coco_eval.py): `src/data/coco_eval.py`
- [CrowdPose metrics](https://github.com/sebastianjanampa/detrpose/blob/main/src/data/crowdpose_eval.py): `src/data/crowdpose_eval.py`

### Pose model

- [Model configuration](https://github.com/sebastianjanampa/detrpose/blob/main/configs/detrpose/include/detrpose_hgnetv2.py): `configs/detrpose/include/detrpose_hgnetv2.py`
- [HGNetv2 backbone](https://github.com/sebastianjanampa/detrpose/blob/main/src/nn/backbone/hgnetv2.py): `src/nn/backbone/hgnetv2.py`
- [Hybrid encoder](https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/hybrid_encoder.py): `src/models/detrpose/hybrid_encoder.py`
- [Transformer decoder](https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/transformer.py): `src/models/detrpose/transformer.py`
- [Denoising queries](https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/dn_component.py): `src/models/detrpose/dn_component.py`
- [DETRPose model](https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/detrpose.py): `src/models/detrpose/detrpose.py`
- [Matching and losses](https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/criterion.py): `src/models/detrpose/criterion.py`
- [Pose postprocessing](https://github.com/sebastianjanampa/detrpose/blob/main/src/models/detrpose/postprocesses.py): `src/models/detrpose/postprocesses.py`

### Training runtime

- [Training orchestration](https://github.com/sebastianjanampa/detrpose/blob/main/src/solver/trainer.py): `src/solver/trainer.py`
- [Train and evaluate](https://github.com/sebastianjanampa/detrpose/blob/main/src/solver/engine.py): `src/solver/engine.py`

### Inference and deployment

- [Torch inference](https://github.com/sebastianjanampa/detrpose/blob/main/tools/inference/torch_inf.py): `tools/inference/torch_inf.py`
- [ONNX inference](https://github.com/sebastianjanampa/detrpose/blob/main/tools/inference/onnx_inf.py): `tools/inference/onnx_inf.py`
- [TensorRT inference](https://github.com/sebastianjanampa/detrpose/blob/main/tools/inference/trt_inf.py): `tools/inference/trt_inf.py`
- [Pose annotators](https://github.com/sebastianjanampa/detrpose/blob/main/tools/inference/annotators.py): `tools/inference/annotators.py`
- [ONNX export](https://github.com/sebastianjanampa/detrpose/blob/main/tools/deployment/export_onnx.py): `tools/deployment/export_onnx.py`
- [TensorRT export](https://github.com/sebastianjanampa/detrpose/blob/main/tools/deployment/export_tensorrt.py): `tools/deployment/export_tensorrt.py`

### Other components

- **Engineer or user**

## Connections

- Engineer or user → COCO configuration: selects dataset (evidence: `configs/detrpose/include/dataset.py`)
- Engineer or user → CrowdPose configuration: selects dataset (evidence: `configs/detrpose/include/dataset_crowdpose.py`)
- COCO configuration → COCO dataset: configures (evidence: `configs/detrpose/include/dataset.py`)
- COCO configuration → Image transforms: configures (evidence: `configs/detrpose/include/dataset.py`)
- COCO configuration → Batch loader: configures (evidence: `configs/detrpose/include/dataset.py`)
- COCO configuration → COCO evaluator: configures (evidence: `configs/detrpose/include/dataset.py`)
- CrowdPose configuration → CrowdPose dataset: configures (evidence: `configs/detrpose/include/dataset_crowdpose.py`)
- CrowdPose configuration → Image transforms: configures (evidence: `configs/detrpose/include/dataset_crowdpose.py`)
- CrowdPose configuration → Crowd transforms: configures (evidence: `configs/detrpose/include/dataset_crowdpose.py`)
- CrowdPose configuration → Batch loader: configures (evidence: `configs/detrpose/include/dataset_crowdpose.py`)
- CrowdPose configuration → CrowdPose evaluator: configures (evidence: `configs/detrpose/include/dataset_crowdpose.py`)
- Model configuration → DETRPose model: configures (evidence: `configs/detrpose/include/detrpose_hgnetv2.py`)
- Model configuration → HGNetv2 backbone: configures (evidence: `configs/detrpose/include/detrpose_hgnetv2.py`)
- Model configuration → Hybrid encoder: configures (evidence: `configs/detrpose/include/detrpose_hgnetv2.py`)
- Model configuration → Transformer decoder: configures (evidence: `configs/detrpose/include/detrpose_hgnetv2.py`)
- Model configuration → Matching and losses: configures (evidence: `configs/detrpose/include/detrpose_hgnetv2.py`)
- Model configuration → Pose postprocessing: configures (evidence: `configs/detrpose/include/detrpose_hgnetv2.py`)
- Transformer decoder → Denoising queries: uses (evidence: `src/models/detrpose/transformer.py`)
- Training orchestration → Train and evaluate: invokes (evidence: `src/solver/trainer.py`)
- Train and evaluate → COCO metrics: evaluates with (evidence: `src/solver/engine.py`)
- Train and evaluate → DETRPose model: runs
- Train and evaluate → CrowdPose metrics: evaluates with
- Torch inference → Pose annotators: uses (evidence: `tools/inference/torch_inf.py`)
- TensorRT inference → Pose annotators: uses (evidence: `tools/inference/trt_inf.py`)
- Engineer or user → Torch inference: runs inference
- Engineer or user → ONNX inference: runs inference
- Engineer or user → TensorRT inference: runs inference
- Engineer or user → ONNX export: exports model
- Engineer or user → TensorRT export: exports model
