darknet的安装、用训练好的YOLOv3权重测试、训练自己的模型(包括本人在运行时的报错及解决方法)

Part1:下载并编译darknet(此部分是无CUDA,无OpenCV,如果想用OpenCV和CUDA,看完该部分后继续part1补充。否则跳过补充部分)。

1.在terminal执行git clone https://github.com/pjreddie/darknet.git。

2.然后切换到darknet目录下

3.编译

三步操作代码如下:

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

4.如果执行顺利的话,输入./darknet,将会得到如下结果。至此part1部分结束。

 

备注:到这没有问题就直接看part2,有问题在看这里。前两步基本不会出现问题,第三步可能因为编译所需的东西并未安装而出现问题,如我在安装时候,因为之前并未安装g++而报错,错误如下:

g++ -Iinclude/ -Isrc/ -Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC -Ofast -c ./src/image_opencv.cpp -o obj/image_opencv.o
make: g++: Command not found
Makefile:86: recipe for target 'obj/image_opencv.o' failed
make: *** [obj/image_opencv.o] Error 127

解决办法:sudo apt-get install g++

Part1补充:

1.用CUDA:

打开darknet文件,然后找到makefile文件,把GPU=0 改成GPU=1.

完成之后在终端make一下

2.用OpenCV:

打开darknet文件,然后找到makefile文件,把OPENCV=0 改成OPENCV=1.

完成之后在终端make一下。(在2用OpenCV时,我make的时候出了bug:https://mp.csdn.net/console/editor/html/107285616,看对你是否有帮助。)

如果电脑配置可以,我觉得都可以改成1.改完如下

改完别忘了make一下。

3.可以用以下语句测试一下OpenCv是否安装好:

./darknet imtest data/eagle.jpg

 是不是像下面一样停不下来,停不下来就说明你的OpenCV好用,Ctrl+C来结束他吧。

关于使用GPU的修改,YOLO官方网站上给的操作只有这些,但是我看很多博客上也在Makefile文件修改了一些其他,为了防止后期的错误发生,在此处最好修改一下。 加黑的是修改后的自己的路径,注释的是原来的路径。

NVCC=/usr/local/cuda-10.1/bin/nvcc # NVCC=nvcc 修改为自己的路径

ifeq ($(GPU), 1) 
#COMMON+= -DGPU -I/usr/local/cuda/include/
COMMON+= -DGPU -I/usr/local/cuda-10.1/include
CFLAGS+= -DGPU
#LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand
LDFLAGS+= -L/usr/local/cuda-10.1/lib64 -lcuda -lcudart -lcublas -lcurand
endif

修改完后记得make clean一下,然后再make.

备注:查找NVCC的安装路径的方法:which nvcc

Part2:下载权重、测试事例

分别执行下面两行代码:

wget https://pjreddie.com/media/files/yolov3.weights
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

 执行完你将看到如下结果:(如果没用CUDA,速度可能比较慢。),如果你未用OpenCV,那么第二张图片不会自动弹出来,它位于darknet文件夹下predictions.jpg里,打开就可以看到了。

Part3:在VOC上训练YOLOV3

在这部分,你将从头开始训练

1.得到Pascal VOC Data数据集:

wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
tar xf VOCtrainval_11-May-2012.tar
tar xf VOCtrainval_06-Nov-2007.tar
tar xf VOCtest_06-Nov-2007.tar

按照这个操作下载速度可能有些慢,给个镜像源的链接,用迅雷下载超快https://pjreddie.com/projects/pascal-voc-dataset-mirror/

下载完成后在darknet里面新建一个VOC文件夹,把下载好的几个放进去,然后用上面的三个命令解压。

2.生成.txt文件:

txt文件格式如下。

<object-class> <x> <y> <width> <height>

 为了生成这些文件,我们需要在VOC下运行voc_label.py这个文件,这个文件存在scripts文件夹下,或者我们从这个地址下载。 

然后运行。

wget https://pjreddie.com/media/files/voc_label.py
python voc_label.py

运行完会生成5个txt文件,如下:

那个train.txt是下一步生成的,这步假装没看见。我们把2007的test当测试集,其他的作为训练集,训练数据的时候需要一个txt文件,因此我们把上面的除了2007test,整合到一起,运行下面语句即可,然后会生成一个train.txt,如上图所示。

cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt

3.修改配置文件:

 到darknet目录下找到cfg/voc.data,打开voc.data文件,如下所示。

  1 classes= 20
  2 train  = <path-to-voc>/train.txt
  3 valid  = <path-to-voc>2007_test.txt
  4 names = data/voc.names
  5 backup = backup
  #将第23行的路径改成自己得路径

4.下载预训练权重:

运行下面语句即可,但是速度很慢,可以单独从https://pjreddie.com/media/files/darknet53.conv.74下载下来,然后再放到darknet文件夹下。

wget https://pjreddie.com/media/files/darknet53.conv.74

 5.开始训练模型:

没有GPU很慢的,有就用第二个语句,-gpus根据实际情况自行修改。

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -gpus 0,1,2,3

6.测试模型:

将训练好的权重拷贝到weights文件夹下,改一下权重名,然后运行

./darknet detector test  cfg/voc.data cfg/yolov3-voc.cfg weights/yolov3.weights data/dog.jpg

即可。 

 

整体参考:YOLO 官方教程:https://pjreddie.com/darknet/yolo/

训练VOC数据集参考:https://blog.csdn.net/qq_34806812/article/details/81292151

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值