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盲盒。
目录
相关文章
|
21天前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
77 43
|
19天前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
66 30
|
22天前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
34 12
|
2月前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
152 13
|
4月前
|
缓存 并行计算 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的相关信息。
129 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
4月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
284 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
4月前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
3月前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
6天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多种配置,包括CPU+GPU、FPGA等,适用于人工智能、机器学习和深度学习等计算密集型任务。本文整理了阿里云GPU服务器的优惠价格,涵盖NVIDIA A10、V100、T4等型号,提供1个月、1年和1小时的收费明细。具体规格如A10卡GN7i、V100-16G卡GN6v等,适用于不同业务场景,详情见官方页面。
50 11
|
2月前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考