主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

人工智能123

紧接着前几天的事:

之后,决定买一台整机玩玩。

而现在,主机终于回!来!了!主机回来干什么,当然是——配置环境。

老潘之前也有一些配置环境的文章,可以参考:

-_-|| 没想到那会写了这么多配置环境的文章,可能那会遇到的问题比较多吧...配环境什么的,其实只要严格按照步骤来一步一步配,基本上不会出现什么问题,出现问题一般都是我们 某一步没有走对,而退回去再走 比较麻烦而已。

而现在对于配环境来说可以是 轻车熟路了(前几年不知道踩了多少坑,到现在都印象深刻),严格按照步骤来,安装Ubuntu和配置深度学习环境,1个小时多就搞定了。

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

接下来略微详细地讲一下过程。

  • Windows下安装Ubuntu-18.04
  • 配置深度学习环境(Cuda+Cudnn+Pytorch+TensorRT)

主机长这样

先放一组图吧。

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

晚上开机还挺炫的,但其实对于老潘来说炫不炫不重要,性能好就行...

主机配环境

主机回来店家只给我装了Windows系统,对于老潘来说, 打游戏是次要的(哈哈哈哈...),忍住了先下载一个 鬼泣5玩玩的想法。先从Ubuntu 官方下载了官方的镜像包。

官方最新的Ubuntu是 20.10,但对于搞事的人来说,还是18.04版本好一些(之前实验室用的是16.04)。

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

开始配置双系统,双系统是必须的,Ubuntu可以搞深度学习,也可以当服务器使,Windows则可以应付一些游戏和其他应急应用。

关于如何将下载好的Ubuntu系统镜像制作成U盘、如何安装,老潘这里不赘述了。可以看以下这篇文章,介绍的很详细,我就是按照这个严格来执行的:

当然如果有问题欢迎交流,直接留言即可~

安装过程

虽然不赘述了,但还是简单过一下:

进入BIOS,选择Ubuntu启动U盘,然后开始安装Ubuntu:

其他一路点点点,然后简单分个区。

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

然后开始安装...

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

等待半小时,装好了!

设置SSH

为什么要设置 ssh,当然是想让这个Ubuntu充当一个服务器的作用,开启之后可以使用ssh登录去操作。

例如我,可以先把服务器开了,然后使用其他电脑,例如MAC,使用局域网通过SSH连接这个服务器即可。

怎么开启ssh呢?新的Ubuntu系统还没有安装SSH。

执行以下命令:

sudo apt install openssh-server
sudo systemctl start ssh.service

然后可以通过 netstat -lnp | grep 22查看下开启没。

如果想要每次启动自动开启SSH,可以这样:

sudo systemctl enable ssh

这样就差不多啦。

安装NVIDIA显卡驱动

默认Ubuntu安装的是 llvmpipe这个显卡驱动,这个是linux下的公用显卡驱动,现在需要换成NVIDIA的。

首先禁用 nouveau

执行 sudo gedit /etc/modprobe.d/blacklist.conf

加上以下这两句:

blacklist nouveau
options nouveau modest=0

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

保存后,然后执行:

sudo updata-initramfs -u
sudo reboot

重启后, Ctrl+Alt+F1切换到tty界面,关闭 lightdm(如果没有则不用管):

sudo service lightdm stop

然后更新一下apt源以及看一下系统推荐的NVIDIA驱动版本:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
ubuntu-drivers devices

根据推荐的驱动版本,安装NVIDIA驱动:

sudo apt-get install nvidia-driver-460

如果嫌慢,可以添加阿里或者清华源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup
sudo gedit /etc/apt/sources.list

备份之后打开文件,添加以下源即可:

# 阿里云源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# 源碼
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

# 清华大学源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# 源碼
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

别忘了添加之后,进行更新二连:

sudo apt-get update
sudo apt-get upgrade

这样就可以顺利的安装NVIDIA驱动了。

然后下载好以下 三个深度学习伴侣

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

开始安装吧!

安装Cuda、Cudnn

Cuda当然是必须要装的。

找到下载好的 11.1cuda环境包(现在出来11.2了),然后执行:

sudo sh cuda_11.1.0_455.23.05_linux.run

会出来一堆blabla的选项:

  • 1、确保你环境里头是否有旧的cuda,有的话建议删除
  • 2、同意条款..

  • 3、确认是否要安装驱动、安装demo...以及安装位置确定

  • 4、开始安装ing

对于老潘来说,上一步中已经安装了cuda驱动,不需要再装旧版的(新版驱动兼容旧版驱动匹配的cuda),所以这里就把 驱动选项去掉,其他的安装按照我的需求按部就班来就好。

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

注意
如果你没有root权限,无法使用 sudo,想要安装cuda也是可以的。只要自定义好安装位置即可,运行如下命令即可将cuda安装到当前home下的software文件夹内:

./cuda_11.1.0_455.23.05_linux.run --silent --toolkit --toolkitpath=$HOME/software/cuda --defaultroot=$HOME/software/cuda

不论咋样安装好之后会显示:

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

