Ubuntu18.04、CUDA8.0、cuDNN11.0的安装与配置以及Nvidia驱动的安装不再赘述,可查看另一篇文章:《ubuntu16.04/18.04安装卸载cuda10.0/10.1和cudnn图文说明》
。版本不同但安装方法大同小异。需要注意nvidia驱动、CUDA和cuDNN的版本号需要对应,低版本的驱动安装高版本的CUDA是不行的,会出现报错:
CUDA driver version is insufficient for CUDA runtime version Result = FAIL
具体版本对应信息可官网查看:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
注:下文中所用的文件在文章末尾可直接打包下载。
安装完CUDA后记得执行一下source ~/.bashrc
更新环境变量。
查看CUDA和cudnn版本来验证是否安装成功:
(1)查看CUDA是否安装成功:
nvcc -V
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make -j16
./deviceQuery
(2)查看cudnn:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
输入sudo ldconfig
后出现错误提示
/sbin/ldconfig.real:/usr/local/cuda-11.0/targets/x86_64-Linux/lib/libcudnn.so.8 不是符号连接
此处参考。
这种情况是软连接问题,执行一下命令:
sudo ln -sf /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn.so.8.0.2 /usr/local/cuda-11.0/targets/x86_64-linux/lib/libcudnn.so.8
注意具体的cuda版本号要正确,有几个软连接错误就改几个。改完后再sudo ldconfig就不报错了。
1.在安装配置完成环境后,去opencv官网下载源码。
2.下载opencv_contrib-4.4.0:github地址。这是一个opencv的额外扩展库。具体信息自己查或见此处。
3.切换到opencv的根目录,将opencv_contrib-4.4.0目录复制到opencv-4.4.0目录下。
4.若曾经安装过其他版本的opencv,卸载方法如下:
cd opencv-x.x.x/build
sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
cd /usr
sudo find . -name "*opencv*" | xargs sudo rm -rf
cd opencv-4.4.0
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.4.0/modules .. \
-DWITH_CUDA=1 \
-DENABLE_FAST_MATH=1 \
-DCUDA_FAST_MATH=1 \
-DWITH_CUBLAS=1 \
-DOPENCV_GENERATE_PKGCONFIG=1 \
-DCUDA_GENERATION=Pascal ..
(1)cmake的前提是要安装cmake工具。要注意命令最后的两个点,因为编译所需的文件在上级目录;
(2)如果opencv_contrib文件名不一样自己改一下。
make -j16
具体-j后面的数字根据cpu性能而定。
(1)报错:
Makefile:162:recipe for target ‘all’ failed make:*** [all] Error 2
老办法,谷歌百度一下,发现此贴及作者给出的解决办法:
作者(leaf918)在github此处提供了打包好的压缩包,可以点击直接点击此处下载此压缩包,然后将压缩包里的两个目录下的文件替换到下面两个目录中即可:
opencv/.cache/xfeatures2d/boostdesc
opencv/.cache/xfeatures2d/vgg
然后重新执行cmake,make命令。编译完成后执行sudo make install
安装。
pkg-config --modversion opencv4
输出版本号为4.4.0则成功。注:opencv4前的版本,此命令最后为opencv而不是opencv4。
如果提示:
Package opencv was not found in the pkg-config search path.
则可能是环境变量配置有问题,参考:《Ubuntu 16.04 OpenCV 源码安装、自定义环境变量 PKG_CONFIG_PATH》
1.darknet项目地址。
克隆源码到本地:
git clone https://github.com/AlexeyAB/darknet
cd darknet
2.修改Makefile:
可以用gedit、vim等打开Makefile,将以下几项修改:
其中GPU、CUDNN是使用GPU加速,OPENCV是编译时使用OPENCV。
执行 make -j16
,不出问题的话当前目录下会生成darknet可执行文件。
编译过程到70%左右时,我遇到了:
nvcc fatal : Unsupported gpu architecture ‘compute_20’
类似这样的错误提示。一番查找,我在Makefile做了如下修改:注释掉ARCH后面的内容,打开了GeForce RTX 2080TI…后面的内容,然后就很神奇地编译通过了。具体原因有人知道的话可以留言指教。
编译完成后,会在本地生成一个名为datknet的可执行文件,在darknet目录下执行:./darknet
,若提示如下则成功:
1.首先去下载官方训练好的权重文件,200+M,文件名为yolov4.weights,放到darknet目录下。下载速度可能会很慢,可以去找别人下载好的,也可以找我要。
2.测试:
检测一张图片
./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/dog.jpg
检测给定路径的单个视频
./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output test.mp4
检测给定路径的单个视频,并将检测结果保存为视频
./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights test.mp4 -out_filename res.avi
这里我截取了电影《憨豆先生的假期》最后一段人比较多的视频测试了效果:
YOLOv4测试《憨豆先生的假期》结尾片段
所用到的文件在百度云下载:
链接: https://pan.baidu.com/s/1ggJ1nxG5VdMC0tYR4SriJA 密码: b58i
文章不足之处望提出意见,遇到的问题也可以在下面留言。