ImportError: No module named common
你好,我照著範例指示做推論時遇到了錯誤。
我的系統是 Jetson nano提供的Ubuntu 18.04,如圖所示
使用 python 3.8 環境
我的KL520是可以被偵測到的,我照著步驟安裝
(kneronenv) pip install python/packages/kdp_host_api-x.x.x_linux_-py3-none-any.whl (kneronenv) pip install opencv-python (kneronenv) pip install image
開啟host_lib所在路徑後在 /host_lib/python內執⾏說明指令,顯⽰所有可執⾏的操作
(kneronenv) cd /host_lib/python (kneronenv) python main.py -h
輸入後遇到了下面這個錯誤
File "main.py", line 9, in <module> from common import kdp_wrapper ImportError: No module named common
那我跳過這個步驟,要更新加速棒的韌體時也有一樣的錯誤
(kneronenv) cd /host_lib/python (kneronenv) python \main.py -t KL520-update_both_fw
File "main.py", line 9, in <module> from common import kdp_wrapper ImportError: No module named common
請問該如何解決 ? 謝謝 。
The discussion has been closed due to inactivity. To continue with the topic, please feel free to post a new discussion.
Comments
Hello,這個錯誤應該是因為kdp_host_api-x.x.x_linux_-py3-none-any.whl 與你的系統環境不相容所造成
為了要跟耐能加速棒(dongle)溝通,在各種作業系統下都需要編譯底層的驅動後才可正常運作。為了方便大家使用,我們在X64的環境下編譯了Windows與Linux的whl,在這兩種環境下可在安裝whl後直接執行。
由於你的環境是ARMv8,所以與我們所提供X64的whl並不相容,因此可能要請你更換設備或是用我們原始的c project來編譯library。
自行編譯方法如下:
您好,我也有相同的問題該如何解決
Hi Fred,
可以先確認usb dongle是否有權限存取你電腦環境的usb通訊,權限設定方法如下
在Linux環境下,USB的存取是需要管理者權限的,但管理者權限下的環境與一般環境會有差異,也代表即便先前安裝好了python環境,若是在執行時改用sudo python 指令,則會發生找不到相關lib的python error。
為避免usb權限以及python環境安裝的問題,建議可以照下面做法來開放耐能的KL520 usb控制權限
以管理者權限創建 (或開啟)檔案 /etc/udev/rules.d/10-local.rules (也提醒,若不是用管理者權限開啟的話無法存檔),在檔案中加入下面三行
KERNEL=="ttyUSB*",ATTRS{idVendor}=="067b",ATTRS{idProduct}=="2303",MODE="0777",SYMLINK+="kneron_uart"
KERNEL=="ttyUSB*",ATTRS{idVendor}=="1a86",ATTRS{idProduct}=="7523",MODE="0777",SYMLINK+="kneron_pwr"
SUBSYSTEM=="usb",ATTRS{idVendor}=="3231",ATTRS{idProduct}=="0100",MODE="0666"
輸入完畢後將檔案存檔,後續就可以擁有USB權限來執行指令 python main.py -t KL520-update_both_fw或其他相關指令
Hi Ethon,
我在 /etc/udev/rules.d/10-local.rules中已有設定這三行
在執行cam_dme_async_post_host_classification.py時出現錯誤
從截圖看錯誤應該是因為執行的命令所造成的。
所有的範例都需透過python main.py來執行,可以執行python main.py -h來看所有可執行的列表,請依照下面的步驟操作
執行 python main.py -t KL520-cam_dme_async_post_host_yolov5 可執行成功
我置換量化出來的nef之後顯示失敗,請問是哪個部分出錯呢
參考來源:https://www.kneron.com/forum/discussion/53/legacy-v0-12-example-keras-kl520-how-to-convert-and-compile-tiny-yolo-v3-from-github-project#latest
另外附上量化出的nef檔
Hi Fred,
確認一下你的模型是照參考來源連結裡面的路徑去抓的嗎? 因為那邊說明所介紹的模型是tiny yolo v3,而KL520-cam_dme_async_post_host_yolov5這個範例是跑yolov5,兩個模型在應用中所需要的前處理與後處理函式不同,所以不能直接替換
若想要使用tiny yolo v3的話可以改下載 https://github.com/kneron/host_lib,在host_lib/python/examples_kl520/中有範例cam_dme_serial_post_host_yolo.py 可以參考
也提醒,範例在執行時還會需要專案中的其他函式,若單獨將範例複製到其他專案執行可能會遇到其他的錯誤。
Hi Ethon,
我嘗試您說得進行測試,跳出Task category not in KL520 or KL720: cam_d的錯誤
我去查詢後發現已有載入KL520如下附圖
Hi Fred,
錯誤訊息表示你的 main.py中沒有 cam_dme_serial_post_host_yolo 對應的設定,或是格是不符合導致錯誤。
推測你可能是直接將下載的範例複製到你原本的專案中,但所有的host_lib專案都是獨立運行,若直接將A專案的範例複製到B專案中,有可能發生不相融的錯誤,若想使用B專案中的範例,請直接在B專案中執行,不要複製到A專案中。