imagenet数据集_base model第一弹:在ImageNet上训练ResNet(1)

12a1135b4aa80fb5522ed44e66b69c0b.png

下列代码均在pytorch1.4版本中测试过,确认正确无误。

ImageNet

ImageNet是一个用于图像分类的超大数据集,它的官方网站是:http://www.image-net.org/ 。在cv领域,使用模型在ImageNet上的预训练参数来训练其他任务已经是一种普遍的做法。本文的目的是从零开始介绍如何在ImageNet上训练模型,就以最常用的ResNet50为例。 由于ImageNet数据集每年都会更新,通常我们指的ImageNet数据集是ILSVRC2012,该数据集共有1000个类,120万张训练集图片和5万张验证集图片。你可以在官方网站下载该数据集,也可以从我的百度云下载:链接:https://pan.baidu.com/s/1ROYJwexTvXN9bCzuyAYSuw 提取码:yn5z 。 下载后解压,文件夹组织结构如下:

ILSVRC2012

这样数据集就处理好了。

ResNet网络结构

为了简便起见,我们使用pytorch官方提供的ResNet实现,但在加载模型处稍作修改。pytorch官方提供了ResNet的预训练模型,但该模型同时保存了模型结构和模型参数。官方模型的点数如下可以在这里查到:https://github.com/facebookarchive/fb.resnet.torch 注意输入均为224x224。

经过修改后的ResNet实现代码如下。注意我没有修改ResNet的网络结构,仅仅增加了ResNet34_half和ResNet50_half(即ResNet34和ResNet50 channel数减半)。另外,由于下面的训练中我保存的pth文件将只保存模型参数而不保存模型结构,所以对加载模型部分进行了修改,这样我们可以从本地加载训练好的pth模型参数,修改网络结构也很方便。当然,在ImageNet上训练ResNet时并不需要加载预训练模型。

"""

由于知乎文章字数限制,后面的训练代码与训练结果我们将在第2部分讲解。

所有代码已上传到本人github repository:

zgcr/pytorch-ImageNet-CIFAR-COCO-VOC-training​github.com

本文也同时放在了我的CSDN博客上:

base model第一弹:在ImageNet上训练ResNet​blog.csdn.net
19e73398f9dd3262651dd5098d233778.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段话是一个配置文件,用于指定训练神经网络模型的超参数和数据集参数。具体解释如下: - setup: selflabel:表示使用自标签技术进行训练。 - confidence_threshold: 0.99:表示置信度阈值为0.99。 - use_ema: True,ema_alpha: 0.999:表示使用指数移动平均(EMA)方法进行训练,并设置EMA的衰减系数为0.999。 - criterion: confidence-cross-entropy,criterion_kwargs: apply_class_balancing: False:表示使用置信度交叉熵损失函数进行训练,并关闭类别平衡。 - backbone: resnet50,num_heads: 1:表示使用ResNet-50作为模型骨架,并设置模型头数为1。 - train_db_name: imagenet_50,val_db_name: imagenet_50,num_classes: 50:表示使用ImageNet-50数据集进行训练和验证,并共有50个类别。 - augmentation_strategy: ours,augmentation_kwargs: crop_size: 224,normalize: mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225],num_strong_augs: 4,cutout_kwargs: n_holes: 1 length: 75 random: True:表示使用作者自己的数据增强策略进行训练,并设置裁剪尺寸为224、归一化参数为给定值、强增强次数为4、cutout参数为1个洞、洞的大小为75,并随机选择位置。 - transformation_kwargs: crop_size: 224,normalize: mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225]:表示在验证时使用裁剪尺寸为224、归一化参数为给定值的数据增强策略。 - optimizer: sgd,optimizer_kwargs: lr: 0.03,weight_decay: 0.0,nesterov: False,momentum: 0.9:表示使用随机梯度下降(SGD)优化器进行训练,并设置学习率为0.03、权重衰减为0.0、是否使用Nesterov动量为False、动量系数为0.9。 - epochs: 25,batch_size: 512,num_workers: 16:表示总共训练25个epochs,每个batch的大小为512,使用16个worker进行数据加载。最后,scheduler: constant表示使用恒定的学习率调度程序,即不会随着训练过程中的epoch数量而改变。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值