【无标题】ZED相机+yolov4+Ubuntu20.04+Cuda11.7+cudnn8进行物体检测

一、环境

Ubuntu 20.04
Cuda 11.7
cudnn8
Opencv
python3.8
Cmake
ZED SDK
Python API

二、环境配置

2.1 使用docker镜像

这里可以参考stereolabs/zed-yolo/docker
但是最好自己重新编写Dockerfile,然后按照readme文件的方法构建镜像,因为官方给出的dockerfile太旧了,我当时尝试很多遍都失败了

2.2 在主系统配置环境

按照官方文档给出的方法安装环境就可以了。
How to Use YOLO with ZED
注意!

Cuda版本一定要与ZED SDK对应,在安装好ZED SDK之后,可以在
/usr/local/zed/tools/ZED Diagnostic 对相机检测一下,看看版本有没有问题以及相机是否成功连接在了USB3.0接口上。

如果要用C++运行,那么最好把cmake升级一下,因为原来的cmake版本可能很旧。

三、下载darknet

git clone https://github.com/AlexeyAB/darknet.git

四、C++ 运行darknet模块

4.1 修改MakeFile文件

//根据自己ZED相机种类来进行对应的设置
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=0
LIBSO=1
ZED_CAMERA=1
ZED_CAMERA_v2_8=0

# set GPU=1 and CUDNN=1 to speedup on GPU
# set CUDNN_HALF=1 to further speedup 3 x times (Mixed-precision on Tensor Cores) GPU: Volta, Xavier, Turing and higher
# set AVX=1 and OPENMP=1 to speedup on CPU (if error occurs then set AVX=0)
# set ZED_CAMERA=1 to enable ZED SDK 3.0 and above
# set ZED_CAMERA_v2_8=1 to enable ZED SDK 2.X

USE_CPP=1
DEBUG=1
//查看自己显卡,找到对应的算力并修改
ARCH= -gencode arch=compute_35,code=sm_35 \
      -gencode arch=compute_50,code=[sm_50,compute_50] \
      -gencode arch=compute_52,code=[sm_52,compute_52] \
	    -gencode arch=compute_61,code=[sm_61,compute_61]

//77行需要把NVCC指定到cuda位置
NVCC=/usr/local/cuda-11.7/bin/nvcc

4.2 编译

cd darknet
make

4.3下载权重地址

编译成功之后需要下载权重地址。我是在yolov4.weights文件找到的。

4.4 测试

4.4.1 图片
./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg
4.4.2 相机
./uselib data/coco.names cfg/yolov4.cfg yolov4.weights zed_camera
4.4.3 可能遇到的问题

1、相机打不开
ZED 3D相机需要在USB3.0接口才可以正常使用,但是电脑主机前面的USB3.0接口可能有时候会失灵,于是就会检测不到ZED相机,主机后面还有USB3.0接口,可以在那些接口试一试。
2、使用相机检测的时候可能报错“核心段错误”(这个有点记得不太清楚了)之类的,有可能是因为在MakeFile文件中设置ZED_CAMERA_v2_8=1,可以把这个改成ZED_CAMERA_v2_8=0,并且设置 ZED_CAMERA=1重新编译并运行试一下。

五、python运行yolov4

5.1 安装ZED Python

可参考Stereolabs ZED - Python API.

5.2 下载代码

https://github.com/stereolabs/zed-yolo.git

5.3 修改文件zed-yolo文件

网上说如果用原来这个代码文件编译可能会报错,因为最新cudnn是8.x版本的,那么要对文件进行修改
1、删除libdarknet文件,下载darknet文件(git clone https://github.com/AlexeyAB/darknet.git),并且把darknet文件改成libdarknet文件。
2、设置MakeFile文件

//根据自己ZED相机种类来进行对应的设置
GPU=1
CUDNN=1
CUDNN_HALF=0
OPENCV=1
AVX=0
OPENMP=0
LIBSO=1
ZED_CAMERA=1
ZED_CAMERA_v2_8=0

3、

cd libdarknet
make

4、进入zed_python_sample文件,修改darknet_zed.py

//将路径改成libdarknet.so的绝对路径
else:
    lib = CDLL("/home/huang/program/zed-yolo-master/libdarknet/libdarknet.so", RTLD_GLOBAL)

5、下载权重
6、原来的代码是yolov3-tiny的,要改成yolov4需要在darknet_zed.py做以下更改:

//334335行(原来)
config_path = darknet_path + "cfg/yolov3-tiny.cfg"
weight_path = "yolov3-tiny.weights"

改成(这个我有点记不太清楚了,如果报错,可以根据错误提示进行相应的修改

//334335行(现在)
config_path = darknet_path + "cfg/yolov4.cfg"
weight_path = "yolov4.weights"

7、进入zed_python_sample目录,运行

python3 darknet_zed.py

然后就可以识别成功。

参考

[1]stereolabs官方文档
[2]Ubuntu18.04用Zed结合yolo进行目标检测by努力自律开心
[3]AlexeyAB/darknet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值