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.

[参考译文] TDA4VM:TDA4VM 的推理性能异常

Guru**** 2465890 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1459786/tda4vm-inference-performance-anomalies-with-tda4vm

器件型号:TDA4VM

工具/软件:Jupyter Notebook

您好!

我目前使用 Processor SDK Linux 10.00.00.08、Processor SDK RTOS 10.00.00.05和 EdgeAI TIDL 10_00_08_00。

EVM 上的自定义模型的推理结果比之前使用旧版 SDK 版本08.01.00.02进行的研究(同一笔记本、同一模型)中获得的结果要差。 我注意到、虽然我使用的模型文件与之前完全相同、但精度也较低、性能也没有那么好。

使用选项`tensor_bits=8`和`calibration_itations=16`编译模型时,我发现如果使用 edgeai_tidl_tool 示例给出的相同预处理函数,推理结果是错误的:

def preprocess(image_path, size, mean, scale, layout, reverse_channels):
    # Step 1
    img = cv2.imread(image_path)
    
    # Step 2
    img = img[:,:,::-1]
    
    # Step 3
    img = cv2.resize(img, (size[1], size[0]), interpolation=cv2.INTER_CUBIC)
     
    # Step 4
    img = img.astype('float32')
    for mean, scale, ch in zip(mean, scale, range(img.shape[2])):
            img[:,:,ch] = ((img.astype('float32')[:,:,ch] - mean) * scale)
    # Step 5
    if reverse_channels:
        img = img[:,:,::-1]
        
    # Step 6
    if layout == 'NCHW':
        img = np.expand_dims(np.transpose(img, (2,0,1)),axis=0)
    else:
        img = np.expand_dims(img,axis=0)
    
    return img

但是、当我使用其他选项进行编译时、推理会生成正确的结果(请参阅 笔记本)。

 `、我使用编译选项` tensor_bits=8 `和` calibration_iterations=16 μ s 尝试了另一个预处理函数进行推理。 现在, 我可以用正确的结果实现推理,但获得的准确度较低:80% 而不是90%。

请您深入了解造成这种差异的潜在原因吗? 此外、我希望就我可能实施的改进提出任何建议、以提高我的成果。  

与使用的笔记本一起使用的模型(来自 edgeai_tidl_tool 的 jupyter 笔记本示例):  

e2e.ti.com/.../6661.ssd_5F00_mobilenet_5F00_v2_5F00_300.zip

感谢您的帮助。

此致、

Azer

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

    您好、Azer;感谢您提供笔记本文件、这将大大帮助我们。 我将加载您的笔记本电脑并尝试运行。  

    现在,你的意思是什么"....compile 与其他选项.. "。 我们想知道您所做的确切区别。 是否将 SDK 08.01与10.00进行了比较?

    也许、您已在笔记本文件中指明;如果没有、请同时提供此信息。  

    此致

    文立

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

    您好!  

    1 ) 为了提供更多关于产生有效结果的其他编译选项的详细信息,这里有两个示例:

    compile_options = {
        'tidl_tools_path' : os.environ['TIDL_TOOLS_PATH'],
        'artifacts_folder' : output_dir,
        'tensor_bits' : 8,
        'accuracy_level' : 1,
        'advanced_options:calibration_frames' : len(calib_images),
        'advanced_options:calibration_iterations' : 20,
    }
    
    compile_options = {
        'tidl_tools_path' : os.environ['TIDL_TOOLS_PATH'],
        'artifacts_folder' : output_dir,
        'tensor_bits' : 8,
        'accuracy_level' : 9,
        'advanced_options:calibration_frames' : len(calib_images),
        'advanced_options:calibration_iterations' : 16,
        'advanced_options:activation_clipping' : 1,
    }
    

    2)在第二阶段,我比较了使用 SDK 08.01和10.00获得的结果。 SDK 08.01的  `与我在 ARM 上的结果类似、因此我假设可以使用` tensor_bits=8 `和` calibration_iterations=16 选项实现更高的精度。

    感谢您的帮助。

    此致、

    Azer

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

    您好!

    我仍然遇到同样的问题。 我比较了 SDK 08.01和10.00的结果。

    与 SDK 08.01相比、SDK 10.00在 ARM 上具有更好的性能。 但是、在 C7x+MMA 上、SDK 10.00时的性能低于08.01。 我使用了不同模型(预训练模型和自定义模型、使用不同的用户选项进行编译)。

    您能否分享一下造成此差异的可能原因? 此外、如果我能提出任何改进建议、我将不胜感激。

    谢谢。此致、

    Azer

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

    您好!

    关于如何提高我的模型在 C7x+MMA 上的性能,您有什么建议吗? 我已经看了这个链接 edgeai-tidl-tools/examples/osrt_python 在 master TexasInstruments/edgeai-tidl-tools··GitHub 上 ,所以你有什么建议吗?

    非常感谢

    Azer

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

    您好!

    在10.1中进行了一些性能改进、以解决10.0中出现的性能问题。  请使用10.1尝试此操作。

    此致、

    Chris