AnnotateIt/edgecrafter-ecdet-x-onnx
<!-- annotateit-brand:start --> <p><a href="https://huggingface.co/AnnotateIt"><img src="https://huggingface.co/spaces/AnnotateIt/README/resolve/d399a89b9d5dcf41afbe7cf29bf99c9028bc51e2/assets/annotateit-logo.png" width="48" height="48" alt="AnnotateIt"></a></p>
[AnnotateIt](https://annotateit.ai/) · [Open the app](https://app.annotateit.ai/) · [Models & datasets](https://huggingface.co/AnnotateIt) · [Documentation](https://annotateit.ai/docs/) <!-- annotateit-brand:end -->
EdgeCrafter ECDet-X — FP32 ONNX
Independent AnnotateIt conversion of the official COCO-only checkpoint, not endorsed by the authors. Original project: https://github.com/Intellindust-AI-Lab/EdgeCrafter, code revision b17f0f340af687e7adf2dff42a49e2eb8250ee20.
Single-file FP32, opset 17, 197,214,708 bytes. SHA-256: 7c086440eda87a120acb940dc5e48730bccdeb3641773a4a0d2be94eed424926. Input: images float32 [batch,3,640,640]. RGB, bilinear stretch resize, /255, ImageNet normalization. Outputs: pred_logits [batch,300,80] raw class logits and pred_boxes [batch,300,4] normalized cxcywh. The graph includes the model's internal TopK; external postprocessing is not embedded. AnnotateIt applies sigmoid, the best class per query, confidence filtering (default 0.4), and box scaling. No NMS. See config.json for the complete import contract and COCO class mapping.
Validation and limitations
- Strict checkpoint loading, ONNX checker/shape inference and batch 1/2 checks passed.
- Two independent exports are byte-identical.
- PyTorch versus native ONNX Runtime: 15 numerical cases and semantic comparisons on 12 COCO val2017 images.
- All semantic comparisons passed at confidence 0.4; this is a smoke sample, not a full COCO AP evaluation.
- Real Chrome, onnxruntime-web 1.24.3, WASM (one thread): 12 images passed with the production AnnotateIt parser.
- WebGPU, mobile and other browsers have not been validated. Large models require more RAM and CPU time.
- Browser timings in the report are diagnostic, not a controlled benchmark.
Raw tensor caveats (preserved rather than reported as strict parity):
- pred_boxes outside [0,1]: min=0.018269797787070274, max=1.647832989692688
- strict allclose (rtol=0.001, atol=0.0001) failed for cases ['image000000037777.jpg', 'image000000458054.jpg'] and was accepted ONLY via the documented secondary path (see numerical_parity.criteria and per-case details). This is NOT a strict raw-tensor parity pass. Semantic detections are independently gated.
The subthreshold exception, when used, requires at most four changed rows per image, confidence below 0.3 in both runtimes, identical winning classes, sigmoid error below 0.001 and strict box parity. Lowering the confidence threshold can expose those low-confidence predictions; numerical equivalence is not bit-exact. See validation-report.json, browser-report.json and export-info.json for full evidence.
Reproduction
Export and verification scripts are included in export/. Clone EdgeCrafter and check out the pinned commit; install the requirements (CPU PyTorch from its official index). Run export_raw_onnx.py and verify_onnx.py with --variant ecdet_x and the original checkpoint. See the AnnotateIt scripts/ecdet-release/README.md for full commands and browser verification. Apache-2.0; see LICENSE and NOTICE.
