Pretrained weights

July 11, 2026 · View on GitHub

Large checkpoint files live here (typically gitignored). Registered assets are listed in oriented_det/pretrained/manifest.json and downloaded from Hugging Face Hub (dl4eo/oriented-det-pretrained).

Naming

PieceRoleExample
Manifest slugStable id for hf:// and odet pretrained downloadoriented_rcnn_dota_le90_1x
.pth filenameContent-addressed blob on disk / Huboriented_rcnn_r50_fpn_dota_le90_1x-5b128e72.pth
mAPMetadata only (eval-val protocol via odet preds; see below)See tables below

Do not compare manifest eval_map50 to training compute_map_final mAP. They use different pipelines:

MetricSourceTypical use
eval_map50 in manifest / zoo tablesodet preds on val tiles (make eval-val / make metrics) — all val tiles, filter_empty_gt=false, production.* decodePublished Hub metadata
Periodic mAP during trainingevaluation.compute_map_every_n_epochs on non-empty val tiles; often GPU-sampled IoU (use_exact_rotated_iou: false)Monitor convergence
Final mAP after trainingevaluation.compute_map_final on best checkpoint; often exact CPU polygon IoU (use_exact_rotated_iou_for_final_map: true)Training log headline number

Example (Oriented R-CNN 1×): Hub eval_map50 is 74.79% from odet preds on val tiles using the published oriented_rcnn_dota_le90_1x checkpoint.

Publish or refresh a checkpoint:

python tools/publish_checkpoint.py runs/<model>/<run>/checkpoints/best_mAP_*.pth \
  pretrained/<basename_without_hash>
cp runs/<model>/<run>/config.json pretrained/<weight-stem>.json
cp runs/<model>/<run>/train.log pretrained/<weight-stem>.log

Then update oriented_det/pretrained/manifest.json with the new filename and sha256.

Upload to Hugging Face Hub (weights plus sidecar .json / .log when present):

hf auth login   # once
make upload-pretrained
``$

**\text{RetinaNet} \text{checkpoint} \text{compatibility}:** \text{weights} \text{trained} \text{before} \text{the} \text{MMRotate} \text{parity} \text{release} (\text{separate} \text{cls}/\text{reg} \text{subnets}, 3 \times 3 \text{heads}, $LastLevelP6P7` FPN) will not load. Use newly trained or re-published Hub slugs after that release.

Overrides: `HF_REPO_ID=`, `HF_REVISION=`, `HF_COMMIT_MESSAGE=`, `PRETRAINED_DIR=`.

## Download

```bash
odet pretrained list
odet pretrained download oriented_rcnn_dota_le90_1x
"load_from_checkpoint": "hf://oriented_rcnn_dota_le90_1x"

Environment overrides: see oriented_det/pretrained/README.md.

DOTA le90 pretrain zoo

Training split: train+val (train + val tile roots). Eval split: val (mAP on val tiles only). This is DOTA pretrain convention, not a fine-tune train/val holdout.

mAP below is make eval-val mAP50 (all 7,669 val tiles, filter_empty_gt=false, rotated IoU ≥ 0.50). Training-time periodic mAP uses non-empty tiles only and may be higher.

Oriented R-CNN R50-FPN

SlugRecipeeval-val mAP50ConfigFinal configFinal log
oriented_rcnn_dota_le90_1x1× (12 ep)74.79%dota_le90_1x.jsonoriented_rcnn_r50_fpn_dota_le90_1x-5b128e72.jsonoriented_rcnn_r50_fpn_dota_le90_1x-5b128e72.log
oriented_rcnn_dota_le90_3x3× (36 ep)79.40%dota_le90_3x.jsonoriented_rcnn_r50_fpn_dota_le90_3x-68957f98.jsonoriented_rcnn_r50_fpn_dota_le90_3x-68957f98.log

Rotated Faster R-CNN R50-FPN

SlugRecipeeval-val mAP50ConfigFinal configFinal log
rotated_faster_rcnn_dota_le90_1x1× ProbIoU main77.57%dota_le90_1x.jsonrotated_faster_rcnn_r50_fpn_dota_le90_1x-0733c506.jsonrotated_faster_rcnn_r50_fpn_dota_le90_1x-0733c506.log
rotated_faster_rcnn_dota_le90_3x3× ProbIoU main83.42%dota_le90_3x.jsonrotated_faster_rcnn_r50_fpn_dota_le90_3x-bfbd261d.jsonrotated_faster_rcnn_r50_fpn_dota_le90_3x-bfbd261d.log
rotated_faster_rcnn_dota_le90_3x_ce3× CE baseline75.58%dota_le90_3x.jsonrotated_faster_rcnn_r50_fpn_dota_le90_3x_ce-c077eeee.jsonrotated_faster_rcnn_r50_fpn_dota_le90_3x_ce-c077eeee.log

Rotated RetinaNet R50-FPN

SlugRecipeeval-val mAP50ConfigFinal configFinal log
rotated_retinanet_dota_le90_1x1× (12 ep)64.14%dota_le90_1x.jsonrotated_retinanet_r50_fpn_dota_le90_1x-bb9a0bd2.jsonrotated_retinanet_r50_fpn_dota_le90_1x-bb9a0bd2.log
rotated_retinanet_dota_le90_3x3× (36 ep)71.52%dota_le90_3x.jsonrotated_retinanet_r50_fpn_dota_le90_3x-8decc6f1.jsonrotated_retinanet_r50_fpn_dota_le90_3x-8decc6f1.log

Per-class AP and eval reports: docs/eval-reports/ (tracked reports; raw predictions.json under gitignored predictions/ for odet viewer).