項目地址: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