1. 程式人生 > 其它 >TraDes程式碼復現

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。

寫在最後

如有疑問或者文中出錯,可以交流一下。