Linux下配置mmdetection


一.安裝Linux系統

由於用虛擬機軟件安裝的Linux不能調用GPU,因此這里采用雙系統(在Windows的電腦上再安裝一個Linux系統)

詳細安裝過程參考鏈接知乎:Win+Linux安裝

講一下遇到的幾個問題:

Rufus檢測不到U盤,可以換一個U盤試試

分配磁盤空間時,遇到C盤不能擴展分區,可以用傲梅分區助手:下載地址

分區時注意分區所占用的物理磁盤名稱,會出現很多塊磁盤名稱注意區分,分為4個區:

  • /boot:主要用於引導系統正常啟動,可以設為1G
  • /:根目錄 盡量大一些,這個應該最大,可以給/home少一些,這個可以給200G
  • /home:用戶目錄 盡量大一些,這個100G差不多了
  • swap:交換空間,相當於windows的虛擬內存,可以設為和運行內存一樣大小8或16G
  • 注意:安裝啟動引導器設備選擇/boot對應分區
  • Linux的詳細分區介紹見博客園:Linux分區

華碩天選的開機進入U盤引導的按鍵是F2注意要在出現開機頁面(ASUS字樣)的那一刻不停地按F2即可

安裝完之后每次重啟會讓你選擇要進入的系統是Linux還是Windows,我這里不選的話默認進Linux

二.安裝NVIDIA顯卡驅動

bash中輸入nvidia-smi
如果出現我下面的截圖說明是安裝成功了,驅動版本是510.54,驅動對應的CUDA版本號是11.6
image-20220403171936175

如果沒有出現如上圖片,說明沒有安裝驅動,這里推薦最簡單的安裝驅動方法兩種:

  • 軟件更新里面的附加驅動會推薦一些可用的驅動,點擊你想安裝的應用更改即可(我這里不行,應用更改和選擇驅動的按鈕是灰色的)
    image-20220403172108557

  • 用命令行安裝:
    具體參考:博客園:命令行安裝NVIDIA驅動

ubuntu-drivers devices # 查詢所有ubuntu推薦的驅動,我的輸出如下

driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-510 - distro non-free
driver   : nvidia-driver-510-server - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

sudo apt install nvidia-driver-510 # 安裝其中一個你想要的版本即可,我這里安裝的是510

執行完畢之后重啟一下
還有網上別人推薦的第三種方法,極其復雜,我覺着第二種最好,可以成功且很方便,安裝好之后用前面的命令測試一下即可。

三.Linux安裝CUDA和CUDNN

具體參考CSDN:Linux安裝cuda和cudnn

