RAGNAROK - Multispectral Camouflaged Object Detection
Phase 1 RGB pretraining checkpoint for the RAGNAROK module.
Model Details
- Paper: MCOD: First Multispectral Camouflaged Object Detection Benchmark (arXiv: 2509.15753)
- Architecture: ResNet-50 8-channel backbone + Spectral Attention + PRNet Progressive Decoder
- Parameters: 33.3M
- Training: Phase 1 RGB pretraining on COD10K (4,040 images)
- Input: 8-channel tensor (3 RGB + 4 NIR + 1 thermal), 352x352
- Output: Binary camouflage segmentation mask
Training Results (Phase 1)
| Metric | Value |
|---|---|
| val/loss | 2.256 |
| val/iou | 0.226 |
| Epochs | 50 |
| Batch size | 44 per GPU |
| GPUs | 2x NVIDIA L4 (DDP) |
| Precision | FP16 mixed |
Available Formats
| Format | File | Size |
|---|---|---|
| PyTorch (.pth) | project_ragnarok_cuda_v1_phase1_best.pth |
128MB |
| SafeTensors | project_ragnarok_cuda_v1_phase1_best.safetensors |
128MB |
| ONNX (opset 17) | project_ragnarok_v1_phase1.onnx |
111MB |
| TensorRT FP32 | project_ragnarok_v1_phase1_trt_fp32.engine |
114MB |
| TensorRT FP16 | project_ragnarok_v1_phase1_trt_fp16.engine |
57MB |
Usage
import torch
from anima_ragnarok.model import RagnarokModel
model = RagnarokModel(config_path="configs/model_config.yaml")
state = torch.load("project_ragnarok_cuda_v1_phase1_best.pth")
model.load_state_dict(state["model_state_dict"], strict=False)
model.eval()
# Input: 8-channel image [B, 8, 352, 352]
output = model(input_tensor)
mask = output[0] # [B, 1, 352, 352]
ANIMA Module
Part of the ANIMA robotics perception stack. See RobotFlow-Labs/defense-project-ragnarok.