ubuntu 20.04 GPU 装darknet(未编译opencv)

简介: ubuntu 20.04 GPU 装darknet(未编译opencv),本人博客,从csdn搬运

目的:装cudnn->装ubuntu下的darknet
下载了deb 最上层的ubuntu版本的deb,安装之后还是不识别
下载archive 的版本 基于windows 经验 优先下载的11.4版本的cudnn配11.6的cuda,不好使
xz -d *.tar.xz 解压得到tar文件
tar -xvf *.tar 解压出来文件夹
解压出来的11.5cudnn也不支持,上网查找,说可能darknet不支持8以上的cudnn
很迷 因为我的win上的cuda版本是11.6

由此上网查找cuda版本
确实想过安装一个低版本的cuda 使用ananconda来回切换可能还蛮帅的 不过没空 所以在网上找了一个新版本的darknet
https://codechina.csdn.net/mirrors/alexeyab/darknet?utm_source=csdn_github_accelerator
编译通过,暂时不想编译opencv,编译配置如下,

GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=0
AVX=0
OPENMP=0
LIBSO=0
ZED_CAMERA=0
ZED_CAMERA_v2_8=0

对所有的cuda路径相关进行修改


ifeq ($(GPU), 1)
COMMON+= -DGPU -I/usr/include/
CFLAGS+= -DGPU
ifeq ($(OS),Darwin) #MAC
LDFLAGS+= -L/usr/lib/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
else
LDFLAGS+= -L/usr/lib/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
endif
endif

ifeq ($(CUDNN), 1)
COMMON+= -DCUDNN
ifeq ($(OS),Darwin) #MAC
CFLAGS+= -DCUDNN -I/usr/include
LDFLAGS+= -L/usr/lib/cuda/lib64 -lcudnn
else
CFLAGS+= -DCUDNN -I/usr/include
LDFLAGS+= -L/usr/lib/cuda/lib64 -lcudnn
endif
endif

编译通过,
提示
error while loading shared libraries: libcudnn.so.8: cannot open shared object file: No such file or directory
这里说一下我的cuda 是sudo apt-get 下载的所以目标目录和很多方式都不大一样 不在usr/local 在下面这个路径

(base) rui@ubuntu-server:~/darknet-master$ whereis cuda
cuda: /usr/lib/cuda /usr/include/cuda.h

这里注意修改路径
export LD_LIBRARY_PATH="/usr/lib/cuda/lib64"
再次调用编译好的darknet

(base) rui@ubuntu-server:~/darknet-master$ export LD_LIBRARY_PATH="/usr/lib/cuda/lib64"
(base) rui@ubuntu-server:~/darknet-master$ ./darknet
usage: ./darknet <function>

看起来还不错
运行一下测试语句

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

新的报错出现了

Could not load library libcudnn_ops_infer.so.8. Error: libcublas.so.11: cannot open shared object file: No such file or directory

这里注意,之前的cudnn的拷贝目标地址我参考的如下文章
https://blog.csdn.net/ai_faker/article/details/111687801
执行的语句类似于

sudo cp cuda/include/cudnn*.h /usr/include/
sudo cp cuda/lib64/libcudnn* /usr/lib/cuda/lib64/
sudo chmod a+r /usr/include/cudnn.h
sudo chmod a+r /usr/lib/cuda/lib64/libcudnn*
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

也就是说我的路径位置在就是上述两个目标位置 先去两个目标位置看看这玩意有没有

(base) rui@ubuntu-server:/usr/lib/cuda/lib64$ ls
libcudnn_adv_infer.so           libcudnn_cnn_infer.so.8.2.4     libcudnn_ops_infer_static.a
libcudnn_adv_infer.so.8         libcudnn_cnn_infer.so.8.3.3     libcudnn_ops_infer_static_v8.a
libcudnn_adv_infer.so.8.2.4     libcudnn_cnn_infer_static.a     libcudnn_ops_train.so
libcudnn_adv_infer.so.8.3.3     libcudnn_cnn_infer_static_v8.a  libcudnn_ops_train.so.8
libcudnn_adv_infer_static.a     libcudnn_cnn_train.so           libcudnn_ops_train.so.8.2.4
libcudnn_adv_infer_static_v8.a  libcudnn_cnn_train.so.8         libcudnn_ops_train.so.8.3.3
libcudnn_adv_train.so           libcudnn_cnn_train.so.8.2.4     libcudnn_ops_train_static.a
libcudnn_adv_train.so.8         libcudnn_cnn_train.so.8.3.3     libcudnn_ops_train_static_v8.a
libcudnn_adv_train.so.8.2.4     libcudnn_cnn_train_static.a     libcudnn.so
libcudnn_adv_train.so.8.3.3     libcudnn_cnn_train_static_v8.a  libcudnn.so.8
libcudnn_adv_train_static.a     libcudnn_ops_infer.so           libcudnn.so.8.2.4
libcudnn_adv_train_static_v8.a  libcudnn_ops_infer.so.8         libcudnn.so.8.3.3
libcudnn_cnn_infer.so           libcudnn_ops_infer.so.8.2.4     libcudnn_static.a
libcudnn_cnn_infer.so.8         libcudnn_ops_infer.so.8.3.3     libcudnn_static_v8.a

