【分类技巧】Fixing the train-test resolution discrepancy

本文介绍了一种针对ImageNet数据集分类模型的优化策略,通过在训练时使用较小分辨率,测试时使用较大分辨率(训练分辨率的1.15倍),可以显著提升模型的验证精度。这种方法旨在解决训练和测试时目标尺寸差异导致的问题,通过调整分辨率使得模型在训练和测试过程中的感受野更一致。实验证明,该策略能将ResNet50的精度从77.1%提升至79.8%,并且通过微调FC层,可以进一步提高准确性。
摘要由CSDN通过智能技术生成

【GiantPandaCV导语】调研分类方法的时候师姐推荐的一篇paper,其核心是训练的时候使用小分辨率,测试的时候使用大分辨率(训练分辨率的1.15倍),能够有效提升验证精度。

Motivation

ImageNet数据集分类模型通常采用的数据增强方式会导致训练时和测试时的模型看到的目标尺寸出现差异。即训练分辨率的降低可以一定程度上提高测试阶段的精度。

举个例子:

图一:原先的ImageNet训练方法

上图代表训练阶段图片处理流程:训练阶段主要通过随即选择一块矩形区域,然后resize到224固定大小,这样训练得到的尺度可能是上图右侧对应的。

下图代表测试阶段图片处理流程:图片直接resize到固定范围256x256, 然后从中间crop一个224x224大小的图片。

通过上图就可以看出,训练过程中模型看到的图片与测试的时候看到的分类区域 (Region of Classification)是不一样的:训练过程看到的目标更大,测试过程看到的目标更小 。这可能导致训练过程学到的分布并不能非常好的应用到测试过程中,本文致力于解决这个问题。

根据以上简单的观察提出了一种策略,使得模型在训练和测试过程中使用不同的分辨率然后在高分辨率上进行微调

方法简单但效果惊人:可以将ResNet50从77.1%提升至79.8%!

Fixing Resolution方法

简单表述实现方案(不关心原理的看到这里就可以了):

  • 缩小训练过程的分辨率,变为原分辨率/1.15,进行普通的训练过程。 以下图为例训练分辨率为128。

  • 测试过程使用更大分辨率的图片进行测试。以下图为例测试分辨率为384。

  • 想进一步提高准确率,可以固定FC层的参数并在高分辨率384下进行微调少量epoch。

训练过程采用的增强:

transforms.RandomResizedCrop(224, scale=(0.08, 1.0), ratio=(0.75, 1.33)),
transforms.RandomHorizontalFlip()

测试过程采用的增强:

transforms.Resize(256)
transforms.CenterCrop(224)

以上就是操作方法,那么不看推导,仅凭直觉,为何这种想法能work呢?

  • 训练集增强使用随机Crop,如果crop的分辨率比较高,就如图一所示,训练过程中看到的马目标更大。测试过程中采用CenterCrop,如果保持相同分辨率,图片中马的目标就比较小。

  • 从感受野的角度理解,假如我们想要分类马,那么模型的感受野会自动调整,转向训练集中比较大的目标。测试的过程中遇到更小的目标,可能并不会识别的很好。(最优的情况是理论感受野=目标大小)

  • 如图二所示,本文提出训练过程中使用小分辨率,提升测试过程的分辨率,这个时候可以看出这两匹马的大小是差不多大的。

  • 总体的直觉是:

    • 训练使用更小分辨率,模型在训练过程中看到的RoC与原先相比会变小。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

*pprp*

如果有帮助可以打赏一杯咖啡

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

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

打赏作者

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

抵扣说明:

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

余额充值