PaddleClas
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                PaddleClas
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                PaddleClas 主要代碼和目錄結(jié)構(gòu)如下
- benchmark: 文件夾下存放了一些 shell 腳本,主要是為了測(cè)試 PaddleClas 中不同模型的速度指標(biāo),如單卡訓(xùn)練速度指標(biāo)、多卡訓(xùn)練速度指標(biāo)等。
 - dataset:文件夾下存放數(shù)據(jù)集和用于處理數(shù)據(jù)集的腳本。腳本負(fù)責(zé)將數(shù)據(jù)集處理為適合 Dataloader 處理的格式。
 - deploy:部署核心代碼,文件夾存放的是部署工具,支持 python/cpp inference、Hub Serveing、Paddle Lite、Slim 離線量化等多種部署方式。
 - ppcls:訓(xùn)練核心代碼,文件夾下存放 PaddleClas 框架主體。配置文件、模型訓(xùn)練、評(píng)估、預(yù)測(cè)、動(dòng)轉(zhuǎn)靜導(dǎo)出等具體代碼實(shí)現(xiàn)均在這里。
 - tools:訓(xùn)練、評(píng)估、預(yù)測(cè)、模型動(dòng)轉(zhuǎn)靜導(dǎo)出的入口函數(shù)和腳本均在該文件下。
 - requirements.txt 文件用于安裝 PaddleClas 的依賴項(xiàng)。使用 pip 進(jìn)行升級(jí)安裝使用。
 - tests:PaddleClas 模型從訓(xùn)練到預(yù)測(cè)的全鏈路測(cè)試,驗(yàn)證各功能是否能夠正常使用。
 
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
配置文件
# 訓(xùn)練時(shí)評(píng)估
"""
模型在訓(xùn)練的時(shí)候,可以設(shè)置模型保存的間隔,也可以選擇每隔若干個(gè) epoch 對(duì)驗(yàn)證集進(jìn)行評(píng)估,從而可以保存在驗(yàn)證集上精度最佳的模型。配置文件中,可以通過(guò)下面的字段進(jìn)行配置。
"""
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          # 是否進(jìn)行訓(xùn)練時(shí)評(píng)估eval_interval: 10                # 評(píng)估的 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# 損失函數(shù)
"""
PaddleClas 中,包含了 CELoss, JSDivLoss, TripletLoss, CenterLoss 等損失函數(shù),均定義在 ppcls/loss 中。
在 ppcls/loss/__init__.py 文件中,使用 CombinedLoss 來(lái)構(gòu)建及合并損失函數(shù),不同訓(xùn)練策略中所需要的損失函數(shù)與計(jì)算方法不同,PaddleClas 在構(gòu)建損失函數(shù)過(guò)程中,主要考慮了以下幾個(gè)因素。
1是否使用 label smooth
2是否使用 mixup 或者 cutmix
3是否使用蒸餾方法進(jìn)行訓(xùn)練
4是否是訓(xùn)練 metric learning
"""Loss:Train:- CELoss:weight: 1.0epsilon: 0.1Eval:- CELoss:weight: 1.0#  優(yōu)化器和學(xué)習(xí)率衰減、權(quán)重衰減策略
"""
圖像分類任務(wù)中,Momentum 是一種比較常用的優(yōu)化器,PaddleClas 中提供了 Momentum 、 RMSProp、Adam 及 AdamW 等幾種優(yōu)化器策略。
權(quán)重衰減策略是一種比較常用的正則化方法,主要用于防止模型過(guò)擬合。 PaddleClas 中提供了 L1Decay 和 L2Decay 兩種權(quán)重衰減策略。
學(xué)習(xí)率衰減是圖像分類任務(wù)中必不可少的精度提升訓(xùn)練方法,PaddleClas 目前支持 Cosine, Piecewise, Linear 等學(xué)習(xí)率衰減策略。
在配置文件中,優(yōu)化器、權(quán)重衰減策略、學(xué)習(xí)率衰減策略可以通過(guò)以下的字段進(jìn)行配置。
"""
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# 訓(xùn)練時(shí),標(biāo)準(zhǔn)的數(shù)據(jù)預(yù)處理包含如下五個(gè)部分,按照順序?qū)?shù)據(jù)進(jìn)行如下轉(zhuǎn)換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]
 
                            總結(jié)
以上是生活随笔為你收集整理的PaddleClas的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: python_socket
 - 下一篇: 陈赫不退出跑男,你们还看第二季么?