一 硬件条件:工作站 大版本主机 +4块 invidia 1080ti的gpu 实际测试,只能用一个,不知道四个都用的话如何设置,有知道的请告诉一下。
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
detect后 -i 0 或-i 1 等数字是gpu编号
二 操作系统 ubuntu 16.04
三 根据gpu型号安装对应版本的驱动程序/cuda版本/cudnn配置等,去nvidia官网或技术论坛
四/ yolov3安装,参考官网darknet的安装 https://pjreddie.com/darknet/yolo/
五/ 安装opencv,如果是大于3.0的版本,编译会出错,好象是darknet源代码中 image_opencv.cpp 中的mat类型转image会报错
六/基于五的解决方案是安装darknet当年编写时间前的opencv版本, 测试使用opencv2.4.11版本
------ 问题1: 官网给的版本安装会报错。找了一个热心网友改得版本,亲测可用。
https://blog.csdn.net/ljl1015ljl/article/details/100749835
给出的百度网盘:链接: https://pan.baidu.com/s/19AaTZUMqCanJFHU2tAGetw 提取码: ph4w
///以下是博客中内容
-
下载的opencv2.4.11源码
-
然后按着网上教程 修改了opencv的源代码
-
sudo apt-get install libopencv-dev
-
修改/data/opencv-2.4.11/modules/gpu/src/graphcuts.cpp
将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000) -
在usr/local下创建一个文件夹opencv2.4.11
不能直接创建,用root创建 不然没权限
如果不创建的话,自己改一下下面cmake语句中安装的位置 -
解析
opencv-2.4.11/build/lib/libopencv_highgui.so.2.4.11: undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0
这个错误 就是 后面编译其他项目会遇到这个错误,然后重新编译opencv 在cmake时,在后面加一句 -D BUILD_TIFF=ON ,这样tiff就会在编译opencv时自动编译好cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.11 -D WITH_CUDA=ON -D BUILD_PYTHON_SUPPORT=ON -D WITH_FFMPEG=OFF -D BUILD_EXAMPLES=ON -D BUILD_TIFF=ON ..
-
编译 make -j8
-
sudo make install
-
在 sudo gedit ~/.bashrc 文件后面添加以下两行
export PKG_CONFIG_PATH=/usr/local/opencv2.4.11/lib/pkgconfig export LD_LIBRARY_PATH=/usr/local/opencv2.4.11/lib
然后保存修改 source ~/.bashrc
这样 pkg-config --modversion opencv -
/以上是博客转载内容
----------- 按照上述方法安装好opencv2.4.11后,取darknet目录 修改makefile文件 gpu=1 opencv=1 cuda=1等。
-------------- 执行make一般能成功。
七 运行时可能会报错
------------在ubuntu下编译opencv程序后,执行报下面到错误:
error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory
解决方法:找到libopencv_开头到库的目录,在/usr/local/lib下面,在/etc/ld.so.conf.d/下面新建一个opencv.conf,里面写入/usr/local/lib,最后执行下sudo ldconfig -v即可。
https://blog.csdn.net/eric41050808/article/details/53673623
------------------ ./darknet: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file:
libcudart.so.8.0 不能找到
是库文件路径引发的问题,可以到/etc/ld.so.conf.d目录下,修改其中任意一份conf文件,(可以自建conf,以方便识别)将lib所在目录写进去,然后在终端输入 ldconfig 更新缓存。
本文该lib文件在/usr/local/cuda/lib64下,因此在/etc/ld.so.conf.d 创建了一个cuda.conf 文件,并加入/usr/local/cuda/lib64 内容,保存退出。
最后执行:sudo ldconfig 使文件生效