yolov4官方源码在自己的数据集上运行笔记

  • 地址: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
    • yolov4官方源码在自己的数据集上运行笔记_第1张图片
    • 然后把整个repos下载下来,如果要在服务器运行就放到服务器上去,这里建议可以先fork,然后用G码云导入到G码云账号,再用G码云下载,不会被墙卡,比较快
    • 接着要编译产生一个darknet的可执行文件,linux是darknet,windows是darknet.exe,我是在linux服务器上运行的,所以是darknet。我是用make,因为服务器的cmake是3.10的,要求cmake高于3.12,所以用make,也不麻烦,make之前按官方文档说明和自己的需求修改一些变量即可:yolov4官方源码在自己的数据集上运行笔记_第2张图片
    • 我由于是服务器,所以也没有摄像头什么的,我是这样的:
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 即可;注意,需要root权限,看不同服务器的用法,有的需要有root权限的账号,可以先su root然后输入root密码,也有的直接sudo 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
  • 注意如果make失败或者出问题,解决完环境问题重新make前要先make clean
  • make成功会多出来一个darknet的可执行文件,把这个文件放到build/darknet/x64路径下,这样准备工作就完成了,接下来就可以为所欲为了
  • 比如我想跑yolov4在自己的数据集上,就按官方指引这样:https://github.com/lovedoubledan/darknet#how-to-train-to-detect-your-custom-objects
  • 注意,训练的时候要在build/darknet/x64路径下运行,这点官方没说,有点坑,就是,你把编译生成的darknet文件放到这个路径下,然后在这个路径下运行这个文件,就可以训练了;还有就是,自己写的cfg文件也没说放哪里,其实放哪里都可以,只是你运行./darknet detector train data/obj.data yolo-obj.cfg yolov4.conv.137的时候,yolo-obj要加上相对路径,如果直接放在x64路径下就不需要改,如果放在x64/cfg/路径下就需要改为./darknet detector train data/obj.data cfg/yolo-obj.cfg yolov4.conv.137

你可能感兴趣的:(项目经验)