代码拉取完成,页面将自动刷新
同步操作将从 PaddlePaddle/PaddleClas 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
我们收集整理了开源以来在 issues 和用户群中的常见问题并且给出了简要解答,旨在为图像分类的开发者提供一些参考,也希望帮助大家少走一些弯路。
图像分类领域大佬众多,模型和论文更新速度也很快,本文档回答主要依赖有限的项目实践,难免挂一漏万,如有遗漏和不足,也希望有识之士帮忙补充和修正,万分感谢。
batch size
?在模型训练中,怎么选择合适的 batch size
?batch size
是训练神经网络中的一个重要的超参数,该值决定了一次将多少数据送入神经网络参与训练。论文 Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour,当 batch size
的值与学习率的值呈线性关系时,收敛精度几乎不受影响。在训练 ImageNet 数据时,大部分的神经网络选择的初始学习率为 0.1,batch size
是 256,所以根据实际的模型大小和显存情况,可以将学习率设置为 0.1k, batch_size 设置为 256k。在实际任务中,也可以将该设置作为初始参数,进一步调节学习率参数并获得更优的性能。模型 | L2_decay | Train acc1/acc5 | Test acc1/acc5 |
---|---|---|---|
MobileNetV1_x0_25 | 1e-4 | 43.79%/67.61% | 50.41%/74.70% |
MobileNetV1_x0_25 | 3e-5 | 47.38%/70.83% | 51.45%/75.45% |
模型 | Use_label_smoothing | Test acc1 |
---|---|---|
ResNet50_vd | 0 | 77.9% |
ResNet50_vd | 1 | 78.4% |
ResNet18 | 0 | 71.0% |
ResNet18 | 1 | 70.8% |
N(0,1)
的正态分布,数据重排指的是将数据由 [224,224,3]
的格式变为 [3,224,224]
的格式,组 batch 指的是将多幅图像组成一个批数据,送进网络进行训练。模型 | Scale 取值范围 | Train_acc1/acc5 | Test_acc1/acc5 |
---|---|---|---|
MobileNetV2_x0_25 | [0.08,1] | 50.36%/72.98% | 52.35%/75.65% |
MobileNetV2_x0_25 | [0.2,1] | 54.39%/77.08% | 53.18%/76.14% |
output/ResNet50_vd/19
,预训练模型参数的名称为 output/ResNet50_vd/19/ppcls.pdparams
,则 pretrained_model
参数需要指定为 output/ResNet50_vd/19/ppcls
,PaddleClas 会自动补齐.pdparams
的后缀。EfficientNetB0_small
模型时,为什么最终的精度始终比官网的低 0.3% 左右?EfficientNet
系列的网络在进行 resize 的时候,是使用 cubic 插值方式
(resize 参数的 interpolation 值设置为 2),而其他模型默认情况下为 None,因此在训练和评估的时候需要显式地指定 resize 的 interpolation 值。具体地,可以参考以下配置中预处理过程中 ResizeImage 的参数。 Eval:
dataset:
name: ImageNetDataset
image_root: ./dataset/ILSVRC2012/
cls_label_path: ./dataset/ILSVRC2012/val_list.txt
transform_ops:
- DecodeImage:
to_rgb: True
channel_first: False
- ResizeImage:
resize_short: 256
interpolation: 2
- CropImage:
size: 224
- NormalizeImage:
scale: 1.0/255.0
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
order: ''
TypeError: __init__() missing 1 required positional argument: 'sync_cycle'
,这是为什么呢?pip3 install visualdl -i https://mirror.baidu.com/pypi/simple
[1, 224, 224]
,此外数据增广部分也需要注意适配一下。不过为了更好地使用 PaddleClas 代码的话,即使是灰度图,也建议调整为 3 通道的图片进行训练(RGB 通道的像素值相等)。Loss
字段下进行设置,如下所示,epsilon=0.1
表示设置该值为 0.1,若不设置 epsilon
字段,则不使用 label smoothing
。Loss:
Train:
- CELoss:
weight: 1.0
epsilon: 0.1
deploy/python/predict_cls.py
进行模型预测的时候,报了这个问题: Error: Pass tensorrt_subgraph_pass has not been registered
,这是为什么呢?# mixed precision training
AMP:
scale_loss: 128.0
use_dynamic_loss_scaling: True
# O1: mixed fp16
level: O1
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。