Hi @user583,
Thank you for your detailed explanation regarding the raw decoder. I agree that my over-detection issue is most likely on the host side (FCR/NHWC handling), and I will continue debugging that separately.
However, I also investigated the on-chip NMS path that you recommended, and I am still unable to generate an NMS HEF.
I would like to provide an update because this seems to be a different issue from the raw decoder.
Environment
Model
Parser detects the model correctly:
NMS structure of yolov8 (or equivalent architecture) was detected.
In order to use HailoRT post-processing capabilities, these end node names should be used:
/model.29/cv2.0/cv2.0.2/Conv
/model.29/cv3.0/cv3.0.2/Conv
/model.29/cv2.1/cv2.1.2/Conv
/model.29/cv3.1/cv3.1.2/Conv
/model.29/cv2.2/cv2.2.2/Conv
/model.29/cv3.2/cv3.2.2/Conv
I used exactly those end nodes.
My NMS JSON is:
{
"nms_scores_th": 0.2,
"nms_iou_th": 0.7,
"image_dims": [640,640],
"max_proposals_per_class": 100,
"classes": 1,
"regression_length": 16,
"background_removal": false,
"background_removal_index": 0,
"bbox_decoders":[
{"name":"bbox_decoder138","stride":8,"reg_layer":"conv138","cls_layer":"conv139"},
{"name":"bbox_decoder110","stride":16,"reg_layer":"conv110","cls_layer":"conv111"},
{"name":"bbox_decoder81","stride":32,"reg_layer":"conv81","cls_layer":"conv83"}
]
}
and my model script is simply
model_optimization_config(calibration, batch_size=8, calibset_size=1024)
post_quantization_optimization(finetune, policy=disabled)
nms_postprocess("/workspace/best_uav_nms.json", meta_arch=yolov8, engine=cpu)
What succeeds
Everything succeeds until the final HEF generation.
-
parser ✓
-
optimize ✓
-
calibration ✓
-
optimized HAR ✓
-
partition ✓
-
mapping ✓
-
kernel compilation ✓
For example:
Successful Mapping (allocation time: 23m 55s)
Compiling kernels...
Bandwidth calculation...
Building HEF...
Failure
The compiler fails only during the final HEF generation:
Building HEF...
map::at
BackendAllocatorException:
Compilation failed: map::at
No HEF is produced.
Same behavior on DFC 3.33.1 and 3.34.0
Originally I thought this might be fixed in DFC 3.34.0.
However, after creating a completely fresh Python virtual environment and reinstalling DFC 3.34.0 from scratch, I get exactly the same failure.
The compilation proceeds much further than before (mapping and kernel compilation complete successfully), but it still fails at the final “Building HEF…” stage with the same map::at exception.
My question
Does this look like a known DFC backend issue?
Or is there something incorrect in my NMS JSON / ALLS configuration that could still trigger this allocator failure?
Since parser automatically detected the YOLOv8 NMS structure and I am using the parser-recommended end nodes with classes=1 and regression_length=16, I am running out of ideas.
If there are any additional debug flags, compiler logs, or HAR files that would help identify where map::at is thrown, I would be happy to provide them.
Thank you!