基于EXSi的虚拟机Centos7上搭建YOLO图像检测环境

文中用到的文件资料 提取码:c7f6

1.CentOS与EXSi上的显卡实现直通

chrome登录EXSi启用显卡直通


登录EXSi

启用显卡

如果显卡是N卡系列,则可能还需要如下操作,笔者在直通N卡TITAN X的时候遇到了一些坑
N卡图像模块无法直接进行启用 需要对下面的音频模块(High Definition Audio)进行启用 音频启用后图像模块会自动启用


image.png

完成上述操作后,重启服务器,再次通过chrome进入对应IP网页
直通Quadro K4200显卡步骤1

直通Quadro K4200显卡步骤2

直通Quadro K4200显卡步骤3

如果是N卡系列 还需要在宿主机中进行如下设置:
找到虚拟机的vmx文件:


找到虚拟机的vmx文件

在其中添加内容: hypervisor.cpuid.v0 = "FALSE"
在vmx文件中进行配置

然后重启宿主机

登录虚拟机 即可查询显卡已启用

lspci | grep -i nvidia #查询显卡信息
Quadro K4200显卡直通成功

TITAN X显卡直通成功

2.安装对应显卡驱动

安装必要编译器环境:

sudo yum install gcc    
sudo yum install gcc-c++ 

安装kernel-devel(此处要与源码版本一致)

ls /boot | grep vmlinu #查询源码版本信息

源码版本为3.10.0-862.el7.x86_64

对应的kernel-devel-3.10.0-862.el7.x86_64.rpm包 若找不到则自行百度下载

rpm -ivh kernel-devel-3.10.0-862.el7.x86_64.rpm # 安装kernel

下载对应英伟达驱动(此处下载版本为Quadro K4200)英伟达驱动网址

Quadro K4200驱动下载界面

下载完后, 需要禁用系统默认的nouveau

vi /lib/modprobe.d/dist-blacklist.conf

将nvidiafb注释掉。并在下方添加两行

#blacklist nvidiafb
blacklist nouveau
options nouveau modeset=0

再在命令行输入 重建initramfs image

mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak 
dracut /boot/initramfs-$(uname -r).img $(uname -r) 

重启输入 若无输出则表示禁用成功

lsmod | grep nouveau

进行英伟达驱动安装

# 修改运行级别为文本模式
systemctl set-default multi-user.target 
# 安装驱动 一直yes/ok即可 界面不动等一下就行
./NVIDIA-Linux-x86_64-430.50.run
# 修改运行级别回图形模式
systemctl set-default graphical.target 
# 重启
reboot
# 重启后
nvidia-smi # 查看驱动是否安装成功 若有输出即安装成功

# 英伟达驱动卸载命令
sh NVIDIA-Linux-x86_64-430.50.run --uninstall

3.安装CUDA9.0以及cuDNN

cuda_9.0.176_384.81_linux.run以及对应的CUDNN在文章开始的文件资料中有 自行下载 下载完后直接安装

sudo sh cuda_9.0.176_384.81_linux-run.run

在这里我们已经在上述第二步骤自己安装了匹配的英伟达驱动,所以第一项Driver出来的时候选择N 后面全是Y ,即可。安装后在用户根目录下的.bashrc文件中加入如下内容:

export PATH=$PATH:/usr/local/cuda-9.0/bin    
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64  
# 保存退出
source .bashrc (立即生效文件)
# 如果是全环境变量(所用用户都能使用),需要在/etc/profile文件加入上面的几句话

下载对应CUDA的CUDNN版本 进行解压

tar -xzvf cudnn-9.0-linux-x64-v7.1.tgz

复制相关文件到cuda特定目录下(我的cuda安装目录为/usr/local/cuda-9.0/)

sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64

修改文件权限 并更新软连接

sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*
cd /usr/local/cuda-9.0/lib64
sudo rm -rf libcudnn.so libcudnn.so.7
sudo ln -s libcudnn.so.7.1.4 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so

4.安装opencv

添加源并下载安装依赖库

sudo rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
sudo rpm –import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro 
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm 
sudo yum install epel-release gcc gcc-c++ cmake python-devel numpy gtk2-devel libdc1394-devel libv4l-devel gstreamer-plugins-base-devel
yum install -y vim epel-release
yum repolist
yum install -y ffmpeg
yum install ffmpeg-devel

下载并安装OpenCV

wget https://github.com/opencv/opencv/archive/3.4.4.zip
unzip 3.4.4.zip
cd opencv-3.4.4
mkdir release
mkdir install
cd release
# 执行下面这个语句时 可能会出现ippcv下载停滞问题
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=path/to /install -D BUILD_TESTS=OFF ..
make
sudo make install

出现IPPCV下载停滞问题:
直接下载对应ippcv包(这里是ippicv_2019_lnx_intel64_general_20180723.tgz)移动到一定位置(这里移动到了opencv文件夹)修改3rdparty/ippcv/ippicv.cmake再重新cmake即可

# 将47行的
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/"
# 改为手动下载的文件的本地路径(也就是将网络下载的模式改为本地文件下载的模式):
"file:/root/opencv-3.4.4/" #(仅供参考,根据自己的路径填写)

添加库路径(创建opencv.conf文件)

vi /etc/ld.so.conf.d/opencv.conf

输入/usr/local/lib,并保存退出然后进行添加profile环境变量

vi /etc/profile

在末尾加入:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

添加bash环境变量:

vi /etc/bash.bashrc

在末尾加入:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

最后更新环境变量并更新系统库缓存:

source /etc/profile
source /etc/bash.bashrc
sudo ldconfig

重启电脑 输入如下指令查看opencv是否安装成功

pkg-config --cflags opencv
pkg-config --modversion opencv

5.安装YOLO

---安装基础版yolo---

git clone https://github.com/pjreddie/darknet.git
cd darknet
# 修改Makefile
vim Makefile

对文件做如下修改

GPU=1    # 使用GPU训练,若有置为1,可根据自己的需要调整
CUDNN=1  # 这里已经安装了cudnn所以设置1
OPENCV=1 # 这里已经安装了opencv所以设置1
OPENMP=0
DEBUG=0

保存并退出 运行测试命令

./darknet

若有输出则为成功

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容