ubuntu实现yolo v3编译
系统:Ubuntu16.04
NVIDIA显卡驱动:418
cuda:10.1
cudnn:7.6.4
opencv:3.20
一、显卡驱动、cuda、cudnn安装:
参考之前的博客:
https://blog.csdn.net/weixin_43318717/article/details/103612979
二、opencv安装:
同样参考之前的博客:
https://blog.csdn.net/weixin_43318717/article/details/103624385
三、yolo v3配置:
1.下载darknet
git clone http://github.com/pjreddie/darknet.git
也可手动下载:
https://github.com/pjreddie/darknet
2.下载后解压进入darknet文件夹,打开Makefile文件,按如下修改:
GPU=1
OPENCV=1
NVCC=/usr/local/cuda-10.1/bin/nvcc
修改完成后在darknet目录下开始编译:
make
测试darknet:
./darknet imtest data/eagle.jpg
至此darknet安装完成。
3.测试
(1)下载YOLO权重文件,在darknet目录下新建weights文件夹,将下载好的weights文件复制到weights文件夹下:
yolo.weights:
https://pjreddie.com/media/files/yolo.weights
yolov3.weights:
https://pjreddie.com/darknet/yolo/
(2)进入darknet目录下的cfg文件夹,打开yolov3.cfg文件,修改batch 和subdvisions:
batch=1
subdivisions=1
(3)进入darknet目录下的src文件夹,打开gemm.c文件,修改time_gpu函数:
将 time_gpu 函数中的
cudaThreadSynchronize();
改为:
cudaDeviceSynchronize();
(4)在etc目录下找到ld.so.conf文件,终端输入:
sudo gedit /etc/ld.so.conf
在文件中加上一行(其实就是opencv的安装路径):
/usr/loacal/lib
终端再输入:
sudo ldconfig
(5)修改bash.bashrc文件,终端输入:
sudo gedit /etc/bash.bashrc
在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
终端再输入:
source /etc/bash.bashrc
(6)单幅图像测试:
在darknet目录下,终端输入:
./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/dog.jpg
./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/giraffe.jpg
./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/horses.jpg
./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/kite.jpg
./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/person.jpg
(7)实时视频测试:
在darknet目录下,终端输入:
./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights
参考链接:
https://blog.csdn.net/u014797226/article/details/78429936 (Ubuntu16.04配置Darknet实现YOLO)
https://blog.csdn.net/gzj_1101/article/details/78651650 (Ubuntu16.04配置安装darknet)
http://blog.csdn.net/tmosk/article/details/76578082 (安装darknet /usr/bin/ld:找不到 -lippicv 或者nvcc)
https://pjreddie.com/darknet/yolo/ (官网链接:YOLO: Real-Time Object Detection)
https://blog.csdn.net/csdn_zhishui/article/details/83751944 ([YOLO] darknet: ./src/cuda.c:36: check_error: Assertion `0’ failed. 已放弃 (核心已转储))