PaddleOCR使用笔记之配置文件的详细解释

可选参数列表

以下列表可以通过--help查看

FLAG支持脚本用途默认值备注
-cALL指定配置文件None配置模块说明请参考 参数介绍
-oALL设置配置文件里的参数内容None使用-o配置相较于-c选择的配置文件具有更高的优先级。例如:-o Global.use_gpu=false

配置文件参数介绍

rec_chinese_lite_train_v2.0.yml 为例

Global-全局参数配置

字段用途默认值备注
use_gpu设置代码是否在gpu运行true\
epoch_num最大训练epoch数500\
log_smooth_windowlog队列长度,每次打印输出队列里的中间值20\
print_batch_step设置打印log间隔10\
save_model_dir设置模型保存路径output/{算法名称}\
save_epoch_step设置模型保存间隔3\
eval_batch_step设置模型评估间隔2000 或 [1000, 2000]2000 表示每2000次迭代评估一次,[1000, 2000]表示从1000次迭代开始,每2000次评估一次
cal_metric_during_train设置是否在训练过程中评估指标,此时评估的是模型在当前batch下的指标true\
load_static_weights设置预训练模型是否是静态图模式保存(目前仅检测算法需要)true\
pretrained_model设置加载预训练模型路径./pretrain_models/CRNN/best_accuracy\
checkpoints加载模型参数路径None用于中断后加载参数继续训练
use_visualdl设置是否启用visualdl进行可视化log展示False教程地址
infer_img设置预测图像路径或文件夹路径./infer_img\
character_dict_path设置字典路径./ppocr/utils/ppocr_keys_v1.txt\
max_text_length设置文本最大长度25\
character_type设置字符类型chen/ch, en时将使用默认dict,ch时使用自定义dict
use_space_char设置是否识别空格True仅在 character_type=ch 时支持空格
label_list设置方向分类器支持的角度[‘0’,‘180’]仅在方向分类器中生效
save_res_path设置检测模型的结果保存地址./output/det_db/predicts_db.txt仅在检测模型中生效

Optimizer-优化器参数配置

字段用途默认值备注
name优化器类名Adam目前支持Momentum,Adam,RMSProp, 见ppocr/optimizer/optimizer.py
beta1设置一阶矩估计的指数衰减率0.9\
beta2设置二阶矩估计的指数衰减率0.999\
clip_norm所允许的二范数最大值\
lr设置学习率decay方式-\
name学习率decay类名Cosine目前支持Linear,Cosine,Step,Piecewise, 见ppocr/optimizer/learning_rate.py
learning_rate基础学习率0.001\
regularizer设置网络正则化方式-\
name正则化类名L2目前支持L1,L2, 见ppocr/optimizer/regularizer.py
factor学习率衰减系数0.00004\

Architecture-网络结构参数配置

在ppocr中,网络被划分为Transform,Backbone,Neck和Head四个阶段

字段用途默认值备注
model_type网络类型rec目前支持rec,det,cls
algorithm模型名称CRNN支持列表见algorithm_overview
Transform设置变换方式-目前仅rec类型的算法支持, 具体见ppocr/modeling/transform
name变换方式类名TPS目前支持TPS
num_fiducialTPS控制点数20上下边各十个
loc_lr定位网络学习率0.1\
model_name定位网络大小small目前支持small,large
Backbone设置网络backbone类名-具体见ppocr/modeling/backbones
namebackbone类名ResNet目前支持MobileNetV3,ResNet
layersresnet层数34支持18,34,50,101,152,200
model_nameMobileNetV3 网络大小small支持small,large
Neck设置网络neck-具体见ppocr/modeling/necks
nameneck类名SequenceEncoder目前支持SequenceEncoder,DBFPN
encoder_typeSequenceEncoder编码器类型rnn支持reshape,fc,rnn
hidden_sizernn内部单元数48\
out_channelsDBFPN输出通道数256\
Head设置网络Head-具体见ppocr/modeling/heads
namehead类名CTCHead目前支持CTCHead,DBHead,ClsHead
fc_decayCTCHead正则化系数0.0004\
kDBHead二值化系数50\
class_dimClsHead输出分类数2\

Loss-损失参数配置

字段用途默认值备注
name网络loss类名CTCLoss目前支持CTCLoss,DBLoss,ClsLoss
balance_lossDBLossloss中是否对正负样本数量进行均衡(使用OHEM)True\
ohem_ratioDBLossloss中的OHEM的负正样本比例3\
main_loss_typeDBLossloss中shrink_map所采用的的lossDiceLoss支持DiceLoss,BCELoss
alphaDBLossloss中shrink_map_loss的系数5\
betaDBLossloss中threshold_map_loss的系数10\

PostProcess-后处理参数配置

字段用途默认值备注
name后处理类名CTCLabelDecode目前支持CTCLoss,AttnLabelDecode,DBPostProcess,ClsPostProcess
threshDBPostProcess中分割图进行二值化的阈值0.3\
box_threshDBPostProcess中对输出框进行过滤的阈值,低于此阈值的框不会输出0.7\
max_candidatesDBPostProcess中输出的最大文本框数量1000
unclip_ratioDBPostProcess中对文本框进行放大的比例2.0\

