Github上目標檢測項目: mmdetection項目初接觸,安裝學習過程記錄。


項目地址:https://github.com/open-mmlab/mmdetection

“版權聲明:本文為博主原創文章,轉載請標注原地址!!!”

 

本人硬件:顯卡 GTX3090+CUDA11.1,目前應該是最新的版本吧。

本篇文章分兩部分,第一部分按root用戶安裝的,然后普通用戶使用pycharm,進入root文件夾權限不夠,然后就有了第二部分

第二部分是新建普通用戶,在第一部分的基礎上重新安裝了一遍。。。

注意:請先確定電腦顯卡是nvidia的,如果不是,就不能跑這個項目!

一、(一開始用的其他顯卡的,采坑了)

1、安裝Python

一般情況下ubuntu默認已經安裝了python,如果沒有安裝,需要自己安裝一下,具體百度下。

直接輸入指令 python ,可以查看當前版本,可以看到已經有了3.5.2

已經進入到了python交互界面,

輸入

 print("Hello World!")

 按 Ctrl +D 退出。

如果需要3.0以上的版本,也可以輸入python3 ,查看是否安裝了3.0的版本。

我需要的版本是3.6+,需要升級版本。

添加PPA第三方軟件倉庫,

執行

sudo add-apt-repository ppa:deadsnakes/ppa

可以看到ubuntu版本和匹配對應的python版本

然后更新資源庫  

sudo apt-get update

安裝 

sudo apt-get install python3.7

為了方便,設置優先級,可以執行python,啟動的就是3.0的版本,不用執行python3了。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100

因為我的電腦默認本來是3.5.2的,我想要3.7的,所以再執行下面的,設置3.7優先。

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5  1

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7  2

設置完后,

再執行python,默認使用3.7版本的python,完成安裝。

2、安裝CUDA

前提需要安裝nvidia驅動、cuda和cudann,三者版本要一一匹配。主要是cuda版本要和驅動版本一致。

地址:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

2.1安裝顯卡驅動

測試電腦有沒有nvida驅動,輸入命令 nvidia-smi 如果識別不了,說明沒有裝。那么就要去下載驅動並安裝。

首先要知道自己系統顯卡的型號,才能去下載對應版本的驅動。

https://blog.csdn.net/maizousidemao/article/details/88821949

查看當前系統的顯卡:lspci | grep -i nvidia

沒反應,說明沒有nvidia顯卡

執行

lspci | grep -i vga

出現如下圖,

00:02.0 VGA compatible controller: Cirrus Logic GD 5446

 

說明系統不是nvidia顯卡。

沒法繼續了。。。。

終結!!

 

 

 

防偽標志:

作者:博客園-淺情划過那時雨

------------------------------------------------------------------

 

換nvidia顯卡的系統安裝!

1、安裝python

  

2、安裝pytorch

執行以下命令驗證是否已經安裝pytorch:

python

import torch

torch.__version__

3、安裝CUDA,下載+安裝

查看是否已經安裝:

nvcc  -V

 

沒有安裝的話,需要根據顯卡安裝對應版本,

查看顯卡型號: 

lshw -c video

 

或者按上面說的:   

lspci | grep -i nvidia  

  或者

 lspci | grep -i vga

 

有的說可以用 

 nvidia-smi  

命令,但我的不行0.0(后面就可以了。。往后面看)

根據2204,和上面的網址  https://blog.csdn.net/maizousidemao/article/details/88821949,查找對應的型號:

顯卡型號知道了,接下來是驅動。

先驗證是否已經安裝了驅動:

  首先得安裝 mesa-utils,在終端輸入命令:

sudo apt-get install mesa-utils

  然后再運行命令: 

glxinfo | grep rendering

  如果結果是“yes”,證明顯卡 驅動已經成功安裝

如果沒有安裝就要自己下載安裝了:

1.可以去網站找對應的驅動並下載  https://www.nvidia.cn/Download/index.aspx?lang=cn#

填入自己電腦的型號

 

 點擊搜索,查到需要下載的驅動版本。

 

 

對應的版本是455, 

還可以通過

ubuntu-drivers devices 

 可以看到可以使用的驅動版本號,

 

 

也是455

所以就安裝455的驅動。

首先禁用ubuntu默認安裝好的一個驅動:nouveau

先驗證是否已經禁用:  

 lsmod | grep nouveau

 

 無輸出,表示禁用成功。。。(有點懵??啥時候禁用的?)

沒有禁用的一定要禁用,貌似坑很多!!

接下來安裝驅動:

網上有三種方法:  地址    https://zhuanlan.zhihu.com/p/59618999

1、

sudo ubuntu-drivers autoinstall 

會直接安裝上面查到的455的驅動

如果想安裝其他版本,如 340 版本,sudo apt install nvidia-340 就自動安裝了。

安裝完成后重啟系統即可

