摘要:學習別人的開源專案是日常的一項必備技能,本文通過一個車輛跟蹤(YOLOv5+DeepSort)的例子介紹如何配置和除錯GitHub上的開源代碼,以第一人稱的視角給出本人除錯代碼的程序,包括專案readme的閱讀、python環境配置、代碼除錯運行等,詳細的程序已錄制在視頻中,完整的代碼和組態檔可三連博主B站視頻后獲取,
關注視頻獲取代碼資料:https://www.bilibili.com/video/BV1W34y1Y71w/(歡迎關注博主B站視頻)
前言
相傳,當你找到一處好代碼,雄心勃勃打算“學習”一下時,總會出現一些“靈異事件”,武力值低的人往往“出師未捷身先死”,別人的代碼蕩下來到自己機器上,怎么就是各種Error鋪天蓋地?不是環境報錯、缺少檔案,就是語法錯誤...于是乎在想這幫人總是分享一堆Bug作甚呢?還是我自己沒Get到大佬的點?
直接點,開始我們的故事吧,從前,有個夜黑風高的夜晚,收到上峰指示,先前的“目標跟蹤”行動需立即執行:YOLOv4+Sort不好再用了,升級為YOLOv5+DeepSort,我想:“不會寫啊,Python都沒學過,額忘記我有沒有學過了,曉得了先網上找一下吧”,咦,GitHub上有,和要求上差不多,妥了妥了,蕩一下改改跑跑好不啦,小似情唷,喏這是原作者的效果,這個專案的地址:https://github.com/duongcongnha/Vehicle-tracking,下面說一下我除錯該專案的經過,
1. 打量作業
看到這樣一個專案,檢測和跟蹤效果都不錯,所以動手要把它在我的機器上運行起來,這里是GitHub的專案主頁,我先下載一下代碼到我的G盤,與此同時打量一下這個代碼,
下載好了,打開pycharm運行一下?別急,先看一眼訓練好的模型有木有,老夫推斷在models檔案夾下,定睛一看存在yolov5的pt模型檔案,Nice啊,目測可以先白嫖模型,預感這個程式靠譜,
再看Readme里面如何使用,這里有Python環境版本,以及要安裝的依賴串列(requirement.txt),想來按照這個要求來,應該能跑通的吧,那現在能打開pycharm運行一下程式?那主程式是哪個不看看你就運行?待我先目測一下主程式在哪里,還有要怎么運行有沒有介紹,
這里記載了運行方式,用的命令列運行,這里有個cd命令,看來是在這個程式檔案夾的application\main這個檔案夾下,有個app_track.py,運行它應該就能跑起來了,
這個專案代碼寫得比較規范,所以能很方便找到這三個點,其他的專案就不能保證這么幸運了,那樣就得自己琢磨,當你閱碼無數自然就能積累經驗了,
2. 運行除錯
雖然看起來介紹齊全,但是我掐指一算可能會有坑,但是具體是什么坑我不知道,先啟動pycharm,打開下載程式的檔案夾,找到app_track.py這個主程式,然后運行程式?——先配置環境,有人問我:“原來有Python環境,配置好了很多三方依賴,直接用唄可以嗎?”,那我不建議,這倆環境很可能不兼容,還是要改部分依賴包的版本,最終可能這個程式運行不通,你自己原來的程式也‘靈異’報錯,”
既然如此,我用Anaconda創建一個新環境,然后在新環境里收requirements.txt列出的這些“牛鬼蛇神”,目測靠譜一點,打開PyCharm的終端,輸入一下命令:
conda create -n yolo5_track python==3.7
我這里pycharm內置的終端是cmd,有些新版的pycharm變成了powershell,那后面部分命令可能不一樣,各自實際情況不一樣,大家具體問題具體分析,千萬別只是照葫蘆畫瓢,那在終端里面輸入,如下:
然后激活環境,常規操作是吧,那就不要出錯,輸入以下代碼,這里如果是powershell執行下去效果可不一樣,如果有需要就自己解決一下哈,
conda activate yolo5_track
接下來要給這個環境裝上依賴,它這個專案里是不是有requirements.txt,我們打開看一下,還挺齊全的,有依賴名字還有部分版本號要求,那就來唄,
上面有提示我們輸入pip的安裝命令,那就在剛剛的終端下輸入以下命令,讀取txt檔案,然后執行各個依賴的安裝,
pip install -r requirements.txt
當然要先切換到requirement.txt所在的檔案夾目錄,然后輸入命令回車執行,ChuaChua一堆安裝資訊提示,然后耐心等待完成,
安裝成功之后,在pycharm中選擇一下環境,基本就是File->Setting->Project->Python Interpreter,進入Python環境選擇conda環境,確定剛剛創建好的環境即可,
環境也選好了,是不是該點運行了啊?這時候是時候展現真正的技術了,打開app_track.py,在編輯器中右擊選擇“Run”,開始運行,然后手動祈禱,
然后就是這樣滴,what?不就是按照作者給出的嗎,報錯了是什么情況,看我干啥,想想什么原因啊,我們看一下最后三行,torch的module.py檔案報錯,顯示沒有某個屬性,經驗來看哈,這肯定是torch的版本不對,因為代碼寫錯能出沒有屬性的可能性不大,除非是自己定義的,缺少了模塊檔案,這里顯然是torch的呼叫問題,應該是版本問題,
我們是按作者給出的requirements.txt安裝的,那么問題出現在哪里呢?我們再看一眼這個檔案的內容,有些地方是固定版本,有的是給出了最低要求,比如要求這個torch>=1.8.0,大于等于?那我現在的torch版本呢,在終端輸入pip list,可以看到torch版本1.11.0,沒毛病確實大于1.8.0,
這個版本比1.8新多了,那你說有沒有可能,到了某個版本來了個調整,把某些個屬性給刪掉或換成別的屬性了呢?我想是很有可能的,在發布代碼的時候作者想不到后面這些依賴會變成什么樣的,所以只能告訴我們大于某個版本,所以這里裝的時候就變成最新版,那如果我們把所有版本指定為特定的,是不是就能避免了,至于這里面這么多依賴,是不是所有版本都要調整呢,看經驗或除錯結果了,調整和測驗后的依賴版本被我修改如下,然后保存在setup.txt中:
重新輸入pip安裝命令,在終端鍵入以下命令,重新安裝:
pip install -r setup.txt
這時顯然好起來了,運行結果如下,這其實是在處理中,等到進度完成,得到處理后的結果,完整版的資源代碼和setup.txt組態檔,可關注并三連博主B站視頻后評論獲取,可輕松無Bug運行,
這時找到inference/output檔案夾下的mp4結果,可以得到如下的畫面,這是在原視頻中檢測后輸出的檔案,
注意到原始碼里面讀取了yml的設定檔案,下意識打開可以發現設定識別視頻的路徑在第24行,我們可以修改為自己的視頻所在目錄,重新進行檢測測驗一下,
修改用自己的視頻檔案,測驗結果如下,感覺可以滿足一般的車輛檢測跟蹤和計數要求,感興趣的朋友可以關注并三連博主B站視頻后,評論獲取完整代碼和setup.txt依賴檔案,
結束語
由于博主能力有限,博文中提及的方法即使經過試驗,也難免會有疏漏之處,希望您能熱心指出其中的錯誤,以便下次修改時能以一個更完美更嚴謹的樣子,呈現在大家面前,同時如果有更好的實作方法也請您不吝賜教,
用心整理知識,只出精品博文轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/470646.html
標籤:其他
