2022-05
:进行大幅度更新、支持step、cos学习率下降法、支持adam、sgd优化器选择、支持学习率根据batch_size自适应调整、支持map评估、多GPU训练。
2022-01
:创建仓库、支持训练与预测。
模型 | 路径 |
---|---|
yolact-keras | https://github.com/bubbliiiing/yolact-keras |
yolact-pytorch | https://github.com/bubbliiiing/yolact-pytorch |
yolact-tf2 | https://github.com/bubbliiiing/yolact-tf2 |
mask-rcnn-keras | https://github.com/bubbliiiing/mask-rcnn-keras |
mask-rcnn-tf2 | https://github.com/bubbliiiing/mask-rcnn-tf2 |
训练数据集 | 权值文件名称 | 测试数据集 | 输入图片大小 | bbox mAP 0.5:0.95 | bbox mAP 0.5 | segm mAP 0.5:0.95 | segm mAP 0.5 |
---|---|---|---|---|---|---|---|
COCO-Train2017 | yolact_weights_coco.pth | COCO-Val2017 | 544x544 | 30.4 | 52.0 | 27.3 | 47.7 |
pytorch==1.2.0
torchvision==0.4.0
训练所需的预训练权值可在百度网盘中下载。
链接: https://pan.baidu.com/s/1IUlcrGoAJM-ujBV4SsjR8Q
提取码: nxjk
shapes数据集下载地址如下,该数据集是使用labelme标注的结果,尚未经过其它处理,用于区分三角形和正方形:
链接: https://pan.baidu.com/s/1hrCaEYbnSGBOhjoiOKQmig
提取码: jk44
数据集的准备
在文件下载部分,通过百度网盘下载数据集,下载完成后解压,将图片和对应的json文件放入根目录下的datasets/before文件夹。
数据集的处理
打开coco_annotation.py,里面的参数默认用于处理shapes形状数据集,直接运行可以在datasets/coco文件夹里生成图片文件和标签文件,并且完成了训练集和测试集的划分。
开始网络训练
train.py的默认参数用于训练shapes数据集,默认指向了根目录下的数据集文件夹,直接运行train.py即可开始训练。
训练结果预测
训练结果预测需要用到两个文件,分别是yolact.py和predict.py。
首先需要去yolact.py里面修改model_path以及classes_path,这两个参数必须要修改。
model_path指向训练好的权值文件,在logs文件夹里。
classes_path指向检测类别所对应的txt。
完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。
数据集的准备
本文使用labelme工具进行标注,标注好的文件有图片文件和json文件,二者均放在before文件夹里,具体格式可参考shapes数据集。
在标注目标时需要注意,同一种类的不同目标需要使用 _ 来隔开。
比如想要训练网络检测三角形和正方形,当一幅图片存在两个三角形时,分别标记为:
triangle_1
triangle_2
数据集的处理
修改coco_annotation.py里面的参数。第一次训练可以仅修改classes_path,classes_path用于指向检测类别所对应的txt。
训练自己的数据集时,可以自己建立一个cls_classes.txt,里面写自己所需要区分的类别。
model_data/cls_classes.txt文件内容为:
cat
dog
...
修改coco_annotation.py中的classes_path,使其对应cls_classes.txt,并运行coco_annotation.py。
开始网络训练
训练的参数较多,均在train.py中,大家可以在下载库后仔细看注释,其中最重要的部分依然是train.py里的classes_path。
classes_path用于指向检测类别所对应的txt,这个txt和coco_annotation.py里面的txt一样!训练自己的数据集必须要修改!
修改完classes_path后就可以运行train.py开始训练了,在训练多个epoch后,权值会生成在logs文件夹中。
训练结果预测
训练结果预测需要用到两个文件,分别是yolact.py和predict.py。
首先需要去yolact.py里面修改model_path以及classes_path,这两个参数必须要修改。
model_path指向训练好的权值文件,在logs文件夹里。
classes_path指向检测类别所对应的txt。
完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。
数据集的准备
coco训练集 http://images.cocodataset.org/zips/train2017.zip
coco验证集 http://images.cocodataset.org/zips/val2017.zip
coco训练集和验证集的标签 http://images.cocodataset.org/annotations/annotations_trainval2017.zip
开始网络训练
解压训练集、验证集及其标签后。打开train.py文件,修改其中的classes_path指向model_data/coco_classes.txt。
修改train_image_path为训练图片的路径,train_annotation_path为训练图片的标签文件,val_image_path为验证图片的路径,val_annotation_path为验证图片的标签文件。
训练结果预测
训练结果预测需要用到两个文件,分别是yolact.py和predict.py。
首先需要去yolact.py里面修改model_path以及classes_path,这两个参数必须要修改。
model_path指向训练好的权值文件,在logs文件夹里。
classes_path指向检测类别所对应的txt。
完成修改后就可以运行predict.py进行检测了。运行后输入图片路径即可检测。
img/street.jpg
_defaults = {
#--------------------------------------------------------------------------#
# 使用自己训练好的模型进行预测一定要修改model_path和classes_path!
# model_path指向logs文件夹下的权值文件,classes_path指向model_data下的txt
#
# 训练好后logs文件夹下存在多个权值文件,选择验证集损失较低的即可。
# 验证集损失较低不代表mAP较高,仅代表该权值在验证集上泛化性能较好。
# 如果出现shape不匹配,同时要注意训练时的model_path和classes_path参数的修改
#--------------------------------------------------------------------------#
"model_path" : 'model_data/yolact_weights_shape.pth',
"classes_path" : 'model_data/shape_classes.txt',
#---------------------------------------------------------------------#
# 输入图片的大小
#---------------------------------------------------------------------#
"input_shape" : [544, 544],
#---------------------------------------------------------------------#
# 只有得分大于置信度的预测框会被保留下来
#---------------------------------------------------------------------#
"confidence" : 0.5,
#---------------------------------------------------------------------#
# 非极大抑制所用到的nms_iou大小
#---------------------------------------------------------------------#
"nms_iou" : 0.3,
#---------------------------------------------------------------------#
# 先验框的大小
#---------------------------------------------------------------------#
"anchors_size" : [24, 48, 96, 192, 384],
#---------------------------------------------------------------------#
# 传统非极大抑制
#---------------------------------------------------------------------#
"traditional_nms" : True,
#-------------------------------#
# 是否使用Cuda
# 没有GPU可以设置成False
#-------------------------------#
"cuda" : True
}
img/street.jpg