Goal
- Deploy RF-DETR Nano (vision transformer + DETR head) on NXP FRDM-IMX95
- Run inference with eIQ Neutron NPU via libneutron_delegate.so
- Need confirmation: Does eIQ support vision-transformer-based models for NPU acceleration?
My Board Details
- Board: NXP FRDM-IMX95 (imx95-15x15-lpddr4x-frdm)
- Kernel: Linux 6.18.2-1.0.0-gf49f45233f7b (aarch64, Feb 2026)
- CPU: 6× ARM Cortex-A55 (500–1800 MHz)
- NPU: eIQ Neutron-S (libneutron_delegate.so)
- Guide used: FRDM i.MX95 Getting Started – NPU section
Model & Pipeline Tried
- Model: RF-DETR Nano (DINOv2 ViT backbone + DETR decoder)
- Input: 384×384, COCO 80 classes
- Flow:
- PyTorch → ONNX (opset 18)
- ONNX → TFLite via onnx2tf (-fdosm for SavedModel)
- TFLite dynamic-range quant (float32 I/O) — CPU inference works
- Host: neutron-converter --input model.tflite --output model_neutron.tflite --target imx95
- Board: TFLite + Neutron delegate
What Works
- ONNX export succeeds
- TFLite conversion succeeds (~30 MB model)
- CPU inference is correct — detections match PyTorch (dog/person/car on test image)
- Model runs on FRDM with and without delegate
What Fails / Blocked
- No NPU graph created after conversion
- Inspecting converted .tflite: no neutronGraph / NeutronOperator markers
- Neutron delegate appears to offload 0 nodes → full CPU fallback
- Full INT8 quantization fails on transformer ops (RANGE, DIV, etc.)
- Used dynamic-range quant instead (weights quantized, float32 I/O)
Why I Think It’s Unsupported (Need Confirmation)
- RF-DETR is transformer-heavy: attention, BatchMatMul, Softmax, LayerNorm, Gather, etc.
- Neutron docs list mainly CNN ops (Conv2D, DepthwiseConv2D, Pooling, Add…)
- Similar split-model approach needed on Rockchip NPU (backbone on NPU, decoder on CPU):
rfdetr-on-rockchip-npu
My Specific Questions
- Does eIQ Neutron on i.MX95 support end-to-end vision transformer models (ViT / DETR / RF-DETR)?
- If not, what is the recommended split (e.g. DINOv2 backbone on NPU, DETR head on CPU)?
- Are BatchMatMul / Multi-Head Attention supported on Neutron-S for i.MX95 in current SDK?
- Which eIQ Toolkit version matches BSP kernel 6.18.2-1.0.0 for FRDM-IMX95?
- Should we use NXP tflite-profiler + tflite-quantizer instead of onnx2tf dynamic-range quant for better NPU compatibility?
- Any reference example for transformer or DETR-style models on i.MX95 Neutron
Commands Used (for reproducibility)
Host (convert):
--input rf_detr_nano_full_int8.tflite \
--output rf_detr_nano_neutron_imx95.tflite \
Board (inference):
python3 redetr_test_neutron_imx95.py \
--model rf_detr_nano_neutron_imx95.tflite \
--delegate /usr/lib/libneutron_delegate.so
Expected issue: converted model has no neutronGraph → no NPU acceleration.
Please confirm:
- Is vision-transformer NPU acceleration supported on i.MX95 today?
- If not, what is the official workaround (model split, different export path, or future roadmap)?