PaddleOCR的方向分类器代码解析(一)

2021SC@SDUSC
  我们先来看PaddleOCR-release-2.2->configs->cls中的cls_mv3.yml,即参数配置文件。参数配置文件介绍了一个模块使用的框架、算法和整体结构,是了解模块代码之前必看的内容。我之前的博客内容都是基于PaddleOCR的官方论文,所以介绍的内容只有最重要的几部分,对方向分类器的认识也不够完整。但是现在再看yml文件也不算晚,就算是我理解代码的第一步了。
Global:

字段用途默认值
use_gpu设置代码能否在GPU上运行true
epoch_num最大训练epoch数100
log_smooth_windowlog队列长度,每次打印输出队列里的中间值20
print_batch_stepprint_batch_step10
save_model_dir设置模型保存路径./output/cls/mv3/
save_epoch_step设置模型保存间隔3
eval_batch_step设置模型评估间隔[0, 1000],表示从0次迭代开始,每1000次评估一次
cal_metric_during_train设置是否在训练过程中评估指标,此时评估的是模型在当前batch下的指标true
pretrained_model设置加载预训练模型路径none
checkpoints加载模型参数路径,用于中断后加载参数继续训练none
save_inference_dir设置模型保存路径none
use_visualdl设置是否启用visualdl进行可视化log展示False
infer_img设置预测图像路径或文件夹路径doc/imgs_words_en/word_10.png
label_list设置方向分类器支持的角度[‘0’,‘180’]

Architecture:

字段用途默认值
model_type网络类型cls
algorithm模型名称CLS
Transform设置变换方式,目前仅rec类型的算法支持none
Backbone设置网络backbone类名name: MobileNetV3,scale: 0.35,model_name: small
Neck设置网络necknone
Head设置网络Head。其中class_dim指ClsHead输出分类数name: ClsHead,class_dim: 2

Loss:

字段用途默认值
name网络loss类名ClsLoss

Optimizer:

字段用途默认值
name优化器类名Adam
beta1设置一阶矩估计的指数衰减率0.9
beta2设置二阶矩估计的指数衰减率0.999
lr设置学习率decay方式。其中name指学习率decay类名,learning_rate指基础学习率name: Cosine,learning_rate: 0.001
regularizer设置网络正则化方式。其中name指正则化类名,factor指学习率衰减系数name: ‘L2’,factor: 0

PostProcess:

字段用途默认值
name后处理类名ClsPostProcess

Metric:

字段用途默认值
name指标评估方法名称ClsMetric
main_indicator主要指标,用于选取最优模型acc

Train和Eval:

字段用途默认值
dataset每次迭代返回一个样本-
namedataset类名SimpleDataSet
data_dir数据集图片存放路径./train_data/cls
label_file_list数据标签路径train的是./train_data/cls/train.txt,eval的是./train_data/cls/test.txt
transforms对图片和标签进行变换的方法列表Train包括DecodeImage: img_mode: BGR,channel_first: False;ClsLabelEncode: RecAug: use_tia: False;RandAugment: ;ClsResizeImg: image_shape: [3, 48, 192];KeepKeys: keep_keys: [‘image’, ‘label’]。Eval包括DecodeImage: img_mode: BGR,channel_first: False;ClsLabelEncode: ;ClsResizeImg:image_shape: [3, 48, 192];KeepKeys:keep_keys: [‘image’, ‘label’]
loaderdataloader相关-
shuffle每个epoch是否将数据集顺序打乱Train: True , Eval: False
batch_size_per_card训练时单卡batch size512
drop_last是否丢弃因数据集样本数不能被 batch_size 整除而产生的最后一个不完整的mini-batchTrain: True , Eval: False
num_workers用于加载数据的子进程个数,若为0即为不开启子进程,在主进程中进行数据加载Train: 8, Eval: 4

  从yml配置文件中可知,方向分类器的代码主要分为统一设置代码(与部署相关)、结构代码(包括之前博客中详解的MobileNetV3)、损失函数代码、优化器代码、后处理代码、评估代码、训练和评估代码。我将从以后的博客中具体学习这七部分代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值