- 地址:https://github.com/AlexeyAB/darknet
- 源码是c的不是python的,所以配置稍微有点麻烦:
- 首先要先配好环境,否则编译会出错,就算编译不出错,运行也会出错,环境要求看官方文档(也就是上面这个网站首页展示的那个超长的md文件):由于服务器之前装好了cuda10.0和cudnn7.3了,所以我只需要装opencv就行,装opencv可以看这篇blog: https://blog.csdn.net/Wangguang_/article/details/85762705,其中opencv源码包被墙卡了下载很慢,这里给下载好的资源:https://download.csdn.net/download/weixin_44326452/12414819
- 然后把整个repos下载下来,如果要在服务器运行就放到服务器上去,这里建议可以先fork,然后用G码云导入到G码云账号,再用G码云下载,不会被墙卡,比较快
- 接着要编译产生一个darknet的可执行文件,linux是darknet,windows是darknet.exe,我是在linux服务器上运行的,所以是darknet。我是用make,因为服务器的cmake是3.10的,要求cmake高于3.12,所以用make,也不麻烦,make之前按官方文档说明和自己的需求修改一些变量即可:
- 我由于是服务器,所以也没有摄像头什么的,我是这样的:
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=0
AVX=0
OPENMP=1
LIBSO=1
ZED_CAMERA=0 # ZED SDK 3.0 and above
ZED_CAMERA_v2_8=0 # ZED SDK 2.X
- 然后开始编译,cd到这个repos的目录下,
make
即可;如果make过程出错可能是环境配置出了问题,比如找不到nvcc,如果你在自己的账号下是有nvcc的只是在root账号下编译时找不到nvcc,可以先在自己账号下where nvcc
,然后复制这个地址,再进入root账号,修改makefile的这一行:NVCC=nvcc
,改为NVCC=xxx
,xxx是你刚刚where nvcc
返回的地址,我的是这样的NVCC=/app/common/cuda/10.0/bin/nvcc
;如果提示找不到libso什么的,就是PATH和LD_LIBRARY_PATH没有弄好,要加上这两句:
export PATH=/usr/local/cuda-xx.x/bin$PATH:
export LD_LIBRARY_PATH=/usr/local/cuda-xx.x/lib64$LD_LIBRARY_PATH:
这里的xx.x改成你的cuda驱动版本。
- 注意如果make失败或者出问题,解决完环境问题重新make前要先
make clean
- make成功会多出来一个darknet的可执行文件,chmod +x darknet,这样准备工作就完成了,接下来就可以为所欲为了
- 比如我想跑yolov4在自己的数据集上,就按官方指引这样:https://github.com/lovedoubledan/darknet#how-to-train-to-detect-your-custom-objects