# intellindust-ai-lab/edgecrafter architecture

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

- Interactive diagram: https://gitdiagram.com/intellindust-ai-lab/edgecrafter
- Repository: https://github.com/intellindust-ai-lab/edgecrafter

## Overview

EdgeCrafter is a compact vision-model repository with separate detection/instance-segmentation and pose-estimation packages. Its main workflow configures a task, builds a solver, trains or validates against COCO-style data, and produces predictions; inference and ONNX export are additional deployment paths. The graph also preserves the documented task-specific model capabilities. Training entry points and portions of the runtime are sampled; links for unsampled subsystems are limited to the workflow their module structure and README support.

Main entry points: [`ecdetseg/engine/solver/ec_engine.py`](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/solver/ec_engine.py) (Det/seg engine), [`ecdetseg/train.py`](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/train.py) (Det/seg entry), [`ecpose/train.py`](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/train.py) (Pose entry), [`ecdetseg/engine/solver/ec_solver.py`](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/solver/ec_solver.py) (Det/seg solver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Configuration and training"]
  node_detseg_entry["Det/seg entry<br/>[train.py]"]
  node_pose_entry["Pose entry<br/>[train.py]"]
  node_config["YAML config<br/>[yaml_config.py]"]
  node_registry["Component registry<br/>[workspace.py]"]
  node_detseg_solver["Det/seg solver<br/>[ec_solver.py]"]
  node_pose_solver["Pose solver<br/>[pose_solver.py]"]
end

subgraph group_data["Data preparation"]
  node_detseg_dataset["Detection datasets"]
  node_pose_dataset["Pose dataset"]
  node_detseg_transforms["Det/seg transforms"]
  node_pose_transforms["Pose transforms"]
  node_detseg_loader["Det/seg loader<br/>[dataloader.py]"]
  node_pose_loader["Pose loader<br/>[dataloader.py]"]
end

subgraph group_models["Task models"]
  node_det_model["Detection model<br/>[modeling.py]"]
  node_seg_head["Segmentation head"]
  node_pose_model["Pose model<br/>[ecpose.py]"]
end

subgraph group_evaluation["Training and evaluation"]
  node_detseg_engine["Det/seg engine<br/>[ec_engine.py]"]
  node_pose_engine["Pose engine<br/>[pose_engine.py]"]
  node_detseg_eval["COCO evaluation<br/>[coco_eval.py]"]
  node_pose_eval["Pose metrics<br/>[metrics.py]"]
end

subgraph group_deployment["Inference and deployment"]
  node_det_export["Det/seg ONNX export<br/>[export_onnx.py]"]
  node_pose_export["Pose ONNX export<br/>[export_onnx.py]"]
  node_det_torch_inf["Torch inference<br/>[torch_inf.py]"]
  node_pose_torch_inf["Pose Torch inference<br/>[torch_inf.py]"]
  node_det_onnx_inf["Det/seg ONNX inference<br/>[onnx_inf.py]"]
  node_pose_onnx_inf["Pose ONNX inference<br/>[onnx_inf.py]"]
end

node_user(("Researcher"))
node_coco[("COCO data")]
node_onnx_runtime["ONNX Runtime"]
node_predictions["Predictions"]

node_user -->|"select task"| node_detseg_entry
node_user -->|"select task"| node_pose_entry
node_detseg_entry -->|"loads config"| node_config
node_pose_entry -->|"loads config"| node_config
node_detseg_entry -->|"builds solver"| node_detseg_solver
node_pose_entry -->|"builds solver"| node_pose_solver
node_config -->|"constructs components"| node_registry
node_detseg_solver -->|"trains or validates"| node_detseg_engine
node_pose_solver -->|"trains or validates"| node_pose_engine
node_coco -->|"provides annotations"| node_detseg_dataset
node_coco -->|"provides annotations"| node_pose_dataset
node_detseg_dataset -->|"transforms samples"| node_detseg_transforms
node_pose_dataset -->|"transforms samples"| node_pose_transforms
node_detseg_transforms -->|"batches samples"| node_detseg_loader
node_pose_transforms -->|"batches samples"| node_pose_loader
node_detseg_solver -->|"uses batches"| node_detseg_loader
node_pose_solver -->|"uses batches"| node_pose_loader
node_detseg_engine -->|"runs model"| node_det_model
node_detseg_engine -->|"runs segmentation"| node_seg_head
node_pose_engine -->|"runs model"| node_pose_model
node_detseg_engine -->|"updates evaluator"| node_detseg_eval
node_pose_engine -->|"computes metrics"| node_pose_eval
node_det_model -->|"produces detections"| node_predictions
node_seg_head -->|"produces masks"| node_predictions
node_pose_model -->|"produces keypoints"| node_predictions
node_user -->|"runs inference"| node_det_torch_inf
node_user -->|"runs inference"| node_pose_torch_inf
node_det_torch_inf -->|"loads model"| node_det_model
node_pose_torch_inf -->|"loads model"| node_pose_model
node_user -->|"exports model"| node_det_export
node_user -->|"exports model"| node_pose_export
node_user -->|"runs inference"| node_det_onnx_inf
node_user -->|"runs inference"| node_pose_onnx_inf
node_det_onnx_inf -->|"runs session"| node_onnx_runtime
node_pose_onnx_inf -->|"runs session"| node_onnx_runtime
node_onnx_runtime -->|"returns predictions"| node_predictions

click node_detseg_entry "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/train.py"
click node_pose_entry "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/train.py"
click node_config "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/core/yaml_config.py"
click node_registry "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/core/workspace.py"
click node_detseg_solver "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/solver/ec_solver.py"
click node_pose_solver "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/solver/pose_solver.py"
click node_detseg_dataset "https://github.com/intellindust-ai-lab/edgecrafter/tree/main/ecdetseg/engine/data/dataset"
click node_pose_dataset "https://github.com/intellindust-ai-lab/edgecrafter/tree/main/ecpose/engine/data/dataset"
click node_detseg_transforms "https://github.com/intellindust-ai-lab/edgecrafter/tree/main/ecdetseg/engine/data/transforms"
click node_pose_transforms "https://github.com/intellindust-ai-lab/edgecrafter/tree/main/ecpose/engine/data/transforms"
click node_detseg_loader "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/data/dataloader.py"
click node_pose_loader "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/data/dataloader.py"
click node_det_model "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/edgecrafter/modeling.py"
click node_seg_head "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/edgecrafter/segmentation_head.py"
click node_pose_model "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/edgecrafter/ecpose.py"
click node_detseg_engine "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/solver/ec_engine.py"
click node_pose_engine "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/solver/pose_engine.py"
click node_detseg_eval "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/data/dataset/coco_eval.py"
click node_pose_eval "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/misc/metrics.py"
click node_det_export "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/tools/deployment/export_onnx.py"
click node_pose_export "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/tools/deployment/export_onnx.py"
click node_det_torch_inf "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/tools/inference/torch_inf.py"
click node_pose_torch_inf "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/tools/inference/torch_inf.py"
click node_det_onnx_inf "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/tools/inference/onnx_inf.py"
click node_pose_onnx_inf "https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/tools/inference/onnx_inf.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_detseg_entry,node_pose_entry,node_config,node_registry,node_detseg_solver,node_pose_solver toneBlue
class node_detseg_dataset,node_pose_dataset,node_detseg_transforms,node_pose_transforms,node_detseg_loader,node_pose_loader,node_coco toneAmber
class node_det_model,node_seg_head,node_pose_model toneMint
class node_detseg_engine,node_pose_engine,node_detseg_eval,node_pose_eval toneRose
class node_det_export,node_pose_export,node_det_torch_inf,node_pose_torch_inf,node_det_onnx_inf,node_pose_onnx_inf,node_user,node_onnx_runtime,node_predictions toneIndigo
```

## Components

### Configuration and training

- [Det/seg entry](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/train.py): `ecdetseg/train.py`
- [Pose entry](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/train.py): `ecpose/train.py`
- [YAML config](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/core/yaml_config.py): `ecdetseg/engine/core/yaml_config.py`
- [Component registry](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/core/workspace.py): `ecdetseg/engine/core/workspace.py`
- [Det/seg solver](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/solver/ec_solver.py): `ecdetseg/engine/solver/ec_solver.py`
- [Pose solver](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/solver/pose_solver.py): `ecpose/engine/solver/pose_solver.py`

### Data preparation

- [Detection datasets](https://github.com/intellindust-ai-lab/edgecrafter/tree/main/ecdetseg/engine/data/dataset): `ecdetseg/engine/data/dataset`
- [Pose dataset](https://github.com/intellindust-ai-lab/edgecrafter/tree/main/ecpose/engine/data/dataset): `ecpose/engine/data/dataset`
- [Det/seg transforms](https://github.com/intellindust-ai-lab/edgecrafter/tree/main/ecdetseg/engine/data/transforms): `ecdetseg/engine/data/transforms`
- [Pose transforms](https://github.com/intellindust-ai-lab/edgecrafter/tree/main/ecpose/engine/data/transforms): `ecpose/engine/data/transforms`
- [Det/seg loader](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/data/dataloader.py): `ecdetseg/engine/data/dataloader.py`
- [Pose loader](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/data/dataloader.py): `ecpose/engine/data/dataloader.py`

### Task models

- [Detection model](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/edgecrafter/modeling.py): `ecdetseg/engine/edgecrafter/modeling.py`
- [Segmentation head](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/edgecrafter/segmentation_head.py): `ecdetseg/engine/edgecrafter/segmentation_head.py`
- [Pose model](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/edgecrafter/ecpose.py): `ecpose/engine/edgecrafter/ecpose.py`

### Training and evaluation

- [Det/seg engine](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/solver/ec_engine.py): `ecdetseg/engine/solver/ec_engine.py`
- [Pose engine](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/solver/pose_engine.py): `ecpose/engine/solver/pose_engine.py`
- [COCO evaluation](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/engine/data/dataset/coco_eval.py): `ecdetseg/engine/data/dataset/coco_eval.py`
- [Pose metrics](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/engine/misc/metrics.py): `ecpose/engine/misc/metrics.py`

### Inference and deployment

- [Det/seg ONNX export](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/tools/deployment/export_onnx.py): `ecdetseg/tools/deployment/export_onnx.py`
- [Pose ONNX export](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/tools/deployment/export_onnx.py): `ecpose/tools/deployment/export_onnx.py`
- [Torch inference](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/tools/inference/torch_inf.py): `ecdetseg/tools/inference/torch_inf.py`
- [Pose Torch inference](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/tools/inference/torch_inf.py): `ecpose/tools/inference/torch_inf.py`
- [Det/seg ONNX inference](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecdetseg/tools/inference/onnx_inf.py): `ecdetseg/tools/inference/onnx_inf.py`
- [Pose ONNX inference](https://github.com/intellindust-ai-lab/edgecrafter/blob/main/ecpose/tools/inference/onnx_inf.py): `ecpose/tools/inference/onnx_inf.py`

### Other components

- **Researcher**
- **COCO data**
- **ONNX Runtime**
- **Predictions**

## Connections

- Researcher → Det/seg entry: select task
- Researcher → Pose entry: select task
- Det/seg entry → YAML config: loads config
- Pose entry → YAML config: loads config
- Det/seg entry → Det/seg solver: builds solver
- Pose entry → Pose solver: builds solver
- YAML config → Component registry: constructs components
- Det/seg solver → Det/seg engine: trains or validates
- Pose solver → Pose engine: trains or validates
- COCO data → Detection datasets: provides annotations
- COCO data → Pose dataset: provides annotations
- Detection datasets → Det/seg transforms: transforms samples
- Pose dataset → Pose transforms: transforms samples
- Det/seg transforms → Det/seg loader: batches samples
- Pose transforms → Pose loader: batches samples
- Det/seg solver → Det/seg loader: uses batches
- Pose solver → Pose loader: uses batches
- Det/seg engine → Detection model: runs model
- Det/seg engine → Segmentation head: runs segmentation
- Pose engine → Pose model: runs model
- Det/seg engine → COCO evaluation: updates evaluator
- Pose engine → Pose metrics: computes metrics
- Detection model → Predictions: produces detections
- Segmentation head → Predictions: produces masks
- Pose model → Predictions: produces keypoints
- Researcher → Torch inference: runs inference
- Researcher → Pose Torch inference: runs inference
- Torch inference → Detection model: loads model
- Pose Torch inference → Pose model: loads model
- Researcher → Det/seg ONNX export: exports model
- Researcher → Pose ONNX export: exports model
- Researcher → Det/seg ONNX inference: runs inference
- Researcher → Pose ONNX inference: runs inference
- Det/seg ONNX inference → ONNX Runtime: runs session
- Pose ONNX inference → ONNX Runtime: runs session
- ONNX Runtime → Predictions: returns predictions
