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-AM62A: How to fix the problem of the official PReLU implementation?

Part Number: PROCESSOR-SDK-AM62A

Hi there,

I'm using AM62A to import and infer the Mediapipe face landmarks model. However, I encountered the same problem as TDA4VM: mediapipe face_landmark CNN exit with error message during TIDL import - Processors forum - Processors - TI E2E support forums. Could you tell me have you fixed the bug of official PReLU implementation? If so, could you give me the final solution?

Best regards,

Yunfeng

  • Hello Yunfeng Kang,

    I reviewed the issue and it appears to be under development. I will check on the detailed status of this bug and share what I learn. I understand that it is a crucial layer for the face-landmarks model and cannot be included in the deny_list without large performance impact. I appreciate your patience on this issue.

    Best,
    Reese

  • Hello Reese,

    Any news here? How is this process going on? https://jira.itg.ti.com/browse/TIDL-2990. Actually, PReLU operator is crucial for us, and we would be grateful if this bug could be fixed as soon as possible. 

    Best,

    Yunfeng

  • Hi Yunfeng,

    The issue is currently still unresolved. I will contact the team directly and increase priority. The next SDK release is currently in a late stage (code freeze; no new features being added) so I am doubtful it will be in the 9.2 SDK release.

    Can you please inform of a need-by date? If you have a local TI contact, please share details of the urgency with them. I understand the criticality of this PRELU node for the face-landmark model.

    BR,
    -Reese

  • We will try to contact the local TI support. Btw, can I directly correct the PReLU implementation of source code in SDK? It would be great if you could give me some instructions for this. 

  • Hello,

    We do not directly support modification of hand-optimized operators in most cases. I can point you to where the PRELU code may exist in your copy of the c7x-mma-tidl repo (provided in firmware builder but not hosted publicly), but the version in FW-builder may not contain the dsp implementation. I believe it is instead precompiled and provided as a library.

    PRELU is represented in TIDL as a BatchNorm node, so you should look in files that pertain to that layer's implementation. The top-level implementation would be under ti_dl/algo/tidl_batchNorm.c, and the optimized implementation for the accelerator will be within a tidsp folder (which may not be part of fw-builder deliverable) and its subdirectories.

    However, I believe the bug exists at the import stage. I understand the issue is with reading the slope parameters for different channels - the current SW reads one value that gets applied to all channels. See the import code under ti_dl/utils/tidlModelImport -- specifically the import files for the runtime you are using (assuming TFLITE for mediapipe / google models). This code will be present in the fw-builder version.

    Apologies that I cannot give more direct assistance in the short time frame.

    Best,
    Reese