OrangIdentifier
Individual facial recognition for Bornean orangutans — end-to-end pipeline from raw photographs to offline Android deployment.
CNRS IPHC Strasbourg · BOS Foundation Borneo · May 2026
Overview
Rangers at BOS Foundation (Borneo Orangutan Survival) need to identify individual orangutans during field patrols. This pipeline produces an Android app that runs entirely offline and returns an identity match or "unknown individual" within seconds of taking a photo.
The gallery is a JSON file containing one averaged embedding vector per individual. Adding a new individual requires 10–20 photos, takes under a minute, and requires no retraining.
Models
| File | Version | Size | Description |
|---|---|---|---|
yolo_v1_nano_mAP92.pt |
V1 | 6 MB | YOLO nano — mAP@50 = 91.98% |
yolo_v2_medium_mAP99.pt |
V1–V4 | 85 MB | YOLO medium — mAP@50 = 99.39% |
resnet50_classifier_10classes_acc96.pt |
V1 | 90 MB | Closed-set classifier, acc = 96.3% |
resnet50_backbone_2048dim.pt |
V2 | 90 MB | Embedding backbone, 2048-dim |
megadesc_T_arcface_final_epoch21_acc99.pt |
V3 | 105 MB | ArcFace, 10 individuals |
megadesc_T_arcface_v4_40individus_acc99.pt |
V4 ★ | 105 MB | ArcFace, 40 individuals |
Inference pipeline
Raw photo → YOLO face detection (mAP@50=99.4%) → 224×224 crop
→ MegaDescriptor-T-224 (Swin Transformer, 768-dim embedding)
→ Cosine similarity vs gallery
→ Known individual (sim ≥ 0.22) or Unknown (sim < 0.22)
Performance
| V1 | V2 | V3 | V4 | |
|---|---|---|---|---|
| Backbone | ResNet50 | ResNet50 | MegaDescriptor-T | MegaDescriptor-T |
| Supervised individuals | 10 | 10 | 10 | 40 |
| Zoo accuracy | 96.3% | ~98% | 99.2% | 99.2% |
| BOS rejection (1622 unseen crops) | — | 27.5% | 97.5% | 97.5% |
| Wild internet rejection | — | 48.5% | 93.2% | 93.0% |
| Separability gap | — | 0.294 | 0.883 | 0.885 |
Dataset
| Source | Individuals | Crops | Role |
|---|---|---|---|
| Zoo Amnéville + Indonesia | 10 | 2,127 | Training (known) |
| BOS Foundation Borneo | 30 | 1,622 | Open-set test only |
| Internet (iNaturalist, GBIF, web) | unlabeled | 5,429 | Background class |
Images are not included.
Download
from huggingface_hub import hf_hub_download
path = hf_hub_download(
repo_id="tit0000/OrangIdentifier",
filename="megadesc_T_arcface_v4_40individus_acc99.pt"
)
Source code & documentation
github.com/tit0000/OrangIdentifier
Security note
These .pt files are standard PyTorch/Ultralytics checkpoints. The pickle imports flagged by HuggingFace are all from trusted libraries (torch, ultralytics, collections) and contain no malicious code.
References
- Čermák et al. (2024). WildlifeDatasets. WACV 2024. CVF
- Deng et al. (2019). ArcFace. CVPR 2019. arXiv
- Deng et al. (2020). Sub-center ArcFace. ECCV 2020. Springer
- Liu et al. (2021). Swin Transformer. ICCV 2021. arXiv
- Otarashvili, L. (2023). MiewID. Conservation X Labs. GitHub
- Jocher et al. (2023). Ultralytics YOLOv8. GitHub