YOLO(三):用YOLOv3训练自己的数据集教程

版权声明:本文为博主原创文章,未经作者允许请勿转载。 https://blog.csdn.net/heiheiya https://blog.csdn.net/heiheiya/article/details/83507839

现在,我已经使用yolo_mark标注好了自己的数据集,接下来就可以进行训练的工作了。

数据集的标注请参考:YOLO(二):Yolo_mark使用教程

这里我使用的是darknet这个开源的项目,在linux上进行训练。

一、获取darknet

首先,在github上获取到darknet的源码。

git clone [email protected]:pjreddie/darknet.git

它的软件环境要求是:

  • OpenCV 2.x.x 和 OpenCV <= 3.4.0
  • cuDNN v5-v7
  • CUDA >= 7.5

我配置的是CUDA9.0,cuDNN7.0.5,OpenCV3.4.0。

二、编译

修改Makefile,因为我想使用GPU进行训练,并且有更好的可视化效果,所以我将GPU,CUDNN,OPENCV都设置为1。

执行make,会在当前目录下生成darknet可执行文件。

三、训练

因为我想用yolov3网络进行训练,所以我拷贝一份cfg/yolov3.cfg,另存为my_yolov3.cfg。

这里需要针对自己的数据集对my_yolov3.cfg做一些修改。

可以打开my_yolov3.cfg,搜索classes,将它的值修改为2,因为我数据集只有dog和cat两个类别。

搜索filters,将其值修改为21,(classes + 5)*3。

接着需要下载预训练权重,我这个下载的是darknet53.conv74:http://pjreddie.com/media/files/darknet53.conv.74

将标注的数据集拷贝到darknet/data目录下。

最后,标注数据集时使用的my_obj.data拷贝到darknet/cfg目录下。将my_train.txt和my_obj.names拷贝到darknet/data目录下。

一切准备就绪之后,就可以开始训练了。在终端输入如下命令:

darknet detector train cfg/my_obj.data cfg/my_yolov3.cfg darknet53.conv.74

训练过程中会在darknet/backup文件夹下保存若干个.weigths文件。

四、测试

训练完成之后,就可以对训练的模型进行测试了。我选择其中一个生成的.weights文件进行测试。

在终端输入:

./darknet detect cfg/my_yolov3.cfg backup/my_yolov3_10000.weights data/test.jpg

检测结果如下: 

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/83507839