CUDAdriver api 和 runtime api,我理解的runtime api是真正用cuda做運算時用到的版本,我們上面用nvidia-smi查到的是 driver api,而下載安裝的CUDA是 runtime api,查詢是否安裝CUDA的runtime api用命令nvcc -V`:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Tue_Sep_15_19:10:02_PDT_2020
Cuda compilation tools, release 11.1, V11.1.74
Build cuda_11.1.TC455_06.29069683_0

我是安裝過的,如果沒安裝不會出現上面的輸出。這個版本是11.1和之前的不同,原因可以參考簡書:CUDA兩個版本的不同
注意安裝過程中,安裝號CUDA后修改環境變量時按照下面來修改:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
# export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
# 非常重要!!!就這一個導致后面的mmdetection安裝mmcv-full時安裝一直報錯!!!
export CUDA_HOME=/usr/local/cuda

四.安裝mmdetection2.8

安裝Minianaconda

  • 下載:wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
  • 運行:bash Miniconda3-latest-Linux-x86_64.sh
  • 按住ctrl+c可以跳過閱讀,后面一直同意即可
  • 安裝好之后,打開bash輸入conda env list進行測試又沒有安裝成,我的直接成了,如果沒成可能需要配置一下環境變量,自己百度

創建虛擬環境

  • conda create -n mmd python=3.8 # mmd是環境名
  • conda remove -n mmd --all # 是刪除虛擬環境

conda換源
具體參考知乎:conda換源

  • vim ~/.condarc
  • 添加參考鏈接中的相應命令

工具弄好之后開始正式安裝mmdetection


安裝pytorch的GPU版本

pytorch官網上找安裝命令,注意pytorch版本要與你的CUDAruntime版本一直,也就是nvcc -V版本一致,我這里是11.1,因此安裝命令是:
pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

如果上面安裝報證書錯誤(There was a problem confirming the ssl certificate: HTTPSConnectionPool(host=‘**.org‘,port=443)用下面的命令:

pip install --trusted-host download.pytorch.org torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

一定注意版本別搞錯了,推薦的一套版本是

  • CUDA 11.1
  • torch 1.9.0
  • torchvision 0.10.0
  • torchaudio 0.9.0

安裝mmcv-full
這里建議直接把mmcvgithub庫克隆下來:

git clone https://github.com/open-mmlab/mmcv.git
# 會自動把內容放到mmcv文件夾
cd mmcv
# MMCV_WITH_OPS=1是安裝mmcv-full,否則是安裝mmcv,這里mmdetection2.8需要mmcv-full
MMCV_WITH_OPS=1 pip install -e .  # package mmcv-full will be installed after this step

不過安裝完的是1.4.7的最新版本,與mmdetection2.8要求的版本不符合,此時可以執行

pip install mmcv-full==1.2.4 安裝1.2.4版本

也可以用命令

pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html

進行安裝,還是一定注意CUDA版本號和pytorch,torchvision等對應,CUDA環境變量別弄錯了!!!

安裝mmcv-full時出了很多錯誤,總結一下,感慨一下:

  • 首先是CUDA版本和torch版本要一致,建議CUDA版本別太高,不然torch版本沒那么高的
  • 安裝CUDA時,CUDA_HOME的環境要寫對,我之前按照別人寫的的多加了一個冒號,結果就出現在這個冒號身上
  • 執行到Running setup.py develop for mmcv-full時可能會卡一會,不用擔心
  • 如果報錯了也別直接復制最后一行去百度,可以向前翻翻錯誤的地方,找到可能是關鍵的地方再百度

安裝mmdetection2.8

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e .  # or "python setup.py develop"

測試
執行官方給的測試命令即可:
新建一個test.py文件在mmdetection文件夾中,下載給定的網絡權重方放到mmdetectioncheckpoints文件夾中(新建)中

 from mmdet.apis import init_detector, inference_detector
 
 config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
 # download the checkpoint from model zoo and put it in `checkpoints/`
 # url: http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
 checkpoint_file = 'checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'
 device = 'cuda:0'
 # init a detector
 model = init_detector(config_file, checkpoint_file, device=device)
 # inference the demo image
 inference_detector(model, 'demo/demo.jpg')

如果正常執行就OK了,我的報了兩個警告,不過結果正確,先不管了

五.Vscode遠程操控Linux

其實可以在一台有GPU的電腦上,Linux系統安裝mmdetection,另一台只有cpuWindows的電腦遠程操控,比如弄一個有GPU的台式機在家,拿一個輕薄本,就可以遠程操控台式機進行訓練。

下面是在Linux系統的主機上運行的:

  • 安裝 net-tools 工具:sudo apt-get install net-tools,如果失敗,可能是軟件源沒有更新
  • sudo apt-get update 更新源再試試
  • ifconfig 查看ip地址
  • 安裝openssh-server工具,sudo apt-get install openssh-server

下面是在Windows主機上進行的操作

  • 安裝vscode(百度即可)
  • vscode中安裝ssh插件,插件商店直接搜索ssh即可出現
  • 打開cmd,ping 剛才查到的IP地址,如果能ping通說明可以連接
  • cmd中輸入 ssh 主機用戶名@主機IP地址
    如果失敗了,可能是主機中沒有安裝openssh-server服務,在主機上安裝即可:sudo apt-get install openssh-server
  • cmd中輸入 ssh 主機用戶名@主機IP地址,輸入主機用戶密碼即可
  • vscode中找到遠程連接小圖標,輸入 ssh 主機用戶名@主機IP地址,然后輸入密碼即可連接成功

至此,環境配置完成,后面會用其來測試自己的數據集


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM