PaddleClas
生活随笔
收集整理的這篇文章主要介紹了
PaddleClas
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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: nullpretrained_model: ./output/MobileNetV3_large_x1_0/best_model
# pretrained_model: nulloutput_dir: ./output/device: gpusave_interval: 100 # 模型保存的 epoch 間隔eval_during_train: True # 是否進行訓練時評估eval_interval: 10 # 評估的 epoch 間隔epochs: 500print_batch_step: 10use_visualdl: False# used for static mode and model exportimage_shape: [3, 224, 224]save_inference_dir: ./inference# model architecture
Arch:name: MobileNetV3_large_x1_0class_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.0epsilon: 0.1Eval:- CELoss:weight: 1.0# 優化器和學習率衰減、權重衰減策略
"""
圖像分類任務中,Momentum 是一種比較常用的優化器,PaddleClas 中提供了 Momentum 、 RMSProp、Adam 及 AdamW 等幾種優化器策略。
權重衰減策略是一種比較常用的正則化方法,主要用于防止模型過擬合。 PaddleClas 中提供了 L1Decay 和 L2Decay 兩種權重衰減策略。
學習率衰減是圖像分類任務中必不可少的精度提升訓練方法,PaddleClas 目前支持 Cosine, Piecewise, Linear 等學習率衰減策略。
在配置文件中,優化器、權重衰減策略、學習率衰減策略可以通過以下的字段進行配置。
"""
Optimizer:name: Momentummomentum: 0.9lr:name: Cosinelearning_rate: 0.05warmup_epoch: 5regularizer:name: 'L2'coeff: 0.00002# data loader for train and eval
DataLoader:Train:dataset:name: ImageNetDatasetimage_root: ../dataset/JiEr_Clas/traincls_label_path: ../dataset/JiEr_Clas/train/train.txt# 訓練時,標準的數據預處理包含如下五個部分,按照順序對數據進行如下轉換transform_ops:- DecodeImage:to_rgb: Truechannel_first: False- RandCropImage:size: 224- RandFlipImage:flip_code: 1- AutoAugment:- NormalizeImage:scale: 1.0/255.0mean: [0.485, 0.456, 0.406]std: [0.229, 0.224, 0.225]order: ''sampler:name: DistributedBatchSamplerbatch_size: 8drop_last: Falseshuffle: Trueloader:num_workers: 2use_shared_memory: FalseEval:dataset: name: ImageNetDatasetimage_root: ../dataset/JiEr_Clas/valcls_label_path: ../dataset/JiEr_Clas/val/val.txttransform_ops:- DecodeImage:to_rgb: Truechannel_first: False- ResizeImage:resize_short: 256- CropImage:size: 224- NormalizeImage:scale: 1.0/255.0mean: [0.485, 0.456, 0.406]std: [0.229, 0.224, 0.225]order: ''sampler:name: DistributedBatchSamplerbatch_size: 8drop_last: Falseshuffle: Falseloader:num_workers: 2use_shared_memory: TrueInfer:infer_imgs: docs/images/whl/demo.jpgbatch_size: 10transforms:- DecodeImage:to_rgb: Truechannel_first: False- ResizeImage:resize_short: 256- CropImage:size: 224- NormalizeImage:scale: 1.0/255.0mean: [0.485, 0.456, 0.406]std: [0.229, 0.224, 0.225]order: ''- ToCHWImage:PostProcess:name: Topktopk: 5class_id_map_file: ppcls/utils/imagenet1k_label_list.txtMetric:Train:- TopkAcc:topk: [1, 2]Eval:- TopkAcc:topk: [1, 2]
總結
以上是生活随笔為你收集整理的PaddleClas的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python_socket
- 下一篇: Pycharm上传Gitlab