模拟推理正常,但是实际推理全部预测一样的值

  • 您好,正常会出现输出结果相同一般都是在输入上出现问题,对模型结构没有修改那么模型中有什么归一化参数不对导致数值输出异常的可能性很低。
    RV1106 的 rknn api 使用的是零拷贝模式,RKNN中将输入数据传入到模型中是在inference_mobilenet_model中的convert_image中实现的,例程应该是使用DMA+RGA的方式来加速图像处理的过程,对于色彩格式有要求,我觉得问题有可能出现在这里,您可以尝试将800*400 大小的bmp图片(需要去文件头)直接拷贝到模型输入的虚拟地址(app_ctx.input_mems[0]->virt_addr上),跳过convert_image的步骤,查看是否能解决输出相同的问题。
  • Crocodile wrote: 2024-04-29 12:10 您好,正常会出现输出结果相同一般都是在输入上出现问题,对模型结构没有修改那么模型中有什么归一化参数不对导致数值输出异常的可能性很低。
    RV1106 的 rknn api 使用的是零拷贝模式,RKNN中将输入数据传入到模型中是在inference_mobilenet_model中的convert_image中实现的,例程应该是使用DMA+RGA的方式来加速图像处理的过程,对于色彩格式有要求,我觉得问题有可能出现在这里,您可以尝试将800*400 大小的bmp图片(需要去文件头)直接拷贝到模型输入的虚拟地址(app_ctx.input_mems[0]->virt_addr上),跳过convert_image的步骤,查看是否能解决输出相同的问题。
    非常感谢您的答复!我同时尝试了convert_image和convert_image_cpu,运行日志也显示成功装载了图片的数据(见前贴的日志),
    src width=800 height=400 fmt=0x1 virAddr=0x0xa5f4e000 fd=9
    dst width=800 height=400 fmt=0x1 virAddr=0x(nil) fd=3
    color=0x0
    rga_api version 1.10.0_[2]
    使用的inference_mobilenet_model是一样的,当运行
    ./inference_mobilenet_model model_mobilenet.rknn bell.jpg是正确的结果;
    当运行
    ./inference_mobilenet_model model_my.rknn bell.jpg
    或者
    ./inference_mobilenet_model model_my.rknn all_black.jpg
    是一样的输出。
    这看起来是rknn模型的问题?但是rknn模型的模拟推理是正确的。
    Last edited by ezreal on 2024-04-30 17:26, edited 1 time in total.
  • ezreal wrote: 2024-04-30 17:23
    Crocodile wrote: 2024-04-29 12:10 您好,正常会出现输出结果相同一般都是在输入上出现问题,对模型结构没有修改那么模型中有什么归一化参数不对导致数值输出异常的可能性很低。
    RV1106 的 rknn api 使用的是零拷贝模式,RKNN中将输入数据传入到模型中是在inference_mobilenet_model中的convert_image中实现的,例程应该是使用DMA+RGA的方式来加速图像处理的过程,对于色彩格式有要求,我觉得问题有可能出现在这里,您可以尝试将800*400 大小的bmp图片(需要去文件头)直接拷贝到模型输入的虚拟地址(app_ctx.input_mems[0]->virt_addr上),跳过convert_image的步骤,查看是否能解决输出相同的问题。
    非常感谢您的答复!我同时尝试了convert_image和convert_image_cpu,运行日志也显示成功装载了图片的数据(见前贴的日志),
    src width=800 height=400 fmt=0x1 virAddr=0x0xa5f4e000 fd=9
    dst width=800 height=400 fmt=0x1 virAddr=0x(nil) fd=3
    color=0x0
    rga_api version 1.10.0_[2]
    使用的inference_mobilenet_model是一样的,当运行
    ./inference_mobilenet_model model_mobilenet.rknn bell.jpg是正确的结果;
    当运行
    ./inference_mobilenet_model model_my.rknn bell.jpg
    或者
    ./inference_mobilenet_model model_my.rknn all_black.jpg
    是一样的输出。
    这看起来是rknn模型的问题?但是rknn模型的模拟推理是正确的。
    您好,如果您确定排除输入的问题的话,目前我也无法根据您的模型信息作出更多判断,可以考虑我之前提到的可能性较低的情况,您获取到的模型可能有部分层数的weight过小,主要训练bias上,在进行模型装换时精度损失导致无法作用到推理上。您可能需要尝试降低学习率,替换激活函数或者添加归一化处理来解决。