yolov5模型轉成onnx檔案後inference結果有誤

你好,我在訓練模型時使用的是ai training裡提供的yolov5模型

資料是使用自己的資料集

而訓練完的模型在pt檔透過detect.py 進行inferenece時結果都很正確

但是在透過tutorial教學轉為onnx檔後透過inference.py進行inference則會呈現像下圖的結果

雖然中心點是對的,但會重複預測且bbox位子差很多,因此轉換為nef檔後在板子上自然也是錯誤的

想請問可能是哪裡出了差錯?

以下附上pt檔及相關yaml檔的下載連結,如有需要其他檔案再請告知,謝謝!!


Tagged:

Comments

  • Hi,

    如果轉為onnx檔之後進行inference會有錯誤,有可能是因為轉換成onnx的時候操作有誤。可以請您提供用pt檔跑detect.py的結果嗎?

    還有一個可能: 如果您的detect.py裡面有做postprocess,但inference.py裡面沒有做postprocess,也會導致前後結果不一致。

  • 您好,感謝您的回覆!

    跑完detect.py是如下圖的結果


    在detect.py 與轉onnx檔的過程中並無改變任何程式內容皆根據tutorial執行,且我以example 的COCO-128做訓練是可以在onnx inference出正確的結果的,唯一的差別只有在資料集不同而已


    另外我也有使用https://github.com/kneron/kneron-mmdetection/blob/main/docs_kneron/yolox_step_by_step.md

    這邊提供的yolox做訓練過,且在pt與onnx檔都有不錯的結果,但到了NEF後在開發版上結果差非常多,量化資料大約給400張

    想請問這兩種不同的模型轉為nef檔後是可以在一個執行檔上執行的嗎?還是需要重新撰寫另一隻程式?

    (目前使用的是KL630,且已有能跑YOLOV5的程式,不確定YOLOX是否能在上面執行)

    (PS: mmdetection需要安裝mmcv-full,但到了1.7.0之後似乎只剩下mmcv的版本,因此對於pytorch 需求等級高一點的電腦似乎無法使用?)


    抱歉我這邊問題有點多,但由於找不到相關資訊,只能麻煩您做回覆了,謝謝!!

  • edited July 2023

    Hi,

    不好意思這麼晚回覆!

    如果onnx檔的結果不錯,但nef檔的結果不理想,可以試著用E2E Simulator來測試和比較結果:

    End to End Simulator - Document Center (kneron.com)

    兩種不同的模型compile為一個nef檔,可以在一個執行檔上執行喔! 您可以參考一下C的kl630_demo_generic_image_inference.c (要設定_model_desc.models[0].id),或是python的KL630DemoGenericImageInference (要設定model_nef_descriptor.models[0].id)

    例如: 在python可以設定要用model_nef_descriptor.models[0].id,或是model_nef_descriptor.models[1].id (nef檔裡的第一個模型跟第二個模型)

    YOLOX也可以在KL630上面執行!

    還有,從2023年4月,mmcv-full的名字改成mmcv了,所以要安裝的是mmcv:


The discussion has been closed due to inactivity. To continue with the topic, please feel free to post a new discussion.