ubuntu 16.04基于darknet實踐yolo cpu&gpu版

首先從github上下載darknet的代碼

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

成功之后便會在當前目錄下有一個darknet文件夾


CPU版

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

編譯成功后會生成一個 darknet 的可執(zhí)行文件,運行時執(zhí)行?./darknet?

如果需要使用GPU等可以修改 Makefile 中相應的參數(shù),修改完 Makefile 文件后需要再次 make 一下才能生效。

還需要安裝opencv,yolov3要求opencv版本在3.4.2以上。


安裝完opencv之后需要打開Makefile文件,將開頭的OPENCV=0修改為=1,退出之后進行make編譯。


如果make出現(xiàn)錯誤




解決方案

sudo apt install libopencv-dev

安裝完成之后再次進行make即可成功


接下來可以測試opencv是否安裝成功

./darknet imtest data/eagle.jpg

會出現(xiàn)很多張圖片


可以使用tree -L 2查看darknet的代碼結構

如果tree還未安裝可以使用sudo apt install tree進行安裝

之后輸入tree -L 2即可查看代碼結構


接下來需要下載一個預訓練模型(.weights文件)

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

網(wǎng)慢的話需要下載很久

之后就可以進行簡單測試

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


但是網(wǎng)上很多教程的命令是

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

我試的時候發(fā)現(xiàn)不能成功運行,會出現(xiàn)一個錯誤的類別然后卡住,目前不清楚原因是什么




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官網(wǎng)下載所需文件

之后粘貼到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

現(xiàn)在只剩下一個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

添加內(nèi)容

vim cuda.conf

添加內(nèi)容如下:

/usr/local/cuda-9.1/lib64

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

sudo ldconfig


再次進行測試

./darknet imtest data/eagle.jpg

會出現(xiàn)如下問題

解決方案:

更新Makefile中的內(nèi)容

改之前:


改為:


不知道為什么出現(xiàn)了nvidia驅(qū)動的問題

輸入nvidia-smi會報錯

Failed to initialize NVML: Driver/library version mismatch

該問題的解決方案是:重啟??!

重啟之后再次進行測試

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


可以成功檢測,最后的WARNING是由于遠程登陸了服務器的原因,可忽略也可自行解決。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容