pytorch版本YOLOV4配置和使用

目录

 

第一步,下载pytorch 源码

第二步,下载预训练模型

第三步,生成数据文件

第四步,训练


第一步,下载pytorch 源码

pytorch版本yolov4源码地址,感谢源码作者:

https://github.com/Tianxiaomo/pytorch-YOLOv4

第二步,下载预训练模型

源码作者提出两种方法:

1、下载darknet提供的weights文件,然后用他的代码进行转换(test成功,train的时候失败,不建议使用);

       这种方法经过尝试之后,发现,根据作者提供的源码,权重文件可以成功转换并使用,但是无法利用转换好的权重文件进行训练;原因是各个层的名称与作者定义网络的名称不一致;

     demo.py 使用darknet的weights;

      用darknet2pytorch.py 转为pth的模型;

      用程序models.py来测试转化好的模型;

2、下载作者训练好的权重文件(推荐):

作者给出了百度网盘的地址:

baidu

  • yolov4.pth(https://pan.baidu.com/s/1ZroDvoGScDgtE1ja_QqJVw Extraction code:xrq9)
  • yolov4.conv.137.pth(https://pan.baidu.com/s/1ovBie4YyVQQoUrC3AY0joA Extraction code:kcel)

第三步,生成数据文件

作者给出的:

For coco dataset,you can use tool/coco_annotatin.py.

# train.txt
image_path1 x1,y1,x2,y2,id x1,y1,x2,y2,id x1,y1,x2,y2,id ...
image_path2 x1,y1,x2,y2,id x1,y1,x2,y2,id x1,y1,x2,y2,id ...

生成的数据文件是作者给出的格式,第一列是图像路径,最好为绝对路径,后面是空格接,目标的左上角横坐标x1,左上角纵坐标y1,右下角横坐标x2,右下角纵坐标y2,区域类别标号,接空格,。。。。

无论用何种方法,能够生成该文件即可,由于我的标记数据是VOC格式的,所以我自己写代码把标记转为VOC格式;

如何生成数据以及相应的代码在:https://blog.csdn.net/h649070/article/details/107556454

第四步,训练

首先需要修改cfg.py文件的以下几个地方:

1、加入:

Cfg.gpu = '0'
Cfg.pretrained = 'path to yolov4.conv.137.pth'
Cfg.dataset_dir = ''
2、Cfg.batch = 16  修改为合适的值
3、Cfg.classes = 80 修改为实际值

4、修改为第三步中生成文件的路径;

Cfg.train_label = 'data/train.txt'
Cfg.val_label = 'data/val.txt'

5、修改中间结果路径,checkpoints 和 log的;

Cfg.checkpoints = 'checkpoints'
Cfg.TRAIN_TENSORBOARD_DIR = 'log'

开始训练即可;

这里有个坑,当pytorch版本不合适的时候,会出现一些错误,根据错误类型去修改版本

第五步:测试

 用程序models.py来测试转化好的模型;

如有侵权,联系作者删除谢谢。

你可能感兴趣的:(深度学习之源码学习,深度学习,pytorch)