llama2thedog's picture
Fix Recall value (micro vs macro)
6df5e2f verified
|
Raw
History Blame Contribute Delete
2.51 kB
---
license: mit
library_name: pytorch
tags:
- point-cloud
- 3d
- classification
- bim
- aec
- ifc
- building-information-modeling
datasets:
- ifcnetcore
---
# BIM-JEPA (Finetuned on IFCNetCore)
Classification model finetuned from [`llama2thedog/BIM-JEPA-pretrained`](https://huggingface.co/llama2thedog/BIM-JEPA-pretrained) on the **IFCNetCore** dataset.
## Performance (test set)
| Metric | Value |
|---|---|
| **Overall Accuracy** | **89.37%** |
| Mean Class Accuracy (macro recall) | 86.63% |
| Precision (macro) | 89.38% |
| Recall (micro) | 89.37% |
| F1 Score (macro) | 87.69% |
## 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](https://github.com/jackswl/bim-jepa) (code + configs)
- [Project page](https://jackswl.github.io/bim-jepa/)
- [Pretrained base](https://huggingface.co/llama2thedog/BIM-JEPA-pretrained)
## Architecture
- **Backbone**: BIM-JEPA encoder (12-layer Transformer, 384 dim, 6 heads) — initialized from the pretrained checkpoint
- **Head**: MLP classifier, 256 hidden dim, mean+max pooling, 0.5 dropout
- **Loss**: Cross-entropy with label smoothing (0.1)
- **Encoder schedule**: Frozen for the first 175 epochs, then unfrozen and finetuned end-to-end
## Training
| | |
|---|---|
| Dataset | IFCNetCore |
| Input | 4096 points per object |
| Augmentations | Scale, rotate (all axes), translate |
| Epochs | 350 |
| Batch size | 32 |
| Optimizer | AdamW (head lr=1e-3, encoder lr=1e-4, weight decay 0.05) |
| Schedule | Linear warmup (10 epochs) + cosine decay |
| Precision | bf16-mixed |
Full training hyperparameters are in [`hparams.yaml`](./hparams.yaml).
## Files
| File | Size | Description |
|---|---|---|
| `bim_jepa_finetuned_ifcnetcore.ckpt` | 256 MB | PyTorch Lightning checkpoint |
| `hparams.yaml` | 2 KB | Training hyperparameters |
## Usage
Clone the [GitHub repo](https://github.com/jackswl/bim-jepa) first to get the model code, then:
```python
from huggingface_hub import hf_hub_download
from bimjepa.models.classification import BimJepaClassification
ckpt_path = hf_hub_download(
repo_id="llama2thedog/BIM-JEPA-finetuned-ifcnetcore",
filename="bim_jepa_finetuned_ifcnetcore.ckpt",
)
model = BimJepaClassification.load_from_checkpoint(ckpt_path)
model.eval()
```
## Citation
```
in progress
```
## License
MIT