按照上面的要求配置环境变量即可:

(base) oldpan@oldpan-fun:~/software$ vim ~/.bashrc

将
export PATH=/usr/local/cuda-11.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH
添加到打开的文件中

(base) oldpan@oldpan-fun:~/software$ source ~/.bashrc
(base) oldpan@oldpan-fun:~/software$ 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

Cudnn

cudnn的安装就比较简单了,解决压缩包然后复制粘贴就行:

tar -xzvf cudnn-11.2-linux-x64-v8.1.1.33.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h

安装Anaconda

安装Anaconda也很简单,从这里下载好(不想下的看老潘整理文末的软件包):

然后 sh Anaconda3-2020.11-Linux-x86_64.sh就行。

安装好之后,配置conda以及pip清华源,参考以下文字即可:

安装Pytorch

安装Pytorch就比较简单了,如果不想自己编译,直接从官方按照你的Cuda版本和Cudnn版本安装即可:

https://download.pytorch.org/whl/torch_stable.html

安装好Pytorch之后,测试一下 cuda是否工作正常:

>>> import torch
>>> torch.cuda.is_available()
True
>>> torch.ones(1).cuda()
tensor([1.], device='cuda:0')
>>> torch.cudnn_is_acceptable(torch.ones(1).cuda())
True

OK~

TensorRT

TensorRT单独发一篇文章来说吧~

一些资源

配环境需要很多 软件包,例如:

  • Anaconda
  • Pytorch.whl
  • TensorRT
  • CUDA
  • CUDNN

有些可以在清华大学开源软件镜像站下载,但是TensorRT和CUDA、CUDNN需要从官方下而且需要注册而且很慢。

老潘整理了一些已经下载好的软件包。

公众号内回复 015获取,可以看看有没有你需要的:

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

想写的还有很多,下篇再讲(呼呼)。

如果有问题欢迎留言,欢迎关注「oldpan博客」公众号,老潘的全部家当都在这里了。很愿意与你交朋友~

参考

https://www.cnblogs.com/masbay/p/10745170.html
https://blog.csdn.net/ZPeng_CSDN/article/details/96726436

撩我吧

  • 如果你与我志同道合于此,老潘很愿意与你交流;
  • 如果你喜欢老潘的内容,欢迎关注和支持。
  • 如果你喜欢我的文章,希望点赞👍 收藏 📁 评论 💬 三连一下~

想知道老潘是如何学习踩坑的,想与我交流问题~请关注公众号「oldpan博客」。
老潘也会整理一些自己的私藏,希望能帮助到大家,点击神秘传送门获取。

Original: https://www.cnblogs.com/bigoldpan/p/14496622.html
Author: 老潘的博客
Title: 主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)



相关阅读

Title: Canny边缘检测

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

; 边缘检测发展

Canny 边缘检测是一种从不同视觉对象中提取有用结构信息并显着减少要处理的数据量的技术。它已广泛应用于各种计算机视觉系统。 Canny 发现,在不同的视觉系统上应用边缘检测的要求是比较相似的。因此,可以在各种情况下实施满足这些要求的边缘检测解决方案。边缘检测的一般标准包括:
1:以低错误率检测边缘,这意味着检测应准确捕捉图像中显示的尽可能多的边缘
2:从操作员处检测到的边缘点应准确定位在边缘的中心。
3:图像中的给定边缘应仅标记一次,并且在可能的情况下,图像噪声不应产生错误边缘。

Canny边缘检测的步骤

1:应用高斯滤波去平滑图像为了去除噪音的影响。
2:计算图像的x轴和y轴的梯度,并计算梯度的合方向
3:使用非极大值抑制,对那些伪边界点抑制
4:把min_max应用到上面得到的图像
5:通过滞后跟踪边缘:通过抑制所有其他弱且未连接到强边缘的边缘来完成边缘的检测。

高斯滤波