2、使用PPA第三方軟件倉庫安裝最新版本

添加 PPA 軟件倉庫:

sudo add-apt-repository ppa:graphics-drivers/ppa

,需要輸入用戶密碼,按照提示還需要按下 Enter 鍵。

更新軟件索引:

sudo apt update

接下來的步驟同方法一,只是這樣我們就可以選擇安裝最新版本的驅動程序了。

3、手動下載

按照上面說的方法下載,

接着需要先安裝一些 NVIDIA 顯卡依賴的軟件,在終端依次執行如下命令:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install build-essential libc6:i386

我選擇的第一種,,跑一段時間后,停止如下圖

重啟檢查是否安裝完成:

reboot

執行下圖

表示自動安裝成功。

現在顯卡驅動安裝成功后,安裝對應版本的CUDA

安裝CUDA:  

  准備工作:

  1、先檢查gcc是否安裝:  gcc -v

  2、安裝kernel header和 package development:  

sudo apt-get install linux-headers-$(uname -r)

 

 

 3、因為我的顯卡驅動是455,對應上面的表,需要安裝11版本以上的CUDA

  去官網選擇自己的環境之后,記住選擇 runfile(local) 版本。

       https://developer.nvidia.com/zh-cn/cuda-downloads?

 

 

 根據下方的安裝說明,執行。

第一個是下載,網上說下的很慢,然后我去找到了一個交大雲盤下載的,但是版本是10+,跟硬件不匹配,所以,我還是按照了安裝說明下載,發現速度很快,五分鍾就下載完了3G 大小的文件。。

執行 wget 命令時,出現了一個小問題,

 

 解決辦法:查看環境變量 

 export -p 

最后三行是

 

 因為地址是https 的,所以只需要重置最后一個代理地址:

執行  

unset https_proxy 

再查看環境變量,三行變兩行了。

然后就能下載了。

下載完畢,執行安裝說明的第二個命令,中間需要選擇幾個選項,

 依次選擇   continue----- accept --------取消Driver【X】前面的X (因為已經安裝了驅動了,不取消會報錯),然后選擇install。

 

 

 執行成功界面如下:

 

 

驗證CUDA是否安裝成功:

cd /usr/local/cuda-11.1/samples/1_Utilities/deviceQuery   

sudo  make 

./deviceQuery

最后結果是

 

表示安裝成功!

 

五、添加環境變量:

#添加路徑到PATH變量
export PATH=/usr/local/cuda-11.1/bin:/usr/local/cuda-11.1/nsight-compute-2020.2.0${PATH:+:${PATH}}

#使用runfile安裝時,64位系統上的LD_LIBRARY_PATH變量需要包含:
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

#保存環境變量
source /etc/profile

此時執行 env ,可以看到PATH里出現CUDA的路徑。
還需要reboot,否則環境變量不能永久生效。


有的系統不是bash,
參考這個: http://www.linuxboy.net/linuxjc/126570.html 按下面的來
echo 'export PATH=/usr/local/cuda-11.1/bin/:$PATH'>>~/.zshrc

echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH'>>~/.zshrc

source ~/.zshrc
 
 
驗證CUDA能正確並支持與CUDA硬件通信:
1、 確認驅動程序的版本。
cat /proc/driver/nvidia/version 

 2、進入   /usr/local/cuda-11.1/samples目錄

進行匯編測試:
make -k

3、編譯完畢,進入samples目錄,出現了bin目錄,運行二進制文件
cd /usr/local/cuda-11.1/samples/bin/x86_64/linux/release  
./deviceQuery  
最后一行出現pass,說明CUDA軟件安裝和配置正確。
(如圖,第一行顯示檢測到設備,第二行顯示設備型號,最后一行顯示測試通過。)

 

六、測試GPU加速效果

利用YOLOv3實現第一個視頻物體檢測

1、編譯時,Makefile中GPU=0,OPENCV=1,則不采用GPU加速;

2、編譯時,Makefile中GPU=1,OPENCV=1,則有加速。

 

 

參考:https://www.it610.com/article/1294417307388420096.htm

 

 

 

七、檢測軟件是否安裝齊全

 

根據項目的規定,檢測軟件是否安裝:

  • Python 3.6+              3.7.9    (python3)
  • PyTorch 1.3+            1.5.0       (在python下執行 import torch 和 torch.__version__ )      print(torch.version.cuda)  打印當前torch對應的cuda版本
  • CUDA 9.2+ (If you build PyTorch from source, CUDA 9.0 is also compatible)      11.1   (環境變量配好,nvcc -V)
  • GCC 5+       7.5.0       (gcc  -v)
  • MMCV              

 

import   mmcv  報錯,網上查了查 ,

是cuda和torch 版本沖突    

於是  pip list  看一下 

現在,cuda是11.1   torch是1.5.0  mmcv-full是1.2.3       pip是20.3.3

 

