PaddleClas

PaddleClas是一个基于PaddlePaddle的视觉识别框架,提供丰富的模型、高效的训练和部署方案。其核心代码包括训练、评估、预测模块,支持多种优化器和损失函数,以及灵活的数据预处理。配置文件允许设置训练时的评估、模型保存、学习率衰减策略等。此外,还提供了多种数据加载器和预处理操作,确保训练和评估的高效进行。
摘要由CSDN通过智能技术生成

PaddleClas 主要代码和目录结构如下

  • benchmark: 文件夹下存放了一些 shell 脚本,主要是为了测试 PaddleClas 中不同模型的速度指标,如单卡训练速度指标、多卡训练速度指标等。
  • dataset:文件夹下存放数据集和用于处理数据集的脚本。脚本负责将数据集处理为适合 Dataloader 处理的格式。
  • deploy:部署核心代码,文件夹存放的是部署工具,支持 python/cpp inference、Hub Serveing、Paddle Lite、Slim 离线量化等多种部署方式。
  • ppcls:训练核心代码,文件夹下存放 PaddleClas 框架主体。配置文件、模型训练、评估、预测、动转静导出等具体代码实现均在这里。
  • tools:训练、评估、预测、模型动转静导出的入口函数和脚本均在该文件下。
  • requirements.txt 文件用于安装 PaddleClas 的依赖项。使用 pip 进行升级安装使用。
  • tests:PaddleClas 模型从训练到预测的全链路测试,验证各功能是否能够正常使用。

PaddleClas/code_overview.md at release/2.3 · PaddlePaddle/PaddleClas · GitHubA treasure chest for visual recognition powered by PaddlePaddle - PaddleClas/code_overview.md at release/2.3 · PaddlePaddle/PaddleClashttps://github.com/PaddlePaddle/PaddleClas/blob/release/2.3/docs/zh_CN/advanced_tutorials/code_overview.md

配置文件

# 训练时评估
"""
模型在训练的时候,可以设置模型保存的间隔,也可以选择每隔若干个 epoch 对验证集进行评估,从而可以保存在验证集上精度最佳的模型。配置文件中,可以通过下面的字段进行配置。
"""
Global:
  checkpoints: null
  pretrained_model: ./output/MobileNetV3_large_x1_0/best_model
#  pretrained_model: null
  output_dir: ./output/
  device: gpu
  save_interval: 100               # 模型保存的 epoch 间隔
  eval_during_train: True          # 是否进行训练时评估
  eval_interval: 10                # 评估的 epoch 间隔
  epochs: 500
  print_batch_step: 10
  use_visualdl: False
  # used for static mode and model export
  image_shape: [3, 224, 224]
  save_inference_dir: ./inference

# model architecture
Arch:
  name: MobileNetV3_large_x1_0
  class_num: 2

# 损失函数
"""
PaddleClas 中,包含了 CELoss, JSDivLoss, TripletLoss, CenterLoss 等损失函数,均定义在 ppcls/loss 中。
在 ppcls/loss/__init__.py 文件中,使用 CombinedLoss 来构建及合并损失函数,不同训练策略中所需要的损失函数与计算方法不同,PaddleClas 在构建损失函数过程中,主要考虑了以下几个因素。
1是否使用 label smooth
2是否使用 mixup 或者 cutmix
3是否使用蒸馏方法进行训练
4是否是训练 metric learning
"""

Loss:
  Train:
    - CELoss:
        weight: 1.0
        epsilon: 0.1
  Eval:
    - CELoss:
        weight: 1.0

#  优化器和学习率衰减、权重衰减策略
"""
图像分类任务中,Momentum 是一种比较常用的优化器,PaddleClas 中提供了 Momentum 、 RMSProp、Adam 及 AdamW 等几种优化器策略。
权重衰减策略是一种比较常用的正则化方法,主要用于防止模型过拟合。 PaddleClas 中提供了 L1Decay 和 L2Decay 两种权重衰减策略。
学习率衰减是图像分类任务中必不可少的精度提升训练方法,PaddleClas 目前支持 Cosine, Piecewise, Linear 等学习率衰减策略。
在配置文件中,优化器、权重衰减策略、学习率衰减策略可以通过以下的字段进行配置。
"""
Optimizer:
  name: Momentum
  momentum: 0.9
  lr:
    name: Cosine
    learning_rate: 0.05
    warmup_epoch: 5
  regularizer:
    name: 'L2'
    coeff: 0.00002


# data loader for train and eval
DataLoader:
  Train:
    dataset:
      name: ImageNetDataset
      image_root: ../dataset/JiEr_Clas/train
      cls_label_path: ../dataset/JiEr_Clas/train/train.txt

      # 训练时,标准的数据预处理包含如下五个部分,按照顺序对数据进行如下转换
      transform_ops:
        - DecodeImage:
            to_rgb: True
            channel_first: False
        - RandCropImage:
            size: 224
        - RandFlipImage:
            flip_code: 1
        - AutoAugment:
        - NormalizeImage:
            scale: 1.0/255.0
            mean: [0.485, 0.456, 0.406]
            std: [0.229, 0.224, 0.225]
            order: ''

    sampler:
      name: DistributedBatchSampler
      batch_size: 8
      drop_last: False
      shuffle: True
    loader:
      num_workers: 2
      use_shared_memory: False

  Eval:
    dataset: 
      name: ImageNetDataset
      image_root: ../dataset/JiEr_Clas/val
      cls_label_path: ../dataset/JiEr_Clas/val/val.txt
      transform_ops:
        - DecodeImage:
            to_rgb: True
            channel_first: False
        - ResizeImage:
            resize_short: 256
        - CropImage:
            size: 224
        - NormalizeImage:
            scale: 1.0/255.0
            mean: [0.485, 0.456, 0.406]
            std: [0.229, 0.224, 0.225]
            order: ''
    sampler:
      name: DistributedBatchSampler
      batch_size: 8
      drop_last: False
      shuffle: False
    loader:
      num_workers: 2
      use_shared_memory: True

Infer:
  infer_imgs: docs/images/whl/demo.jpg
  batch_size: 10
  transforms:
    - DecodeImage:
        to_rgb: True
        channel_first: False
    - ResizeImage:
        resize_short: 256
    - CropImage:
        size: 224
    - NormalizeImage:
        scale: 1.0/255.0
        mean: [0.485, 0.456, 0.406]
        std: [0.229, 0.224, 0.225]
        order: ''
    - ToCHWImage:
  PostProcess:
    name: Topk
    topk: 5
    class_id_map_file: ppcls/utils/imagenet1k_label_list.txt

Metric:
  Train:
    - TopkAcc:
        topk: [1, 2]
  Eval:
    - TopkAcc:
        topk: [1, 2]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡先生的笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值