专栏算法工具链J6 bc模型正常推理后处理,hbm模型板端推理无结果

J6 bc模型正常推理后处理,hbm模型板端推理无结果

已解决
默认579842025-07-25
83
10

1.J6M

2.OE:V3.0.31

3.板端部署

4. 依据00_quickstart中pyramid数据nv12部署,部署ptq量化模型(bc模型在板端成功推理及后处理做图),hbm模型在板端相同图像输入无最终框输出,打印一切正常。

自己代码与示列代码差距主要在后处理模块,这地方直接使用output_tensors进行张量解析及后处理,麻烦看一下是否正确,我尝试后板端最终结果无输出

for (int i = 0; i < output_count; i++) {
hbUCPMemFlush(&output_tensors[i].sysMem, HB_SYS_MEM_CACHE_INVALIDATE);

}



std::vector<std::vector<Bbox2D>> result;
Parse(result, output_tensors);
save_pred_img(imglist, result,target_imglist);

在Parse函数中主要靠如下函数进行数据的解析

int32_t Parse(
std::vector<std::vector<Bbox2D>> &result,
std::vector<hbDNNTensor> &output_tensors){

......

hbDNNTensor cls_score_tensor = output_tensors[i + 3 * 0]; //1x8x48x80 有3个尺度的(i)
auto *scores = reinterpret_cast<float *>(cls_score_tensor.sysMem.virAddr);

 

int *shape_score =cls_score_tensor.properties.validShape.dimensionSize;

 

const float *score_data = scores ;//获取数据地址

 

std::vector<float> score_single(shape_score[1], 0.0);


for (int h = 0; h < height; h++) {
for (int w = 0; w < width; w++) {

// score

for (int c = 0; c < shape_score[1]; c++) {
int idx = c * height * width + h * width + w;
score_single[c] = score_data[idx]; //张量具体数据
算法工具链
技术深度解析征程6
+1
评论4
0/1000
  • Huanghui
    Lv.5

    你好,你可以先用hbruntime推理下试试看

    2025-07-25
    0
    1
    • 默认57984回复Huanghui:

      hbruntime是有输出的,相同数据输出6个目标,能帮忙查看下是不是部署代码使用方法错误吗?

      2025-07-25
      0
  • 费小财
    Lv.5

    看看日志,是不是有异常报错的

    2025-07-28
    0
    1
    • 默认57984回复费小财:

      日志是正常的当阈值全部设为0时显示5040个目标,出来的图是这样的。这地方应该怀疑是read_image_2_tensor_asnv12这里出错吗?但我是直接复用OE/samples/ucp_tutorial/dnn/basic_samples/code/00_quick_start/resnetnv12)示列代码的

      2025-07-29
      0
  • 默认57984
    Lv.1
    2025-07-29
    0
    0
  • Jade-self
    Lv.5

    建议先验证下bc与hbm的一致性,可参考文章:https://developer.horizon.auto/blog/10056

    2025-07-25
    0
    4
    • 默认57984回复Jade-self:

      bc与hbm输出一致为6个目标

      2025-07-28
      0
    • 默认57984回复Jade-self:

      cmd/usr/local/lib/python3.10/dist-packages/hbdk4/compiler/_mlir_libs/hbrt4-run-model-nash -f ./model_output/Gop_nv12/GOP_1x384x640_nv12.hbm -n GOP_1x384x640_nv12 -o /tmp/tmpgmw17x9j/output -m Bpu30g -i '/tmp/tmpgmw17x9j/imgs_y.bin:{"stride":640}' -i '/tmp/tmpgmw17x9j/imgs_uv.bin:{"stride":640}' ========= Model Input Info ========= Model name: [ GOP_1x384x640_nv12 ] ========= Model Run Success ========= outputs[0] is equal! outputs[1] is equal! outputs[2] is equal! outputs[3] is equal! outputs[4] is equal! outputs[5] is equal! outputs[6] is equal! outputs[7] is equal! outputs[8] is equal! outputs[9] is equal! outputs[10] is equal! outputs[11] is equal! outputs[12] is equal! outputs[13] is equal! outputs[14] is equal! outputs[15] is equal!

      2025-07-28
      0
    • Jade-self回复默认57984:

      “ bc模型在板端成功推理及后处理做图 ”,那把hbm的输出用python的后处理可视化看下,一致的话,说明是你的前后处理代码的问题。(模型推理部分的代码可见OE/samples/ucp_tutorial/dnn/basic_samples/code/00_quick_start)

      2025-07-28
      0
    • 默认57984回复Jade-self:

      我的concern点在于能否像提问附加代码那样直接使用output_tensors进行后处理,如果不能该如何使用?因为00quickstart里面的示例是基于hbdnntensor类output而不是vector"hbdnntensor"类的output_tensors。这个后处理代码在J5的easydnn上是没问题的。

      2025-07-29
      0