一、Ubuntu20.04配置深度學(xué)習(xí)環(huán)境
1.首先給Ubuntu安裝Chrome瀏覽器(搜索引擎換成百度即可)
安裝命令:打開終端直接輸入
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get -f install
2.換成搜狗輸入法(如果安裝完成無法打漢字,可輸入以下命令)
sudo apt-get update
sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2
sudo apt install libgsettings-qt1
3.安裝WPS for Linux
進(jìn)入搜狗for linux官網(wǎng)下載搜狗輸入法 ,下載x86版本
WPS for linux
4. 安裝其它之前需要先安裝anaconda
-
先去官網(wǎng)下載好anaconda后面是.sh文件
-
輸入命令(命令上對(duì)應(yīng)你自己下載的版本號(hào)):
sh Anaconda3-2021.11-Linux-x86_64.sh
后面根據(jù)提示進(jìn)行操作即可
-
新打開一個(gè)終端可以看到前面帶一個(gè)base,說明安裝成功
5. ubuntu換國(guó)內(nèi)鏡像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
6.安裝配置anaconda
anaconda添加國(guó)內(nèi)鏡像源
#添加鏡像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
#顯示檢索路徑
conda config --set show_channel_urls yes
#顯示鏡像通道
-
conda config --show channels
安裝完成anaconda后創(chuàng)建一個(gè)虛擬環(huán)境
conda create -n yolo python=3.7
yolo是你虛擬環(huán)境名字,可自己取,Python不要安裝太高版本3.7即可
查看自己的虛擬環(huán)境
conda env list
激活虛擬環(huán)境
conda activate yolo
接下來需要在虛擬環(huán)境里面安裝pytorch
二、安裝pytorch前首先安裝顯卡驅(qū)動(dòng)
-
輸入
nvidia-smi
提示Command 'nvidia-smi' not found, but can be installed with:說明你還沒有安裝顯卡驅(qū)動(dòng)
2.安裝顯卡驅(qū)動(dòng)最簡(jiǎn)單方式:
打開軟件和更新
ununtu軟件-下載自-安裝源改成國(guó)內(nèi),然后左面有一個(gè)附加驅(qū)動(dòng)里面有許多專有的驅(qū)動(dòng)程序,點(diǎn)擊一個(gè)專有的,接著點(diǎn)擊應(yīng)用更改


3.這時(shí)如果彈出更新應(yīng)用時(shí)出錯(cuò)
解決方法:打開軟件更新器更新一下
完成后重啟在輸入nvidia-smi就可以看到電腦可以安裝cuda的最高版本號(hào)

