去年暑假我在公司寫了一支轉換程式, 關於把 YOLOv3, v3Tiny, v4 的 .weight 檔案轉換成 OAK 系列相機能用的 .blob 檔。 主要是公司那邊想用這東西來做物件追蹤,如果成了,就能大幅度的提升效率還有推理速度。 推理速度能提升是因為 OAK 相機是一顆 Edge 裝置, 裡面有類似 GPU 的 VPU,可以理解為裡面插了之前 Intel 推出的神經推理棒晶片, 不用把資料再塞回伺服器推理。 然後就不出意外的出意外了。 主要大概遇到三個階段性問題: 一、無法推理,模型轉換報錯。 二、可以推理,模型推理錯誤。 三、可以推理,Anchor 尺寸錯誤。 一、無法推理,模型轉換報錯: 先講 OAK 這相機的由來,OAK 相機其實是 Openvino 推的硬體,Openvino 背後又是我們偉大的牙膏廠(Intel)。 牙膏廠的文件大家也是知道的。 OAK 相機這東西太新,總之原廠還沒有支援完整的轉換套件,所以依照之前牙膏出的神經推理棒轉換流程去轉會出錯,無法在 OAK 上面執行。 (後來推估原因,應該是轉換凍結模型模型的時候有一些網路層沒轉到。) 我研究後發現,雖然 .weight 檔沒辦法一步轉換成 .blob,但是可以先轉成中繼格式 .pb 再轉成 .blob。 確定這個路線後,程式就分成兩部分: 一、1 將 YOLO 的 .wight 模型還有 .cfg (依賴 COCO資料集)轉成 .pb。 一、2 將 .pb 轉成 .blob。 二、可以推理,模型推理錯誤: 查了一些文件,轉過去後的確是能放在 OAK 相機上面跑,不會報錯, 但是檢測結果很異常。 會有物件框,但是 label 是錯的、Anchor 也不會隨著不同物件變動尺寸。 為了釐清到底是 .pb 出問題,還是 .blob 出問題? 我找了正職的同仁要了一份內部訓練的 .pb 檔案, 也在網路上找了一份確定正常的 .pb 預訓練模型, 將這兩者放入 Openvino 在個人電腦上模擬推理、確認轉換後的模型沒問題。 結果這步驟(一、1)就出錯,推測是轉換時沒有融合到 .cfg 的資訊, 導致 label 與 Anchor 出錯。 後來透過查詢 Github 還有詢問同仁的經驗,才把這部分搞定。 這部分是使用一個將 YOLOv3, v3Tiny...
太呱張啦 一直以為建立副本流無效之後就無解了
回覆刪除沒想到解決辦法這麼簡單粗暴
這邊想補充一下我個人碰到的問題:
就是如果複選的兩個檔案都太大好像會卡住
所以我後來複選的檔案都選無關緊要的小檔案
感謝大大無私分享 新年快樂
現在才看到
刪除新年快樂啦~
太神了,實際有用,感謝大大分享資訊!
回覆刪除magic~感謝大神
回覆刪除感謝
回覆刪除感恩大神
回覆刪除真的有用!感謝大神
回覆刪除太扯了!!!!!用圈選的真的可以下載@@感謝Ben大大QQ
回覆刪除謝謝大大 拯救了我的一天
回覆刪除太強了
回覆刪除大大一生平安