"""Deformable DETR teaching override for MMDetection 3.1.0.

The base model and runtime remain in the official MMDetection source tree.
Set MMDET_ROOT when launching tools/train.py and adjust data_root or
num_classes for the selected COCO-style remote-sensing subset. The default
metainfo intentionally represents a six-class teaching subset, not the
complete 20-class DIOR benchmark; keep the annotation category mapping
consistent with this tuple.
"""

import os
from pathlib import Path

MMDET_ROOT = Path(os.getenv("MMDET_ROOT", "third_party/mmdetection-v3.1.0"))
_base_ = [str(MMDET_ROOT / "configs/deformable_detr/deformable-detr_r50_8xb2-50e_coco.py")]

data_root = os.getenv("COCO_ROOT", "data/processed/dior")
metainfo = {"classes": ("airplane", "ship", "vehicle", "bridge", "storage-tank", "harbor")}
num_classes = len(metainfo["classes"])

model = dict(
    bbox_head=dict(num_classes=num_classes),
    data_preprocessor=dict(pad_size_divisor=32),
)
train_cfg = dict(max_epochs=int(os.getenv("EPOCHS", "24")))
train_dataloader = dict(
    batch_size=2,
    dataset=dict(data_root=data_root, metainfo=metainfo, ann_file="annotations/train.json", data_prefix=dict(img="train/")),
)
val_dataloader = dict(
    batch_size=1,
    dataset=dict(data_root=data_root, metainfo=metainfo, ann_file="annotations/val.json", data_prefix=dict(img="val/")),
)
test_dataloader = val_dataloader
val_evaluator = dict(ann_file=str(Path(data_root) / "annotations/val.json"))
test_evaluator = val_evaluator
randomness = dict(seed=42)
