You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

13 KiB

PaddleRS训练API说明

训练器封装了模型训练、验证、量化以及动态图推理等逻辑,定义在paddlers/tasks/目录下的文件中。为了方便用户使用,PaddleRS为所有支持的模型均提供了继承自父类BaseModel的训练器,并对外提供数个API。变化检测、场景分类、图像分割以及目标检测任务对应的训练器类型分别为BaseChangeDetectorBaseClassifierBaseDetectorBaseSegmenter。本文档介绍训练器的初始化函数以及train()evaluate() API。

初始化训练器

所有训练器均支持默认参数构造(即构造对象时不传入任何参数),在这种情况下,构造出的训练器对象适用于三通道RGB数据。

初始化BaseChangeDetector子类对象

一般支持设置num_classesuse_mixed_loss以及in_channels参数,分别表示模型输出类别数、是否使用预置的混合损失以及输入通道数。部分子类如DSIFN暂不支持对in_channels参数的设置。use_mixed_loss参将在未来被弃用,因此不建议使用。不同的子类支持与模型相关的输入参数,详情请参考模型定义训练器定义

初始化BaseClassifier子类对象

一般支持设置num_classesuse_mixed_loss参数,分别表示模型输出类别数以及是否使用预置的混合损失。use_mixed_loss参将在未来被弃用,因此不建议使用。不同的子类支持与模型相关的输入参数,详情请参考模型定义训练器定义

初始化Baseetector子类对象

一般支持设置num_classesbackbone参数,分别表示模型输出类别数以及所用的骨干网络类型。相比其它任务,目标检测任务的训练器支持设置的初始化参数较多,囊括网络结构、损失函数、后处理策略等方面。不同的子类支持与模型相关的输入参数,详情请参考模型定义训练器定义

初始化BaseSegmenter子类对象

一般支持设置input_channelnum_classes以及use_mixed_loss参数,分别表示输入通道数、输出类别数以及是否使用预置的混合损失。部分模型如FarSeg暂不支持对input_channel参数的设置。use_mixed_loss参将在未来被弃用,因此不建议使用。不同的子类支持与模型相关的输入参数,详情请参考模型定义训练器定义

train()

BaseChangeDetector.train()

方法定义如下:

def train(self,
            num_epochs,
            train_dataset,
            train_batch_size=2,
            eval_dataset=None,
            optimizer=None,
            save_interval_epochs=1,
            log_interval_steps=2,
            save_dir='output',
            pretrain_weights=None,
            learning_rate=0.01,
            lr_decay_power=0.9,
            early_stop=False,
            early_stop_patience=5,
            use_vdl=True,
            resume_checkpoint=None):

其中各参数的含义如下:

参数名称 类型 参数说明 默认值
num_epochs int 训练的epoch数目。
train_dataset paddlers.datasets.CDDataset 训练数据集。
train_batch_size int 训练时使用的batch size。 2
eval_dataset paddlers.datasets.CDDataset | None 验证数据集。 None
optimizer paddle.optimizer.Optimizer | None 训练时使用的优化器。若为None,则使用默认定义的优化器。 None
save_interval_epochs int 训练时存储模型的间隔epoch数。 1
log_interval_steps int 训练时打印日志的间隔step数(即迭代数)。 2
save_dir str 存储模型的路径。 'output'
pretrain_weights str | None 预训练权重的名称/路径。若为None,则不适用预训练权重。 None
learning_rate float 训练时使用的学习率大小,适用于默认优化器。 0.01
lr_decay_power float 学习率衰减系数,适用于默认优化器。 0.9
early_stop bool 训练过程是否启用早停策略。 False
early_stop_patience int 启用早停策略时的patience参数(参见EarlyStop)。 5
use_vdl bool 是否启用VisualDL日志。 True
resume_checkpoint str | None 检查点路径。PaddleRS支持从检查点(包含先前训练过程中存储的模型权重和优化器权重)继续训练,但需注意resume_checkpointpretrain_weights不得同时设置为None以外的值。 None

BaseClassifier.train()

方法定义如下:

def train(self,
            num_epochs,
            train_dataset,
            train_batch_size=2,
            eval_dataset=None,
            optimizer=None,
            save_interval_epochs=1,
            log_interval_steps=2,
            save_dir='output',
            pretrain_weights='IMAGENET',
            learning_rate=0.1,
            lr_decay_power=0.9,
            early_stop=False,
            early_stop_patience=5,
            use_vdl=True,
            resume_checkpoint=None):

其中各参数的含义如下:

参数名称 类型 参数说明 默认值
num_epochs int 训练的epoch数目。
train_dataset paddlers.datasets.ClasDataset 训练数据集。
train_batch_size int 训练时使用的batch size。 2
eval_dataset paddlers.datasets.ClasDataset | None 验证数据集。 None
optimizer paddle.optimizer.Optimizer | None 训练时使用的优化器。若为None,则使用默认定义的优化器。 None
save_interval_epochs int 训练时存储模型的间隔epoch数。 1
log_interval_steps int 训练时打印日志的间隔step数(即迭代数)。 2
save_dir str 存储模型的路径。 'output'
pretrain_weights str | None 预训练权重的名称/路径。若为None,则不适用预训练权重。 'IMAGENET'
learning_rate float 训练时使用的学习率大小,适用于默认优化器。 0.1
lr_decay_power float 学习率衰减系数,适用于默认优化器。 0.9
early_stop bool 训练过程是否启用早停策略。 False
early_stop_patience int 启用早停策略时的patience参数(参见EarlyStop)。 5
use_vdl bool 是否启用VisualDL日志。 True
resume_checkpoint str | None 检查点路径。PaddleRS支持从检查点(包含先前训练过程中存储的模型权重和优化器权重)继续训练,但需注意resume_checkpointpretrain_weights不得同时设置为None以外的值。 None