Metric-模型评估参数配置

字段用途默认值备注
name指标评估方法名称CTCLabelDecode目前支持DetMetric,RecMetric,ClsMetric
main_indicator主要指标,用于选取最优模型acc对于检测方法为hmean,识别和分类方法为acc

Dataset-数据集参数配置

字段用途默认值备注
dataset每次迭代返回一个样本--
namedataset类名SimpleDataSet目前支持SimpleDataSetLMDBDateSet
data_dir数据集图片存放路径./train_data\
label_file_list数据标签路径["./train_data/train_list.txt"]dataset为LMDBDateSet时不需要此参数
ratio_list数据集的比例[1.0]若label_file_list中有两个train_list,且ratio_list为[0.4,0.6],则从train_list1中采样40%,从train_list2中采样60%组合整个dataset
transforms对图片和标签进行变换的方法列表[DecodeImage,CTCLabelEncode,RecResizeImg,KeepKeys]ppocr/data/imaug
loaderdataloader相关-
shuffle每个epoch是否将数据集顺序打乱True\
batch_size_per_card训练时单卡batch size256\
drop_last是否丢弃因数据集样本数不能被 batch_size 整除而产生的最后一个不完整的mini-batchTrue\
num_workers用于加载数据的子进程个数,若为0即为不开启子进程,在主进程中进行数据加载8\
  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
`argparse` 是 Python 标准库中用于解析命令行参数和选项的模块。它可以让你的 Python 脚本更加灵活,可以从命令行中接收参数和选项,并且可以根据用户提供的参数来执行不同的操作。下面是一些使用 `argparse` 的笔记: ### 基本示例 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--url', type=str, help='需要处理的URL') parser.add_argument('--file', type=str, help='需要处理的文件路径') args = parser.parse_args() if args.url: print('处理URL:', args.url) elif args.file: print('处理文件:', args.file) else: print('请提供URL或文件路径') ``` 在上面的例子中,我们使用 `argparse` 创建了一个解析器对象,然后添加了两个参数 `--url` 和 `--file`。`type` 参数指定了参数的类型,`help` 参数指定了参数的帮助信息。最后,使用 `parse_args()` 方法解析命令行参数,并根据参数执行不同的操作。 ### 必需参数 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('input', type=str, help='输入文件路径') parser.add_argument('output', type=str, help='输出文件路径') args = parser.parse_args() print('输入文件:', args.input) print('输出文件:', args.output) ``` 在上面的例子中,我们将参数 `input` 和 `output` 指定为必需参数,这意味着用户必须在命令行中提供这两个参数,否则程序将会抛出异常。 ### 默认值 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--url', type=str, help='需要处理的URL', default='https://www.baidu.com') parser.add_argument('--file', type=str, help='需要处理的文件路径', default='data.txt') args = parser.parse_args() print('处理URL:', args.url) print('处理文件:', args.file) ``` 在上面的例子中,我们为参数 `--url` 和 `--file` 指定了默认值,这意味着如果用户没有在命令行中提供这两个参数,那么程序将使用默认值。默认值可以是任何类型的值,不仅仅限于字符串类型。 ### 多个值 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--input', type=str, help='输入文件路径', nargs='+') parser.add_argument('--output', type=str, help='输出文件路径') args = parser.parse_args() print('输入文件:', args.input) print('输出文件:', args.output) ``` 在上面的例子中,我们将参数 `--input` 指定为多个值,这意味着用户可以在命令行中提供多个输入文件路径,例如 `--input file1.txt file2.txt`。使用 `nargs='+'` 将参数指定为多个值,使用 `args.input` 来访问这些值。 ### 限制值的范围 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--size', type=int, help='图像大小', choices=[256, 512, 1024]) args = parser.parse_args() print('图像大小:', args.size) ``` 在上面的例子中,我们将参数 `--size` 指定为整数类型,并且限制了它的取值范围只能是 256、512 或 1024。如果用户在命令行中指定了一个不在这个范围内的值,程序将会抛出异常。 ### 子命令 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') subparsers = parser.add_subparsers(title='子命令', description='可用的子命令') parser_a = subparsers.add_parser('a', help='子命令A') parser_a.add_argument('--input', type=str, help='输入文件路径') parser_a.add_argument('--output', type=str, help='输出文件路径') parser_b = subparsers.add_parser('b', help='子命令B') parser_b.add_argument('--url', type=str, help='需要处理的URL') args = parser.parse_args() if hasattr(args, 'input'): print('处理文件:', args.input) print('输出文件:', args.output) elif hasattr(args, 'url'): print('处理URL:', args.url) else: print('请提供子命令参数') ``` 在上面的例子中,我们使用 `add_subparsers()` 方法创建了子命令解析器对象,并添加了两个子命令 `a` 和 `b`。然后,我们为每个子命令添加了不同的参数。最后,根据子命令参数执行不同的操作。 以上就是一些 `argparse` 的基本使用笔记,希望对你有帮助。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值