100%完美运行,期间踩过许多坑,数据集的坑、代码的坑都有。现在做一下总结,也希望后来者能快速上手,避免浪费不必要的时间。
写在前面,读者们就不要偷懒了,按照我这边的步骤一步一步操作是肯定能够成功的。鄙人踩过的大多数坑皆是因为耍小聪明。coco数据集的准备我在【Yolact数据集制作-labelme使用与转coco详解】已有详细介绍,按步骤操作即可
【Yolact数据集制作-labelme使用与转coco详解】
一、训练自己的数据与预测
1、训练自己的数据train.py
1.1准备权重文件
准备数据集和权重文件,数据集在第一章已经配置好,这里介绍权重文件
进入https://github.com/dbolya/yolact下载权重文件到根目录./weights文件夹下(weights文件夹自己创建)
对应权重文件如下:
For Resnet101, download resnet101_reducedfc.pth from here.
For Resnet50, download resnet50-19c8e357.pth from here.
For Darknet53, download darknet53.pth from here.
1.2 修改默认配置文件config.py
进入data文件夹下找到config.py打开,按自己的需求修改下面的内容
1.2训练数据
#使用默认基础配置yolact_base_config训练,batch_size=8 (报错就改小一点)
python train.py --config=yolact_base_config
#使用默认基础配置yolact_base_config训练,指定batch_size=5
accordingly. python train.py --config=yolact_base_config --batch_size=5
#使用吗,默认基础配置yolact_base_config训练,指定权重文件
train.py --config=yolact_base_config --resume=weights/yolact_base_10_32100.pth --start_iter=-1
#使用帮助查看各参数的作用
python train.py --help
1.3训练结果
- 开始训练后,模型每10000次迭代保存一次模型到weights文件夹;也可以通过Ctrl + c 中断训练并保存模型到weights文件夹
- 训练完成后会在weights文件夹生成权重模型,用于后续的预测。
2、预测eval.py
数据准备好以后后面的其实没太多好说的,直接看下面
–trained_model:选择权重模型
–image/images/video :选择是对单张图像预测还是一些图像或者视频文件
后面的是指定输入文件(夹)和输出文件夹,以 “ :”分隔
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --images=path/to/input/folder:path/to/output/folder
二、Yolact模型各代码部分解读
划 ############################################
是我修改的地方
1、data\config.py
1.1训练自己数据必修改的文件
config.py 比较重要的几个部分:
1) COCO_CLASSES :按labels.txt文件里的标签类型对应填好就行了
2) COCO_LABEL_MAP : 键值对数量与上面标签类型数量对应
3) DATASETS:主要包括 训练数据地址、验证数据地址指定class_name(COCO_CLASSES),指定label_map(COCO_LABEL_MAP)等
- dataset_base = Config({ }):默认基础设置,如果train.py和eval.py中不指定config的话就使用当前配置
4) YOLACT v1.0 CONFIGS :自定义数据集必修改的部分,最高级的参数配置部分。
- yolact_base_config = coco_base_config.copy({ }) : config 默认配置,他调用了上一部分的coco_base_config、DATASETS
2、train.py
2.1 训练时可指定的参数
- –batch_size:大小取决于你的显卡,报错就调小一点
- –num_workers:线程数,一般都是需要设置为 “0”
- –lr:学习率
- –save_folder:训练完后模型保存的路径
- –config:config配置文件选择,none为默认配置
- –save_interval:每10000次迭代保存模型权重
- –validation_epoch:每2个epoch进行一次验证计算
- –dataset:数据集路径
parser.add_argument('--batch_size'