YoloV3 Tiny Model migrate Error

我希望可以將自己train的yoloV3 tiny model從weights轉換為nef檔案

所以我依照 http://doc.kneron.com/docs/#toolchain/yolo_example/ 中Yolo Example的步驟進行轉換。

在操作到:

# load and normalize all image data from folder

img_list = []

for (dir_path, _, file_names) in os.walk("/data1/test_image10"):

for f_n in file_names:

fullpath = os.path.join(dir_path, f_n)

print("processing image: " + fullpath)


image = Image.open(fullpath)

img_data = preprocess(image)

img_list.append(img_data)

# fix point analysis

bie_model_path = km.analysis({"input_1_o0": img_list})

print("\nFix point analysis done. Save bie model to '" + str(bie_model_path) + "'")


log中出現

Command '['/workspace/libs/dynasty/run_fix_inference', '--model', '/workspace/.tmp/models/input/input/output/input.piano.kdp520.scaled.quan.wqbi.bie', '--radix', '/workspace/.tmp/models/input/input/output/input.piano.kdp520.scaled.quan.wqbi.bie.json', '--platform', 'kl520', '--dump', '0', '--shapeOrder', '0', '--output', '/workspace/.tmp/models/input/input/output/results/in_0008.txt/mode_520-wqbi_piano', '--data', '/workspace/.tmp/models/input/input/input/simulator_input/in_0008.txt', '--name', 'input_1_o0', '-e']' died with <Signals.SIGKILL: 9>.

 Failure for model "input/input" when running "dynasty piano 520-wqbi" with input "in_0008.txt"

Command '['/workspace/libs/dynasty/run_fix_inference', '--model', '/workspace/.tmp/models/input/input/output/input.piano.kdp520.scaled.quan.wqbi.bie', '--radix', '/workspace/.tmp/models/input/input/output/input.piano.kdp520.scaled.quan.wqbi.bie.json', '--platform', 'kl520', '--dump', '0', '--shapeOrder', '0', '--output', '/workspace/.tmp/models/input/input/output/results/in_0006.txt/mode_520-wqbi_piano', '--data', '/workspace/.tmp/models/input/input/input/simulator_input/in_0006.txt', '--name', 'input_1_o0', '-e']' died with <Signals.SIGKILL: 9>.

 Failure for model "input/input" when running "dynasty piano 520-wqbi" with input "in_0006.txt"

 Failure for model "input/input" when running "dynasty piano 520-wqbi" with input "in_0008.txt"

 Failure for model "input/input" when running "dynasty piano 520-wqbi" with input "in_0006.txt"

===========================================

=      report on flow status    =

===========================================


        dynasty piano 520-wqbi

category case             

input  input            1


Traceback (most recent call last):

 File "OnnexToNEF.py", line 80, in <module>

  bie_model_path = km.analysis({"input_1_o0": img_list})

 File "/workspace/miniconda/lib/python3.7/site-packages/ktc/toolchain.py", line 103, in analysis

  p_output="/data1/kneron_flow"

 File "/workspace/miniconda/lib/python3.7/site-packages/sys_flow/run.py", line 575, in gen_fx_model

  model_fx_report, p_model = run_btm_and_release()

 File "/workspace/miniconda/lib/python3.7/site-packages/sys_flow/run.py", line 545, in run_btm_and_release

  fn_from = pathlib.Path(model_fx_report[k1])

KeyError: 'bie_520'


以上問題在測試過,如果減少calibration用的圖數量(/data1/test_image10)可以成功轉換

Comments

  • @Tim

    Hi Tim,

    您的問題,看起來是在 Step 5: Quantization 做 km.analysis 出錯,不知道您是否可以提供您的 model 跟您跑的完整 Scripts,還有您做 calibration 時會出錯的那些圖片,方便讓我們找出問題並改善 ToolChain。

  • Hello,

    如果減少calibration用的圖數量就可以成功轉換的話,也有可能是docker的記憶體不足所導致,可以試著調大virtualbox中的ram size來試試是否會改善

  • @Andy Hsieh

    Hi Andy,

    感謝您這麼快速的回覆,yolov3的weights,cfg與python scripts放在連結中:

    圖片部份,我是先使用範例中的十張測試圖片

  • TimTim
    edited March 2022

    Hi @Ethon Lin

    所以這邊可能是ram太小嘛? 我是以ubuntu18.04啟動docker的, 如果這樣會遇到ram size問題的話, 問題好像有點難排除了

  • @Tim

    Hi Tim,

    我這邊已經幫您測試過了您提供的 Script 了,是沒有問題的。

    通常這邊會建議您在做 calibration ( Step 5: Quantization km.analysis) 的時候,圖片大約 100 張。

    幫您測試過了,我找了約 20M 的 100 張圖,是可以在 docker occupied memory (RAM),memory limit 約 12.39GiB 下成功執行。

  • Hi @Andy Hsieh

    感謝您的測試, 可是我這邊換上自己的100張圖, 還是會有同樣的error出現, 所以差異看起來出在docker的memory limit嘛?

    看起來很奇怪, 因為我是直接以系統ubuntu18.04開啟docker的,所以我先再測試看看

  • Hi @Andy Hsieh

    重新測試過這邊的memory使用率, 看起來是memory爆了,但是我系統給的memory是16G,計算到km.analysis時候,就算是10張測試圖片的情況下也會出現memory爆掉的情況

    這樣的情況下,看起來就沒法使用那麼多張圖片同時做calibration了? 還是我miss了什麼設定嘛?

  • @Tim

    Hi Tim,

    我看過您提供的 Script 了,您沒有 miss 什麼設定。

    這邊您可以使用兩種方法:

    (1) 調大virtualbox中的ram size。

    (2) 嘗試使用不同版本的 ToolChain。(建議使用最新版本的 ToolChain。)


    不知道您現在使用 ToolChain 的版本是否是 v0.17.0?您可以進入 docker ToolChain 後使用 cat version.txt 查看。

    您可以試著使用不同版本的 ToolChain 重新試看看。

    Ex.

    docker pull kneron/toolchain:v0.16.0

    docker run --rm -it -v /your/folder/path/for/docker_mount:/data1 kneron/toolchain:v0.16.0

  • Hi @Andy Hsieh

    感謝您的幫忙,將ToolChain版本從v0.17.0降到v0.16.0之後可以完成範例10張圖片的校準

    後續我會再調整圖片數量已達到教好的效果

    非常感謝

  • 很高興能幫助到您。🙂

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