This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-J721S2:模型测试

Guru**** 2330840 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1506506/processor-sdk-j721s2-model-test

器件型号:PROCESSOR-SDK-J721S2

工具/软件:

尊敬的 TI 专家:

   附件是 要测试的模型。

    在 SDK-j721s2-09_01_00_06中进行模型转换后、转换后的 bin 模型文件用于验证、结果完全错误。 modified_model 是修改后的模型文件。

修改后的模型

model.zip

0.png

vis_0.png

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:  

    这是否与之前的 E2E、Jira 或电子邮件申请相关? 如果是、您能否分享一些有关的信息。  

    有关我们需要哪些信息的指南、请参阅此常见问题解答。  https://e2e.ti.com/support/processors-group/processors---internal/f/processors---internal-forum/1500222/faq-tda4vh-faq-tda4x-am62a-information-required-while-reporting-issue-on-tidl-ti-deep-learning-solution-module-of-processor-sdk-on-tda4x-am6xa

    此致、
    Christina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christina:

    让我为客户填写列表:

    卷积 详细信息
    频率 J721S2 (示例)
    SDK 版本 9.1.
    TIDL 固件版本 9.1.
    TIDL 工具版本 9.1.
    问题类别

    精度问题

    AI 模型示例 在客户原始帖子中
    编译方法
    编译日志

    编译工件
    推理方法
    推理日志

    推理伪影

    报告的主要问题是精度损失。

    我已经在 edgeai tidl 工具10.1.2上尝试了这个模型、并得到了 onnx 的结果:

    /cfs-file/__key/communityserver-discussions-components-files/791/modify_5F00_pc_5F00_onnx.npy

    和 PC 上8位量化的结果:

    /cfs-file/__key/communityserver-discussions-components-files/791/modify_5F00_pc_5F00_8bit.npy

    通过比较两个 NPY 文件、直接精度损失很小。  

    Pending on Customer (待处理)通过后处理验证结果。

    此致

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如下图所示、左图是工具测试的结果、右图是 PC 上模型的输出结果。

    我们尝试了许多量化方法、但结果并不正确。 请提供可正确量化模型的导入配置文件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  

    正如我们在本地讨论的、您使用 edgeai tidl 工具10.1.2找到了我的 PC 结果 没错

    以及 PC 上8位量化的结果:

    但使用 RTOS 工具9.1时的结果很差。

    我们将尝试  edgeai tidl 工具9.1、看看它是否正常工作、您也可以试用。 我们明天将更新。  

    此致、

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、王和亚当:

    感谢您提供的所有详细信息和文件。 9.1很可能会出现问题、因为它是较旧版本的 TID URL、其中包含10.1版本修复的许多错误。 在精度方面、我建议尽可能使用10.1、尤其是量化精度。 您是否有任何理由要继续使用9.1而不是10.1?  

    此致、

    Christina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christina:

    我已经与客户讨论过这个主题。 他们拒绝了、您可以咨询 Fredy Zhang (负责 BYD 的 FAE)以了解更多详细信息。  

    此致、

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 我们很早就通知您的工程师、我们这边的工程板是9.1版本、10.1工具不能使用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能详细说明一下问题是什么吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  

    正如我们在本地讨论的、问题的状态是:

    1.此模型在9.1 SDK 上无法正常工作,在10.1上工作

    2.客户将在10.1上的 EVM 上评估此模型

    3.如果对10.1上的 EVM 进行评估工作正常、客户应将 tidl 10.1反向移植到9.1

    此致、

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../onnxrt_5F00_ep_5F00_no_5F00_post.py

    请检查我使用的脚本。 我将输入和后处理修改为在输入文件中读取。  

    下面是我 添加到模型配置的更改:

        "hsh_modify": create_model_config(
            source=AttrDict(
                model_url="dummy",
                infer_shape=True,
            ),
            preprocess=AttrDict(
                resize=256,
                crop=224,
                data_layout="NCHW",
                resize_with_pad=False,
                reverse_channels=False,
            ),
            session=AttrDict(
                session_name="onnxrt",
                model_path=os.path.join(models_base_path, "hsh_model_modified.onnx"),
                input_mean=[123.675, 116.28, 103.53],
                input_scale=[0.017125, 0.017507, 0.017429],
                input_optimization=True,
            ),
            task_type="classification",
            extra_info=AttrDict(num_images=numImages, num_classes=1000),
        ),

    此致、

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Christina:

    当前状态:

    客户正在尝试使用 edgeai tidl 工具10.01.00.02重现我的结果。

    如果他们在 SDK 10.1上成功评估了自己的模型、则将尝试 tidl Backporing。  

    此致、

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您发送编修。 如果需要任何帮助、请随时联系。  

    此致、

    Christina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    如您所说的推理滞留在 SOC 上、您能否在此处上传您的推断日志。 我今天也会尝试重现您的问题。

    此致、

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    还可以上传配置文件以便于重现:

                "hsh_modify": create_model_config(
            source=AttrDict(
                model_url="dummy",
                infer_shape=True,
            ),
            preprocess=AttrDict(
                resize=256,
                crop=224,
                data_layout="NCHW",
                resize_with_pad=False,
                reverse_channels=False,
            ),
            session=AttrDict(
                session_name="onnxrt",
                model_path=os.path.join(models_base_path, "hsh_model_modified.onnx"),
                input_mean=[123.675, 116.28, 103.53],
                input_scale=[0.017125, 0.017507, 0.017429],
                input_optimization=True,
            ),
            task_type="classification",
            extra_info=AttrDict(num_images=numImages, num_classes=1000),
        ),
    

    修改了 onnxrt_ep.py 的脚本:

    def infer_image(sess, image_files, config):
        '''
        Invoke the runtime session
    
        :param sess: Runtime session
        :param image_files: List of input image filename
        :param config: Configuration dictionary
        :return: Input Images
        :return: Output tensors
        :return: Total Processing time
        :return: Subgraphs Processing time
        :return: Height of input tensor
        :return: Width of input tensor
        '''
    
        # Get input details from the session
        input_details = sess.get_inputs()
        input_name = input_details[0].name
        floating_model = input_details[0].type == "tensor(float)"
        height = input_details[0].shape[2]
        width = input_details[0].shape[3]
        channel = input_details[0].shape[1]
        batch = input_details[0].shape[0]
        imgs = []
        shape = [batch, channel, height, width]
        input_shape = input_details[0].shape
        input_data = np.random.random(input_shape).astype(np.float32) * (1 - 0) 
        print(len(input_details))
        if len(input_details)>1:
            print(len(input_details))
            input_name2 = input_details[1].name
            if input_details[1].type == "tensor(float)":
                input_data2 = np.random.random(input_details[1].shape).astype(np.float32) * (1 - 0) 
            else:
                input_data2 = np.random.randint(0, 2000, size=input_details[1].shape).astype(np.int32)
        # Prepare the input data
        # input_data = np.zeros(shape)
        # for i in range(batch):
        #     imgs.append(
        #         Image.open(image_files[i])
        #         .convert("RGB")
        #         .resize((width, height), PIL.Image.LANCZOS)
        #     )
        #     temp_input_data = np.expand_dims(imgs[i], axis=0)
        #     temp_input_data = np.transpose(temp_input_data, (0, 3, 1, 2))
        #     input_data[i] = temp_input_data[0]
        # if floating_model:
        #     input_data = np.float32(input_data)
        #     for mean, scale, ch in zip(
        #         config["session"]["input_mean"],
        #         config["session"]["input_scale"],
        #         range(input_data.shape[1]),
        #     ):
        #         input_data[:, ch, :, :] = (input_data[:, ch, :, :] - mean) * scale
        # else:
        #     input_data = np.uint8(input_data)
        #     config["session"]["input_mean"] = [0, 0, 0]
        #     config["session"]["input_scale"] = [1, 1, 1]
    
        data = np.fromfile("0.bin", dtype=np.uint16).astype(np.float32)
        raw_vis = data.reshape(1056, 1920) / 4096
        print(raw_vis)
        input_data[0,0,:,:] = raw_vis
        # Invoke the session
        start_time = time.time()
        
        if len(input_details)>1:
            print(len(input_details))
            output = list(sess.run(None, {input_name: input_data, input_name2: input_data2}))
        else:
            output = list(sess.run(None, {input_name: input_data}))
        stop_time = time.time()
        infer_time = stop_time - start_time
    
        copy_time, sub_graphs_proc_time, totaltime = get_benchmark_output(sess)
        proc_time = totaltime - copy_time
    
        return imgs, output, proc_time, sub_graphs_proc_time, height, width

    请使用 /cfs-file/__key/communityserver-discussions-components-files/791/modified_5F00_model.zip 

    输入文件0.bin 位于 /cfs-file/__key/communityserver-discussions-components-files/791/1425.model.zip 中 

    此致、

    Adam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SDK 版本为10.1、edgeai tidl 工具版本为10.01.00.02。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    我已经将其添加到 Jira TIDL 7532中。 我也会在我的最后再做,并让你们不断更新。

    此致、

    Christina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Adam 和 Wang:

    您能否提供有关如何创建此模型的一些背景信息? 我们正在调查图层信息,这一信息将有助于我们找出输出的图层名称与模型的真实图层名称不对应的原因。

    此外、如果您有模型正确输出的副本、这对我们在验证时也很有帮助。  

    此致、
    Christina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 onnxruntime 推理引擎中使用 onnx 模型可以正确地获得结果、您在该级别提到的结果名称没有问题。 另外、您所说的"模型"是什么类型的模型? 它是 Pytorch 还是 tensorflow 框架中的模型定义脚本?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:  

    是的、我问的是 hsh_model_modified.onnx、我认为它基于 hsh_model.onnx、以及如何用于创建/训练的任何信息(假设是 Pytorch)。 您是否也在8位的 Onnxruntime 上进行了测试?  

    感谢您确认 onnxruntime 推理产生了正确的输出。 我想知道 TIDL PC 仿真(在器件上运行之前)是否也为您提供了正确的输出? 根据我的测试、PC 还会由于层信息而显示一些不匹配。

    此致、

    Christina

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    模型 hsh_model_modified.onnx 是我给 Adam 的模型文件。 他还在 onnxruntime 中测试了8位结果、并使用 tidl_PC 进行测试、结果都很好。 至于您提到修改 hsh_model.onnx 的原因、这是因为不修改它会在 collect 运算符中报告错误。 还与 Adam 讨论了这一修改。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Wang:

    您是否可以使用上周发布的新 TIDL 试用 SDK 11.0? 如果 sdk11.0正常工作、我们可以进行 tidl 后向移植。

    此致、

    Adam