卸載原mmcv-full     

pip uninstall mmcv-full

再安裝新的

pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.7.0/index.html

mmcv -full 從1.2.3 變成了 1.2.2版本了

torch還是1.5.0沒有變成1.7.0??

先卸載原來的:  

pip uninstall torch

根據自己的CUDA版本自動安裝對應的torch版本:  

pip install torch torchvision

 

下載完畢,

現在,cuda是11.1   torch是1.7.1  mmcv-full是1.2.2       pip是20.3.3    gcc是7.5.0

 然后在python交互界面運行,

執行以下代碼驗證是否安裝成功,可以參考 https://github.com/open-mmlab/mmdetection/blob/master/docs/get_started.md  最下面的 Verification 部分

from mmdet.apis import init_detector, inference_detector
config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, device=device)
# inference the demo image
inference_detector(model, 'demo/demo.jpg')

如果報錯ModuleNotFoundError,  可以在mmdetection目錄下,運行下面代碼升級庫:

python setup.py install

執行完畢,會在mmdetection目錄下生產build目錄。

如果還不行,就再執行下

 python setup.py develop

然后就可以運行成功了!


我這個不是圖形化界面,需要圖形化顯示需要pycharm 或者 tensorboard 。

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二部分,第一部分用root安裝的,普通用戶沒法用root文件夾里的東西。。。。。。。由於某些原因,切換了用戶,重新安裝。。。。。。。。。。。又累個半死!

 

1、重新換用戶

新增用戶

2、檢查軟件

 上面第一部分,cuda是11.1     torch是1.7.1  mmcv-full是1.2.2       pip是20.3.3    gcc是7.5.0

現在,cuda是11.1   torch是1.7.1    torchvision是0.8.2   mmcv-full未安裝     pip是20.3.3    gcc是8.3.0

 

 切換到pytorch環境:         (此處請自行百度conda 環境管理)

conda activate pytorch

用pytorch環境,

    cuda=11.1     torch=1.7.1    mmcv-full =1.2.2        pip=20.3.3     gcc=7.3.0

執行程序還是報錯,

猜想權限的問題?  或者重新安裝mmde項目?

執行     

pip install -v -e .   

報錯,忘記換環境了!! 解決辦法,在正確的環境下,執行     

python setup.py develop

然后執行就成功了,也能看到成功安裝了mmdet

重裝mmcv-full  :     

pip uninstall mmcv-full       

pip install mmcv-full==1.2.4 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.7.0/index.html 

版本換成1.2.4,解決問題了

3、安裝完畢后,還用  https://github.com/open-mmlab/mmdetection/blob/master/docs/get_started.md  最下面的檢測代碼:

from mmdet.apis import init_detector, inference_detector
config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py'
device = 'cuda:0'
# init a detector
model = init_detector(config_file, device=device)
# inference the demo image
inference_detector(model, 'demo/demo.jpg')

驗證是否成功。

報錯:  RuntimeError: CUDA error: no kernel image is available for execution on the device

原因:  cuda和torch版本不匹配。

辦法:

pip uninstall torch
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

 

 

 

 再執行代碼:如圖

 

就不報錯了。

結束。

 

2021.01.05新增內容:

用Pycharm跑項目:

經過一番摸索,發現上面的測試跑不出來圖片!!!!

因為最新版的mmde代碼里,已經沒有了show_result了!!     看這個干貨總結:

https://blog.csdn.net/weixin_42041624/article/details/108691789

最終運行的測試代碼是這個:

https://github.com/open-mmlab/mmdetection/blob/master/demo/MMDet_Tutorial.ipynb

直接粘出來了:

from mmdet.apis import inference_detector, init_detector, show_result_pyplot

# Choose to use a config and initialize the detector
config = 'configs/mask_rcnn/mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco.py'
# Setup a checkpoint file to load
checkpoint = 'checkpoints/mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco_bbox_mAP-0.408__segm_mAP-0.37_20200504_163245-42aa3d00.pth'
# initialize the detector
model = init_detector(config, checkpoint, device='cuda:0')

# Use the detector to do inference
img = 'demo/demo.jpg'
result = inference_detector(model, img)

# Let's plot the result
show_result_pyplot(model, img, result, score_thr=0.3)

注:     checkpoint  里是預訓練模型文件,下載的項目mmde里沒有,需要自己下,在上面的鏈接里有

 

其他應該沒啥問題了。。

 

 

 

 

 

有問題可以留言噢~~~樓主每天都在

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

記錄一些語句

 1、查看python安裝目錄:   

python
import sys
sys.path

 

 2、查看conda的信息  

conda info --env

 

 3、檢測CUDA是否安裝正確並能被Pytorch檢測到   &&      看Pytorch能不能調用cuda加速

  https://www.cnblogs.com/liuke-note/p/10149530.html

 


免責聲明!

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



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