美文网首页
ubuntu 16.04基于darknet实践yolo cpu&

ubuntu 16.04基于darknet实践yolo cpu&

作者: ccccxxxxcccc | 来源:发表于2019-03-13 17:47 被阅读0次

    首先从github上下载darknet的代码

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

    成功之后便会在当前目录下有一个darknet文件夹


    CPU版

    由于Makefile中默认的是cpu,所以不用修改Makefile文件,直接make

    编译成功后会生成一个 darknet 的可执行文件,运行时执行 ./darknet 

    如果需要使用GPU等可以修改 Makefile 中相应的参数,修改完 Makefile 文件后需要再次 make 一下才能生效。

    还需要安装opencv,yolov3要求opencv版本在3.4.2以上。

    安装完opencv之后需要打开Makefile文件,将开头的OPENCV=0修改为=1,退出之后进行make编译。


    如果make出现错误

    解决方案

    sudo apt install libopencv-dev

    安装完成之后再次进行make即可成功


    接下来可以测试opencv是否安装成功

    ./darknet imtest data/eagle.jpg

    会出现很多张图片

    可以使用tree -L 2查看darknet的代码结构

    如果tree还未安装可以使用sudo apt install tree进行安装

    之后输入tree -L 2即可查看代码结构

    接下来需要下载一个预训练模型(.weights文件)

    wget http://pjreddie.com/media/files/yolov1/yolov1.weights

    网慢的话需要下载很久

    之后就可以进行简单测试

    ./darknet yolo test cfg/yolov1.cfg yolov1.weights data/dog.jpg

    但是网上很多教程的命令是

    ./darknet detect cfg/yolov1.cfg yolov1.weights data/dog.jpg

    我试的时候发现不能成功运行,会出现一个错误的类别然后卡住,目前不清楚原因是什么


    GPU版

    需要先确保安装了opencv

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python

    如果提示没有安装pip 需要先进行安装sudo apt install python-pip

    首先修改Makefile文件中的一些信息

    将GPU、CUDA、OPENCV的值由0改为1

    将和cuda有关的路径改为相关的路径

    然后保存退出进行make

    此时会报错 cudnn.h 找不到

    需要安装cudnn

    首先去cudnn官网下载所需文件

    之后粘贴到cuda安装包路径下相应的位置

    sudo cp cuda/include/cudnn.h /usr/local/cuda-9.1/include

    sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.1/lib64

    sudo chmod 777 /usr/local/cuda-9.1/include/cudnn.h /usr/local/cuda-9.1/lib64/libcudnn*

    然后再次进行make

    但还是会报错

    提示说 libcudnn.so文件格式识别不到

    需要cd 到/usr/loacl/cuda-9.1/lib64/路径下

    删除libcudnn.so和libcudnn.so.7

    sudo rm libcudnn.so

    sudo rm libcudnn.so.7

    现在只剩下一个libcudnn.so.7.1.3的文件

    用libcudnn.so.7.1.3的文件来生成sudo rm libcudnn.so.7

    sudo ln -s libcudnn.so.7.1.3 libcudnn.so.7

    这时生成了libcudnn.so.7的文件,再用该文件生成libcudnn.so

    sudo ln -s libcudnn.so.7 libcudnn.so

    这时便生成了libcudnn.so文件

    至此,需要的文件已生成完毕

    然后

    make clean

    make

    即可完成编译

    之后进行测试

    ./darknet imtest data/eagle.jpg

    会报如下错误

    解决方案:

    cd /etc/ld.so.conf.d

    新建一个conf文件,比如命名为cuda.conf

    加权限

    sudo chmod 777 cuda.conf

    添加内容

    vim cuda.conf

    添加内容如下:

    /usr/local/cuda-9.1/lib64

    保存退出之后,还需要使文件生效

    sudo ldconfig

    再次进行测试

    ./darknet imtest data/eagle.jpg

    会出现如下问题

    解决方案:

    更新Makefile中的内容

    改之前:

    改为:

    不知道为什么出现了nvidia驱动的问题

    输入nvidia-smi会报错

    Failed to initialize NVML: Driver/library version mismatch

    该问题的解决方案是:重启!!

    重启之后再次进行测试

    ./darknet yolo test cfg/yolov1.cfg yolov1.weights

    可以成功检测,最后的WARNING是由于远程登陆了服务器的原因,可忽略也可自行解决。

    相关文章

      网友评论

          本文标题:ubuntu 16.04基于darknet实践yolo cpu&

          本文链接:https://www.haomeiwen.com/subject/bdktmqtx.html