BaseDetector.train()

方法定义如下:

def train(self,
            num_epochs,
            train_dataset,
            train_batch_size=64,
            eval_dataset=None,
            optimizer=None,
            save_interval_epochs=1,
            log_interval_steps=10,
            save_dir='output',
            pretrain_weights='IMAGENET',
            learning_rate=.001,
            warmup_steps=0,
            warmup_start_lr=0.0,
            lr_decay_epochs=(216, 243),
            lr_decay_gamma=0.1,
            metric=None,
            use_ema=False,
            early_stop=False,
            early_stop_patience=5,
            use_vdl=True,
            resume_checkpoint=None):

其中各参数的含义如下:

参数名称 类型 参数说明 默认值
num_epochs int 训练的epoch数目。
train_dataset paddlers.datasets.COCODetDataset | paddlers.datasets.VOCDetDataset 训练数据集。
train_batch_size int 训练时使用的batch size(多卡训练时,为所有设备合计batch size)。 64
eval_dataset paddlers.datasets.COCODetDataset | paddlers.datasets.VOCDetDataset | None 验证数据集。 None
optimizer paddle.optimizer.Optimizer | None 训练时使用的优化器。若为None,则使用默认定义的优化器。 None
save_interval_epochs int 训练时存储模型的间隔epoch数。 1
log_interval_steps int 训练时打印日志的间隔step数(即迭代数)。 10
save_dir str 存储模型的路径。 'output'
pretrain_weights str | None 预训练权重的名称/路径。若为None,则不适用预训练权重。 'IMAGENET'
learning_rate float 训练时使用的学习率大小,适用于默认优化器。 0.001
warmup_steps int 默认优化器使用warm-up策略的预热轮数。 0
warmup_start_lr int 默认优化器warm-up阶段使用的初始学习率。 0
lr_decay_epochs list | tuple 默认优化器学习率衰减的milestones,以epoch计。即,在第几个epoch执行学习率的衰减。 (216, 243)
lr_decay_gamma float 学习率衰减系数,适用于默认优化器。 0.1
metric str | None 评价指标,可以为'VOC'COCONone。若为Nnoe,则根据数据集格式自动确定使用的评价指标。 None
use_ema bool 是否启用指数滑动平均策略更新模型权重参数。 False
early_stop bool 训练过程是否启用早停策略。 False
early_stop_patience int 启用早停策略时的patience参数(参见EarlyStop)。 5
use_vdl bool 是否启用VisualDL日志。 True
resume_checkpoint str | None 检查点路径。PaddleRS支持从检查点(包含先前训练过程中存储的模型权重和优化器权重)继续训练,但需注意resume_checkpointpretrain_weights不得同时设置为None以外的值。 None

BaseSegmenter.train()

def train(self,
            num_epochs,
            train_dataset,
            train_batch_size=2,
            eval_dataset=None,
            optimizer=None,
            save_interval_epochs=1,
            log_interval_steps=2,
            save_dir='output',
            pretrain_weights='CITYSCAPES',
            learning_rate=0.01,
            lr_decay_power=0.9,
            early_stop=False,
            early_stop_patience=5,
            use_vdl=True,
            resume_checkpoint=None):

其中各参数的含义如下:

参数名称 类型 参数说明 默认值
num_epochs int 训练的epoch数目。
train_dataset paddlers.datasets.SegDataset 训练数据集。
train_batch_size int 训练时使用的batch size。 2
eval_dataset paddlers.datasets.SegDataset | None 验证数据集。 None
optimizer paddle.optimizer.Optimizer | None 训练时使用的优化器。若为None,则使用默认定义的优化器。 None
save_interval_epochs int 训练时存储模型的间隔epoch数。 1
log_interval_steps int 训练时打印日志的间隔step数(即迭代数)。 2
save_dir str 存储模型的路径。 'output'
pretrain_weights str | None 预训练权重的名称/路径。若为None,则不适用预训练权重。 'CITYSCAPES'
learning_rate float 训练时使用的学习率大小,适用于默认优化器。 0.01
lr_decay_power float 学习率衰减系数,适用于默认优化器。 0.9
early_stop bool 训练过程是否启用早停策略。 False
early_stop_patience int 启用早停策略时的patience参数(参见EarlyStop)。 5
use_vdl bool 是否启用VisualDL日志。 True
resume_checkpoint str | None 检查点路径。PaddleRS支持从检查点(包含先前训练过程中存储的模型权重和优化器权重)继续训练,但需注意resume_checkpointpretrain_weights不得同时设置为None以外的值。 None

evaluate()

BaseChangeDetector.evaluate()

BaseClassifier.evaluate()

BaseDetector.evaluate()

BaseSegmenter.evaluate()