显然,有的,首先,排除我没有拷贝过来,那么问题就在于没有缺个软连接
把包含路径写入ld时候会报错

(base) rui@ubuntu-server:/etc/ld.so.conf.d$ sudo ldconfig
/sbin/ldconfig.real: /usr/lib/cuda/lib64/libcudnn.so.8 不是符号链接

/sbin/ldconfig.real: /usr/lib/cuda/lib64/libcudnn_ops_infer.so.8 不是符号链接

/sbin/ldconfig.real: /usr/lib/cuda/lib64/libcudnn_adv_infer.so.8 不是符号链接

/sbin/ldconfig.real: /usr/lib/cuda/lib64/libcudnn_ops_train.so.8 不是符号链接

/sbin/ldconfig.real: /usr/lib/cuda/lib64/libcudnn_cnn_infer.so.8 不是符号链接

/sbin/ldconfig.real: /usr/lib/cuda/lib64/libcudnn_adv_train.so.8 不是符号链接

/sbin/ldconfig.real: /usr/lib/cuda/lib64/libcudnn_cnn_train.so.8 不是符号链接

执行了一坨创建软连接的语句


sudo ln -sf /usr/lib/cuda/lib64/libcudnn_ops_infer.so.8.2.4 /usr/lib/cuda/lib64/libcudnn_ops_infer.so.8
sudo ln -sf /usr/lib/cuda/lib64/libcudnn_adv_infer.so.8.2.4 /usr/lib/cuda/lib64/libcudnn_adv_infer.so.8
sudo ln -sf /usr/lib/cuda/lib64/libcudnn_ops_train.so.8.2.4 /usr/lib/cuda/lib64/libcudnn_ops_train.so.8
 sudo ln -sf /usr/lib/cuda/lib64/libcudnn_cnn_train.so.8.2.4 /usr/lib/cuda/lib64/libcudnn_cnn_train.so.8
 sudo ln -sf /usr/lib/cuda/lib64/libcudnn_adv_train.so.8.2.4 /usr/lib/cuda/lib64/libcudnn_adv_train.so.8
sudo ln -sf /usr/lib/cuda/lib64/libcudnn_cnn_infer.so.8.2.4 /usr/lib/cuda/lib64/libcudnn_cnn_infer.so.8
sudo ldconfig

没有用
根据调查 大概率是cuda版本不对
然后执行了下面这条语句
conda install cudatoolkit==11.1.1
下载了之后还是找不到,反向推理不是没下是路径不对,因为默认打开的anaconda环境,而且用conda下载的 ,所以大概率在conda下,而conda 下的环境我没有加到过LD路径
把路径加到/etc/ld.so.conf.d下的随便那个文件里
/home/rui/anaconda3/lib
然后
sudo ldconfig
然后回到darknet 路径下面
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

bicycle: 99%
dog: 100%
truck: 93%
然后再拿随便什么数据集测试一下训练语句,成了的话就先这样

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
1月前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
3878 3
|
1月前
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
73 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
158 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
1月前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
109 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
|
1月前
|
PyTorch TensorFlow 算法框架/工具
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
本文提供了在Ubuntu 18.04操作系统的NVIDIA Jetson平台上安装深度学习和计算机视觉相关库的详细步骤,包括PyTorch、OpenCV、ONNX、TensorFlow等。
51 1
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
|
1月前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
2月前
|
并行计算 JavaScript 算法
opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
这篇文章介绍了如何在Windows 10上使用Visual Studio 2017成功编译OpenCV 4.5.1及其contrib模块和CUDA支持,并解决了编译过程中的问题,如项目文件无效、cmake工具问题,并添加了Qt和JavaScript支持,同时提供了参考链接。
opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
|
2月前
|
JavaScript 计算机视觉 C++
win10+vs2017+opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
这篇文章介绍了如何在Windows 10系统上使用Visual Studio 2017和OpenCV 4.5.1(含contrib模块和CUDA支持)成功编译OpenCV,并解决了编译过程中遇到的问题,如项目文件无效、cmake工具问题、添加Qt和JavaScript支持,并提供了参考链接和cmake配置文件。
win10+vs2017+opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
321 3
|
1月前
|
Ubuntu 编译器 开发工具
香橙派5Pro+虚拟机Ubuntu18.04交叉编译+Opencv4.7
香橙派5Pro+虚拟机Ubuntu18.04交叉编译+Opencv4.7
下一篇
无影云桌面