TraDes程式碼復現
TraDes程式碼復現
2022/3/31 19:54:39 by zcb 僅以此記錄
環境
- 顯示卡:RTX3090
- pytorch:1.7.1
- CUDA 11.0
程式碼下載
我直接去作者github上下載原始碼,直接上鍊接: https://github.com/JialianW/TraDeS
當然我也弄了一個百度網盤分享:
連結:https://pan.baidu.com/s/1dpTfJbAy8jNnZDPcpUUdKQ 提取碼:ustb --來自百度網盤超級會員V2的分享
環境搭建
1、新建TraDes環境並激活,我的python版本是3.7:
- conda create --name TraDes python=3.7
- conda activate trades
2、Install PyTorch
論文的環境是pytorch1.3 cuda10.0,然後如果按照這個pytorch安裝,接下來可能會出現DCNv2的編譯問題。踩完這個坑後,我根據我的顯示卡是3090,能支援cuda11,以及配套的DCNv2 pytorch1.7版本比較容易找到,我選擇安裝pytorch1.7.1。
官網命令如下:
- conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch
3、Install COCOAPI
論文需要cocoapi資料集介面,命令如下:
這個命令的問題之一是,可能會出現聯網失敗,所以可能多試驗幾次就會好吧。
- pip install cython; pip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
4、Install the requirements
requirements.txt的內容如下:
- opencv-python
- Cython
- numba
- progress
- matplotlib
- easydict
- scipy
- pyquaternion
- pyyaml
- motmetrics==1.2.0
- nuscenes-devkit==1.1.2
- scikit-learn==0.21.0
如果直接pip install -r requirements.txt,應該是會安裝失敗的,我是沒成功過。在此我貼上我各個包的版本:
- opencv-python 4.5.5.62
- cython 0.29.26
- progress 1.6
- matplotlib 3.5.1
- easydict 1.9
- scipy 1.7.3
- pyquaternion 0.9.9
- pyyaml 6.0
- motmetrics 1.2.0
- nuscenes-devkit 1.1.2
- scikit-learn 1.0.2
我在使用cv2包時出現過一個錯誤,libharfbuzz.so.0報錯,部落格上說可能是freetype too old 的問題,我沒有root許可權,因此我並沒有解決這個問題,但是我重新裝包為以上版本時,這個錯誤消失了。裝包的過程中應該是不會出現什麼問題的,極有可能還是版本問題。
5、DCNv2的編譯
首先下載DCNv2,由於我們pytorch1.7.1,所以對應下載DCNv2 support pytorch1.7的版本。
直接上鍊接:https://github.com/lbin/DCNv2/tree/pytorch_1.7
當然也有百度網盤分享:
連結:https://pan.baidu.com/s/1DyJIt0J0J_6qLg99FcVZmw 提取碼:ustb --來自百度網盤超級會員V2的分享
步驟:
- 根據程式碼要求,解壓並將DCNv2資料夾放入TraDes/src/lib/model/networks/資料夾下。
- 執行sh make.sh 編譯DCNv2
直接編譯一般會報錯compute86什麼的,原因是3090顯示卡算力太高,解決方法如下:
在.bashrc檔案配置一下環境變數:
#宣告一下cuda_arch:
export TORCH_CUDA_ARCH_LIST="3.5;5.0;5.2;6.0;6.1;7.0;7.5;8.0;8.0+PTX"
#宣告一下cuda環境變數:
export PATH="/usr/local/cuda-11.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH"
export CUDA_HOME="/usr/local/cuda-11.0"
cuda_arch這個很重要,即使編譯通過了,沒設定對,也會導致DCNv2程式碼的後續執行錯誤。我覺得我這個應該沒毛病,可以參考一下,對應cuda11.0.
6、到此算是完成環境配置了。
在訓練過程中,如果出現cuda out of memory等,可以稍加修改batch_size等,或者是其他的解決方法,這裡不贅述了。
7、訓練以及跑demo可以參考TraDes作者github。
寫在最後
如有疑問或者文中出錯,可以交流一下。