BIM-JEPA (Pretrained)
Pretrained checkpoint for BIM-JEPA, a self-supervised Joint-Embedding Predictive Architecture (JEPA) for 3D BIM element representation learning.
This is the pretrained foundation model (no downstream head). For finetuned classifiers, see:
llama2thedog/BIM-JEPA-finetuned-ifcnetcore— 89.37% OA on IFCNetCorellama2thedog/BIM-JEPA-finetuned-bimgeom— 92.43% OA on BIMGEOM
Paper
Self-supervised learning for BIM element classification using a joint embedding predictive architecture
Jack Wei Lun Shi, Wawan Solihin, Yufeng Weng, Yimin Zhao, Leong Hien Poh, Justin K.W. Yeoh
Automation in Construction
- GitHub repo (code + configs)
- Project page
Architecture
- Encoder: 12-layer Transformer, 384 hidden dim, 6 attention heads
- Predictor: 6-layer Transformer, 192 hidden dim
- Tokenizer: 64 groups × 32 points per group (iterative-nearest grouping)
- Pretraining objective: Smooth-L1 regression against EMA-teacher token embeddings, with 4 masked target blocks per sample
Training
| Datasets | IFC-884K (3 parts), IFCNet (no-test split), BIMGEOM (no-test split) |
| Input | 4096 points per object (centered + unit-sphere normalized) |
| Augmentations | Scale, rotate (z-axis), translate |
| Epochs | 500 |
| Batch size | 512 |
| Optimizer | AdamW (lr=1e-4, weight decay 0.05) |
| Schedule | Linear warmup (50 epochs) + cosine decay |
| Precision | bf16-mixed |
| Hardware | 4 × GPU (DDP) |
Full training hyperparameters are in hparams.yaml.
Files
| File | Size | Description |
|---|---|---|
bim_jepa_pretrained.ckpt |
364 MB | PyTorch Lightning checkpoint (encoder + predictor + EMA teacher) |
hparams.yaml |
2 KB | Training hyperparameters |
Usage
Clone the GitHub repo first to get the model code and environment, then:
from huggingface_hub import hf_hub_download
from bimjepa.models.bim_jepa import BimJepa
ckpt_path = hf_hub_download(
repo_id="llama2thedog/BIM-JEPA-pretrained",
filename="bim_jepa_pretrained.ckpt",
)
model = BimJepa.load_from_checkpoint(ckpt_path)
model.eval()
To finetune for classification, use the configs at configs/BIM-JEPA/classification/ in the GitHub repo. Place the downloaded checkpoint at BIM-JEPA/pretrained/bim_jepa_pretrained.ckpt (the default path in the configs), then:
python -m bimjepa.tasks.classification fit \
-c configs/BIM-JEPA/classification/ifcnet_classification.yaml
Citation
in progress
License
MIT