因为噪音的存在会轻易地影响到图像的边界,因此我们在进行边缘检测的开始要对图像进行平滑滤波,其中比较常用的滤波器就是高斯滤波,我们将其记做为H H H,其尺寸是( 2 k + 1 , 2 k + 1 ) (2k+1,2k+1)(2 k +1 ,2 k +1 )下面给出其表达式:
H i j = 1 2 π σ 2 e x p ( − ( i − ( k + 1 ) ) 2 + ( j − ( k + 1 ) ) 2 2 σ 2 1 < = i , j < = ( 2 k + 1 ) H_{ij} = \frac{1}{2\pi\sigma^2}exp(-\frac{(i-(k+1))^2+(j-(k+1))^2}{2\sigma^2} 1
举例给出一个当k = 2 k= 2 k =2的矩阵H H H:
H = 1 159 [ 2 4 5 4 2 4 9 12 9 2 5 12 15 12 5 4 9 12 9 4 2 4 5 4 2 ] H = \frac{1}{159}\begin{bmatrix}2&4&5&4&2\ 4&9&12&9&2\5&12&15&12&5\4&9&12&9&4\2&4&5&4&2\end{bmatrix}H =1 5 9 1 ​⎣⎢⎢⎢⎢⎡​2 4 5 4 2 ​4 9 1 2 9 4 ​5 1 2 1 5 1 2 5 ​4 9 1 2 9 4 ​2 2 5 4 2 ​⎦⎥⎥⎥⎥⎤​
记我们的图像矩阵为A A A,那么高斯滤波和我们图像做下面的卷积运算:
B = H ∗ A B = H * A B =H ∗A
使用H H H从左到右从上到下对原图像进行平滑处理。

计算图像的梯度大小和方向

首先给出计算梯度大小的公式:
G = G x 2 + G y 2 θ = a r c t a n ( G y G x ) G = \sqrt{G_x^2 + G_y^2} \ \theta = arctan(\frac{G_y}{G_x})G =G x 2 ​+G y 2 ​​θ=a r c t a n (G x ​G y ​​)
如下面的图像所示:虽然使用了arctan反三角函数,但是我们在这里却只使用了四个角度0 。 , 4 5 。 , 9 0 。 , 13 5 。 0^。,45^。,90^。,135^。0 。,4 5 。,9 0 。,1 3 5 。算出来的梯度距离那个方向近,我们就将其归为哪一类。例如:当θ ∈ [ 0 , 22.5 ] o r [ 157.5 , 180 ] \theta \in[0,22.5] or [157.5,180]θ∈[0 ,2 2 .5 ]o r [1 5 7 .5 ,1 8 0 ]时,我们将其映射到0 。 0^。0 。
如下面的图示:
主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

; 非极大值抑制

在一些实施方式中,算法将连续梯度方向分类为一小组离散方向,然后在前一步的输出(即,边缘强度和梯度方向)上移动3×3滤波器。 在每个像素时,如果其幅度不大于梯度方向上的两个邻居的大小,则抑制中心像素的边缘强度(通过将其值设置为0)。例如:
1:如果中心点梯度角度为0°(即边缘处于南北方向),如果其梯度幅度大于东部和西部方向上的像素的大小,则认为该点将被认为是在边缘上。
2:如果圆角梯度角度为90°(即边缘在东西方向上),如果其梯度幅度大于北部和南方方向的像素的大小,则将视线视为边缘。
3:如果圆角梯度角度为135°(即边缘处于东北 - 西南方向),如果其梯度大小大于西北部和东南部的像素处的大小,则将视线视为在边缘上方向,
4:如果圆角梯度角度为45°(即边缘处于西北部 - 东南方向),如果其梯度幅度大于东北和西南西北部的像素的大小,则视线被认为是在边缘上方向。
主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)
做一个试例:对于中心点A来说,其梯度角度为0,此时对其左右的两个点的梯度大小进行比较,如果该点的梯度大小大于其他两个,那么A点的梯度大小得以保留,否则将大小其抑制,设置为0。

双阈值

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)
在施加非最大抑制之后,剩余的边缘像素在图像中提供了更准确的真实边缘的表示。然而,一些边缘像素仍然是由噪声和颜色变化引起的。为了解释这些杂散的响应,必须用 弱梯度值滤除边缘像素,并具有高梯度值的边缘像素。这是通过选择高阈值和低阈值来实现的。如果边缘像素的梯度值高于高阈值,则标记为 强边像素。如果边缘像素的梯度值小于高阈值并且大于低阈值,则标记为 弱边缘像素。如果边缘像素的梯度值小于低阈值,则将抑制它。经验确定了两个阈值,并且它们的定义取决于给定输入图像的内容。

; 边缘跟踪滞后

到目前为止,强边像素肯定应该参与最终边缘图像,因为它们从图像中的真实边缘提取。但是,将有一些关于弱边缘像素的争论,因为这些像素可以从真正的边缘或噪声/颜色变化中提取。为了实现准确的结果,应拆除由后一种原因引起的弱边缘。通常,由真正边缘引起的弱边缘像素将连接到强边像素,而噪声响应是未连接的。要跟踪边缘连接,通过查看弱边缘像素及其8个连接的邻域像素来应用BLOB分析。只要有一个涉及BLOB的一个强边像素,可以将弱边缘点识别为应保留的。

opencv实现canny边缘检测

import cv2
import matplotlib.pyplot as plt
import numpy as np

img = cv2.imread('orginal.JPG', 0)
image = cv2.Canny(img, 100, 200, 5)

plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.axis('off')
plt.xticks([])
plt.yticks([])
plt.title('orginal image')

plt.subplot(122)
plt.imshow(image, cmap='gray')
plt.xticks([])
plt.yticks([])
plt.axis('off')
plt.title('Caany dection')

plt.show()
new = np.concatenate((img, image), axis=1)
cv2.imwrite('combined.jpg', new)

主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

结语

上文的认识大多来自于维基百科,还有一些内容没有写的,如果有哪些不足或者错误的地方还请各位uu前来指正。
有关canny的详细内容可阅读https://en.wikipedia.org/wiki/Canny_edge_detector

Original: https://blog.csdn.net/weixin_45931455/article/details/122483554
Author: @zhou
Title: Canny边缘检测