(圖上看到可以安裝的cuda最高版本號(hào)為12.0)
三、安裝配置pytorch
1.首先查看查看顯卡使用情況
打開終端輸入:
nvidia-smi
查看可以安裝cuda的版本(低于這個(gè)或等于這個(gè)版本都可以安裝,高于11.3版本,建議安裝11.3的)
2.進(jìn)入自己創(chuàng)建的虛擬環(huán)境把pytorch安裝在自己的虛擬環(huán)境里面
(可以在torch官網(wǎng)Previous PyTorch Versions | PyTorch上復(fù)制安裝命令)
打開終端輸入:兩個(gè)不同版本看你選擇(Python需要3.7版本裝的cuda才是10.2)
這個(gè)是cuda11.3版本的torch
國(guó)內(nèi)鏡像源經(jīng)常用放在這里
-i https://pypi.tuna.tsinghua.edu.cn/simple
下載錯(cuò)了刪除虛擬環(huán)境的命令
# 第一步:首先退出環(huán)境
conda deactivate
# 第二步:刪除環(huán)境
conda remove -n yolo --all
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
這個(gè)是cuda10.2版本的
conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=10.2 -c pytorch

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
下面復(fù)現(xiàn)VIT-SAM使用的版本
python3.8+pytorch2.0+torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8
1. 新建虛擬環(huán)境python3.8
conda create -n yolo python=3.8
2. 安裝pytorch2.0.0
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia
3. 安裝cuda11.8+cudnn(參考文章Ubuntu16.04下安裝cuda和cudnn的三種方法)
wget?https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh?cuda_11.8.0_520.61.05_linux.run
gedit ~/.bashrc
在bashrc里面添加如下代碼
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/lib64
export PATH=$PATH:/usr/local/cuda-11.8/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.8
source ~/.bashrc
nvcc -V #查看cuda是否安裝完成
出現(xiàn)如下cuda11.8的版本好說明安裝完成
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
--------------------------------------------------------------------------------------------------------------------
安裝cudnn官網(wǎng)(參考文章Ubuntu安裝cuda與cudnn,親測(cè)可用)
參考(文章cudnn升級(jí)方法,解決CuDNN版本不兼容問題)
主要之前安裝測(cè)試完成之后在autokeras環(huán)境中遇到了這種問題:
Loaded runtime CuDNN library: 8.2.1 but source was compiled with: 8.6.0. ?CuDNN library needs to have matching major version
現(xiàn)在寫一些安裝cudnn的流程:
1. 如果你下載的cudnn是tar.xz結(jié)尾的用解壓:
tar xvJf ?data.tar.xz
cudnn是.tgz結(jié)尾的用解壓:
tar -zxvf cudnn-11.3-linux-x64-v8.2.1.32.tgz
cudnn是.deb結(jié)尾的用解壓:
sudo dpkg -i?
2.?刪除舊版本
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
3. 安裝新版本
cd進(jìn)入剛才解壓的cuda文件夾
sudo cp include/cudnn.h /usr/local/cuda/include/
sudo cp lib64/lib* /usr/local/cuda/lib64/
4. 建立軟連接(其中so.8.2.1和so.8是你下載的cudnn版本)
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.8.2.1
sudo ln -sf libcudnn.so.8.2.1 libcudnn.so.8
sudo ln -sf libcudnn.so.8 libcudnn.so ??
sudo ldconfig
5. 測(cè)試驗(yàn)證:
?查看cudnn的版本
首先使用以下指令查看現(xiàn)有cudnn的版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 2
#define CUDNN_PATCHLEVEL 1
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
?
#include "driver_types.h"
報(bào)錯(cuò)解決:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 沒有顯示
2.解決方法:
原因:可能是最新版本的cudnn把文件放入的cudann_version.h中而沒有在原來的cudnn.h中 所以要換一個(gè)文件復(fù)制, 具體操作如下;
執(zhí)行下面代碼
sudo cp cuda/include/cudnn_version.h ? ?/usr/local/cuda/include/
查看是否安裝成功:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
Downloading https://ultralytics.com/assets/Arial.ttf to ...... yolov5報(bào)錯(cuò)解決:
解決辦法:
在文件yolov5/utils/plots.py中,找到以下代碼:
class Annotator:
if RANK in (-1, 0):
check_font() # download TTF if necessary
# YOLOv5 Annotator for train/val mosaics and jpgs and detect/hub inference annotations
def __init__(self, im, line_width=None, font_size=None, font='Arial.ttf', pil=False, example='abc'):
修改為:
class Annotator:
#if RANK in (-1, 0):
#check_font() # download TTF if necessary
# YOLOv5 Annotator for train/val mosaics and jpgs and detect/hub inference annotations
def __init__(self, im, line_width=None, font_size=None, font='', pil=False, example='abc'):
----------------------------------------------------------------------------------------
找到
Download cuDNN v8.2.1 (June 7th, 2021), for CUDA 11.x
下載這三個(gè)
cuDNN Runtime Library for Ubuntu20.04 x86_64 (Deb)
cuDNN Developer Library for Ubuntu20.04 x86_64 (Deb)
cuDNN Code Samples and User Guide for Ubuntu20.04 x86_64 (Deb)
用sudo dpkg -i直接解壓即可
用以下代碼進(jìn)行測(cè)試:
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.backends.cudnn as cudnn
from torchvision import datasets, transforms
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.fc1 = nn.Linear(320, 50)
self.fc2 = nn.Linear(50, 10)
def forward(self, x):
x = F.relu(F.max_pool2d(self.conv1(x), 2))
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
x = x.view(-1, 320)
x = F.relu(self.fc1(x))
x = F.dropout(x, training=self.training)
x = self.fc2(x)
return F.log_softmax(x, dim=1)
def train(model, device, train_loader, optimizer, epoch):
model.train()
for batch_idx, (data, target) in enumerate(train_loader):
data, target = data.to(device), target.to(device)
optimizer.zero_grad()
output = model(data)
loss = F.nll_loss(output, target)
loss.backward()
optimizer.step()
if batch_idx % 10 == 0:
print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
epoch, batch_idx * len(data), len(train_loader.dataset),
100. * batch_idx / len(train_loader), loss.item()))
def main():
cudnn.benchmark = True
torch.manual_seed(1)
device = torch.device("cuda")
kwargs = {'num_workers': 1, 'pin_memory': True}
train_loader = torch.utils.data.DataLoader(
datasets.MNIST('../data', train=True, download=True,
transform=transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,))
])),
batch_size=64, shuffle=True, **kwargs)
model = Net().to(device)
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)
for epoch in range(1, 11):
train(model, device, train_loader, optimizer, epoch)
if __name__ == '__main__':
main()
如果正常輸出一下以下信息,證明已經(jīng)安裝成了:
Train Epoch: 1 [0/60000 (0%)]?? ?Loss: 2.365850
Train Epoch: 1 [640/60000 (1%)]?? ?Loss: 2.305295
Train Epoch: 1 [1280/60000 (2%)]?? ?Loss: 2.301407
Train Epoch: 1 [1920/60000 (3%)]?? ?Loss: 2.316538
Train Epoch: 1 [2560/60000 (4%)]?? ?Loss: 2.255809
Train Epoch: 1 [3200/60000 (5%)]?? ?Loss: 2.224511
Train Epoch: 1 [3840/60000 (6%)]?? ?Loss: 2.216569
Train Epoch: 1 [4480/60000 (7%)]?? ?Loss: 2.181396
ubuntu20.4+cuda11.8+python3.8對(duì)應(yīng)的tensorrt(參考文章TensorRT安裝及使用教程)
(TensorRT安裝親測(cè)這個(gè)可以我的cudnn是8.2也可以對(duì)應(yīng)cuda11.8就沒改)
因?yàn)門ensorRT不同的版本依賴于不同的cuda版本和cudnn版本。所以很多時(shí)候我們都是根據(jù)我們自己電腦的cuda版本和cudnn版本來決定要下載哪個(gè)TensorRT版本。
cuda版本
nvcc -V
在我的系統(tǒng)里,cudnn文件存在于/usr/include/文件夾下。cd進(jìn)入/usr/include/文件夾,查看cudnn的版本:
cd /usr/include/
cat cudnn_version.h
1. 首先下載TensorRT編譯YOLOv5的代碼
tensorrt官網(wǎng)(點(diǎn)進(jìn)去選擇你對(duì)應(yīng)的版本)
2. 模型轉(zhuǎn)換
在tensorrtx/yolov5文件夾中可找到gen_wts.py,該腳本可將Pytorch模型(.pt格式)轉(zhuǎn)換成權(quán)重文本文件(.wts格式)。將gen_wts.py拷貝到{ultralytics}/yolov5文件夾中,并在此文件夾中打開終端,輸入(其中best.pt 是你訓(xùn)練好的權(quán)重文件)
python gen_wts.py -w best.pt -o best.wts
這樣就在{ultralytics}/yolov5文件夾中生成了best.wts文件。
3. 修改yololayer.h參數(shù)
打開tensorrtx\yolov5文件夾,找到y(tǒng)ololayer.h文件,修改CLASS_NUM,使與pytorch模型一致:
?
4.??編譯并生成引擎文件
終端依次輸入下列指令,在tensortrtx/yolov5目錄下新建build文件夾
mkdir build ?
將生成的best.wts拷貝到build文件夾下,輸入下列指令對(duì)其進(jìn)行編譯
cmake .. ?
make ?
再輸入下列指令,可使best.wts生成best.engine,注意末尾的n代表模型尺度,可選項(xiàng)有n/s/m/l/x/n6/s6/m6/l6/x6 or c/c6 gd gw,必須與pytorch模型一致:
sudo ./yolov5 -s best.wts best.engine s
?
5. 進(jìn)行檢測(cè)
輸入下列指令,可對(duì)指定路徑下的圖片進(jìn)行檢測(cè),這里的圖片路徑是…/samples:
sudo ./yolov5 -d best.engine ../samples ?
可以和之前沒有使用tensorrt時(shí)使用的Pytorch模型檢測(cè)所耗時(shí)間進(jìn)行對(duì)比,TensorRT加速后單幅圖片耗時(shí)明顯縮短
看到這里就可以了,后面的文字是之前寫的沒有刪
參考文章:【Jetson平臺(tái) ubuntu 18.04 使用 TensorRT 加速 YOLOv5 檢測(cè)】
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
安裝命令復(fù)制過來進(jìn)行安裝(不要把安裝命令后面的-c pytorch -c conda-forge去掉,否則你安裝的將是cpu版的,無法調(diào)用gpu)
pytorch要選1.10以后的不然還是CPU版本的,具體原因看:
解決cpu版本解決torch是cpu版本的問題
輸入:nvidia-smi
如果報(bào)錯(cuò):Module nvidia/470.182.03 already installed on kernel 5.15.0-69-generic/x86_6
說明自己裝的驅(qū)動(dòng)和電腦內(nèi)核驅(qū)動(dòng)不一致(還沒有更新)重啟一下電腦即可
還不行進(jìn)入BIOS把找到驅(qū)動(dòng)后面的Secure Boot改為Disabled
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running.
解決方法:
安裝dkms:
sudo apt-get install dkms
查看本機(jī)連接不上的驅(qū)動(dòng)版本:
ls -l /usr/src/
使用dkms重新安裝適合驅(qū)動(dòng):
sudo dkms install -m nvidia -v 470.103.01
完成重啟即可測(cè)試:
nvidia-smi
import torch
print(torch.cuda.is_available())
輸出true即可
3. 配置完成測(cè)試,終端打開輸入:
Python
import torch # 如果pytorch安裝成功即可導(dǎo)入
print(torch.cuda.is_available()) # 查看CUDA是否可用,輸出true代表可以調(diào)用GPU
print(torch.cuda.device_count()) # 查看可用的CUDA數(shù)量
print(torch.version.cuda) # 查看CUDA的版本號(hào)
?
4.用conda list查看pytorch和cuda、cudnn的版本
如果發(fā)現(xiàn)安裝成CPU版本,用以下命令卸載在重新安裝:
conda uninstall pytorch
conda uninstall libtorch
有問題看以下鏈接
解決cpu版本解決torch是cpu版本的問題
yolov5跑模型時(shí)報(bào)錯(cuò):
RuntimeError: result type Float can't be cast to the desired output type long int
解決方法:
1.打開你的【utils】文件下的【loss.py】
2.按【Ctrl】+【F】打開搜索功能,輸入【for i in range(self.nl)】找到下面的一行內(nèi)容:
(上面的代碼在【loss.py】的后半部分)
將下面代碼替換掉這一行的紅色字:anchors = self.anchors[i]
anchors, shape = self.anchors[i], p[i].shape
3.按【Ctrl】+【F】打開搜索功能,輸入【indices.append】找到下面的一行內(nèi)容:
indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices
(上面的代碼在【loss.py】的最后部分,具體位置在上一處搜索位置的下面幾行)
將下面的代碼替換掉上圖中的紅字部分:
indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1))) # image, anchor, grid
參考:yolov5部署之環(huán)境配置及源碼測(cè)試_yolov5環(huán)境測(cè)試_Christo3的博客-CSDN博客
四、ubuntu20.04下載安裝tensorrt
4.1 環(huán)境
CUDA 11.1 (11.2、11.3)
CUDNN 8.1
4.2 下載tensorRT (匹配相應(yīng)的版本)
官網(wǎng)地址 :Log in | NVIDIA Developer
下載的時(shí)tar包
安裝
解壓
tar zxf TensorRT-8.0.1.6.Linux.x86_64-gnu.cuda-11.3.cudnn8.2.tar.gz
存放在自己想放的目錄下(也可以重命名),如:
mv TensorRT-8.0.1.6 /opt
4.3 添加環(huán)境
將下面的環(huán)境變量 添加到.bashrc文件并保存:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/TensorRT-8.0.1.6/lib
激活環(huán)境:
source ~/.bashrc
復(fù)制tensorRT目錄下 lib、include文件夾到系統(tǒng)文件夾(或者將這兩個(gè)文件夾路徑添加到.bashrc文件中)
sudo cp -r ./lib/* /usr/lib
sudo cp -r ./include/* /usr/include
4.4 C++測(cè)試是否成功
測(cè)試代碼:TensorRT-8.0.1.6/samples/sampleMNIST
本版本無需去data文件夾下載對(duì)應(yīng)的數(shù)據(jù)集,自己帶了,如果沒有,那就下載對(duì)應(yīng)的數(shù)據(jù)集
4.5 python download_pgms.py
如果文件夾下有pgm格式的圖片 說明下載成功
在tensorRT目錄下samples文件夾下 用sampleMNIST示例測(cè)試
編譯:
make
清除之前編譯的可執(zhí)行文件及配置文件:
make clean
編譯成功,執(zhí)行bin目錄下的可執(zhí)行文件
./../../bin/sample_mnist
參考文章:Ubuntu20.04 安裝tensorRT_tensorrt安裝 ubuntu_墨文昱的博客-CSDN博客
需要對(duì)yolov5中的權(quán)重模型.pt轉(zhuǎn)換成onnx的,請(qǐng)點(diǎn)擊以下鏈接:
yolo的模型轉(zhuǎn)換權(quán)重pt文件轉(zhuǎn)onnx(1)
yolo的模型轉(zhuǎn)換權(quán)重pt文件轉(zhuǎn)onnx(1)_yolov5 pt轉(zhuǎn)onnx_耳語(yǔ)ai的博客-CSDN博客
參考文章:
檢查pytorch是否安裝成功、查看torch和cuda的版本
超詳細(xì) Ubuntu安裝PyTorch步驟
ubuntu18.04安裝顯卡驅(qū)動(dòng)(四種方式)文章來源:http://www.zghlxwxcb.cn/news/detail-716434.html
Ubuntu20.04 安裝tensorRT
參考鏈接:yolov5部署之環(huán)境配置及源碼測(cè)試_yolov5環(huán)境測(cè)試_Christo3的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-716434.html
到了這里,關(guān)于Ubuntu20.04配置深度學(xué)習(xí)環(huán)境yolov5最簡(jiǎn)流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!