如何轉換ONNX模型給KL520使用

我使用kneron提供的docker環境,內有的ONNX Converter是把模型轉換為 ONNX的模型,

請問如何將自己的ONNX模型轉為 KL520使用的 .bin格式?

我目前對KL520這個產品的理解是須把模型轉換為KL520使用的 .bin格式後導入KL520來使用,請問這個理解是否正確?

Comments

  • 是的,需先將模型轉成KL520專用的*.nef (舊版的範例中為*.bin) 後才可在KL520上運行,轉換的方式可以參照文件中心http://doc.kneron.com/docs/#toolchain/manual_520/ 的說明

    成功將模型轉換成.onnx後,請繼續參照 3.2 FpAnalyser, Compiler and IpEvaluator 的指示依序往後執行,完成3.5 FpAnalyser and Batch-Compile 後即可在資料夾"batch_compile"中找到轉換完成的模型.nef


  • 謝謝指引。

    我按照說明文件先嘗試案例,逐步執行,

    執行 >>python /workspace/scripts/fpAnalyserCompilerIpevaluator_520.py -t 8

    回應資訊如下:

    input = /workspace/.tmp/updater.json

    Now loops 1 time=======================================================]100% 0.001000s

    Done!

    Traceback (most recent call last):

     File "/workspace/scripts/fpAnalyserCompilerIpevaluator_520.py", line 46, in <module>

      run_compiler_520(bie_file)

     File "/workspace/scripts/utils/run_compiler_520.py", line 29, in run_compiler_520

      'compile.log'], check=True)

     File "/workspace/miniconda/lib/python3.7/subprocess.py", line 488, in run

      with Popen(*popenargs, **kwargs) as process:

     File "/workspace/miniconda/lib/python3.7/subprocess.py", line 800, in __init__

      restore_signals, start_new_session)

     File "/workspace/miniconda/lib/python3.7/subprocess.py", line 1551, in _execute_child

      raise child_exception_type(errno_num, err_msg, err_filename)

    OSError: [Errno 74] Bad message: '/workspace/libs/compiler/compile_mozart'


    看來是產生錯誤了,fpAnalyser是有產生文件,但compiler資料夾卻是空的,

    之後的指令也是有

    OSError: [Errno 74] Bad message: '/workspace/libs/compiler/compile_mozart'

    這個錯誤,

    請不吝解惑如何排除錯誤,謝謝。

  • Hi ,

    請問你json file這文件裡面你有填好嗎?

  • Hi,

    我參照說明文件多次嘗試調整input_params.json,

    過程中會引發 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes 這個錯誤訊息,

    最後到可運行 python /workspace/scripts/fpAnalyserCompilerIpevaluator_520.py -t 8 的狀態後還是回覆完全如前的

    OSError: [Errno 74] Bad message: '/workspace/libs/compiler/compile_mozart'

    附檔是我的 input_params.json

    請不吝解惑,TKS。


  • HI,

    這裡按照我們Kneron Documentations,是可以正常運行,並且,fpAnalyser是有產生文件,compile_mozart也有資料

    想請問你是否有先按照我們範例跑過? 還有模型部分不確定你的模型是否有符合我們的規格,或是說在Converter時是否有什麼步驟沒有做到?

    可以請你跟我們說你從Converter開始每一步驟是如何操作?若還是不ok,再請你提供模型給我們.

    thanks

  • hi,

    謝謝回覆。

    我現在執行的就是貴司提供的範例,所以才抓不準為何會出錯,照理來說,我也是認為直接執行原廠提供的範例應該是不至於出現錯誤的;若有任何可以查錯的線索也請不吝告知。

    另,

    求證一下,若我在另一部沒接上kl520的pc上使用vm,再由vm上的linux執行toolchain docker來轉換model,這樣的環境可行嗎。

  • Hi,

    此環境可以的.跑toolchain可以不用接520

    thanks

  • Hi , 謝謝協助。

    實在沒招了,

    我就是按照這個文件的說明(http://doc.kneron.com/docs/#toolchain/manual_520/#3-toolchain-scripts-usage),從3.2的步驟完全依樣操作toolchain docker上的LittleNet範例,不論有沒有調整input_params.json文件,都會發生上述的錯誤。

    請參閱附件 KL520-error.txt 為我執行的順序與系統回饋訊息紀錄。


    請參閱連結 https://drive.google.com/drive/folders/10npVIy2w7tqbcqyOJJSKkTERSwqbVxR9?usp=sharing

    為我自己的ONNX MODEL (檔案有點大,我用GOOGLE DRIVE分享出來),請不吝解惑,並指導一下我應該如何按照我自己的MODEL調整 input_params.json。

    感激不盡。


  • Hi Alfred,

    看過你的模型後,有幾個KL520不支援的地方需要請你修改模型,請參考下面步驟


    1. 模型使用的opset版本為v8(如上圖右側紅圈處所示),但KL520目前僅支援v9,還請在轉成onnx時選擇v9
    2. KL520並不直接支援Transpose,還請移除模型前端的Transpose(如上圖左側紅圈處),改從接著的Conv作為模型的input,Transpose以前的幾個layer可作為前處理,將輸入進來的圖片做好對應的運算後再送入模型從Conv開始計算
    3. 模型後段有Elu,但KL520不支援Elu運算,還請改用Relu取代並重新訓練模型
    4. 做完上述步驟的模型還請參照文件的說明執行3.1.6 ONNX to ONNX (ONNX optimization)後再執行fpAnalyserCompilerIpevaluator_520.py
The discussion has been closed due to inactivity. To continue with the topic, please feel free to post a new discussion.