Ultra Fast Structure-aware Deep Lane Detection (ECCV2020)的復現

2020-10-12 15:00:26

首先感謝作者的開原始碼以及模型。
作者知乎論文指路:https://zhuanlan.zhihu.com/p/157530787
作者程式碼指路:https://github.com/cfzd/Ultra-Fast-Lane-Detection

接下來是復現的過程以及其中遇到的坑。
基礎的nvidia顯示卡安裝、CUDA安裝、cuDNN安裝這裡不進行贅述。

復現的環境以及資料準備在作者的github倉庫裡寫的很完整,按照步驟來就好。
需要注意一下的是第四步資料集的準備。在工程資料夾中新建一個叫做CULANROOT或者TUSIMPLEROOT的資料夾用於存放對應的資料,我自己只用了CUlane資料集做復現。
注意:如果你使用百度雲下載資料集,請在解壓縮後確保檔案23 30frame part1.tar.gz和檔案23 30frame part2.tar.gz中的影象位於一個「driver_23_30frame」資料夾中,而不是兩個單獨的資料夾,這就意味著需要自己建立一個資料夾,然後把兩個資料夾中的影象移動到建立的資料夾中。
它看起來像這樣:
準備好的影象結構

當一切準備就緒,就可以開始了。
首先,我們需要根據自己的環境在 confits / culane.py 設定中修改資料。
其中的data_root路徑就是所下載的CULane資料集的路徑。
作者還說到log_path也需要修改,但是我暫時沒搞清楚如何修改,所以按住不動。

最後在終端執行命令執行demo即可。
執行:python demo.py configs/culane.py --test_model model/culane_18.pth
執行完畢後,每個場景生成一個.avi視訊。
程式運行結果
接下來是復現過程中踩到的坑以及解決方法:
1、無法找到cv2模組
解決:將 ~/.bashrc 中的source /opt/ros/kinetic/setup.bash註釋掉,因為安裝ros後他會在python_path中新增路徑,導致conda無法找到正確的路徑。
(後續新增:不知道什麼原因,導致了我的環境出了問題,單純的對source /opt/ros/kinetic/setup.bash進行註釋已經無法再實現作用,現在的做法是在需要匯入cv2的 *.py檔案的頭部,新增如下兩條語句:
import sys
sys.path.remove(’/opt/ros/kinetic/lib/python2.7/dist-packages’)
這兩條語句的作用是使程式開始執行時不要用ros匯入的路徑。)

2、pytorch無法使用CUDA
錯誤提示:Torch not compiled with CUDA enabled
即:未在啟用CUDA的情況下編譯Torch

在終端使用命令 nvcc -V 出現以下提示:
CUDA
出現這幾條語句,說明CUDA安裝沒有問題,後來經過多方查詢,發現是CUDA版本安裝過高,此時並沒有合適於此版本的pytorch,這個問題應該在安裝torch時意識到,因為在官網下載安裝時確實沒有出現對應CUDA版本的torch。
然後在終端檢測此版本的torch是否可以使用CUDA:
torch可以看到後續的輸出是False,也就是說這個版本的torch無法使用CUDA。
(也就是說,後續要用上CUDA只能使用低版本咯)

後來為了完成復現,決定不使用GPU轉而使用CPU來進行,所以對作者的原始碼進行了一點小小的改動。改動如下:
在程式開始時新增:device = torch.device(「cuda」 if torch.cuda.is_available() else 「cpu」)
然後將程式中所有的 .cuda() 更改為 .to(device)。然後執行程式即可。

後續開坑計劃:CPU的效率確實是沒有GPU高的,安裝了GPU驅動卻沒有用起來是很難受的一件事情,所以後續打算解除安裝掉CUDA11.0安裝和torch配套的低版本CUDA,然後用GPU把此套程式碼跑出來。