首先從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是由于遠程登陸了服務器的原因,可忽略也可自行解決。