图像分类性能提升方案


方法技巧关注方向主要为三个方面,数据,模型和损失函数。

数据

EDA(探索性数据分析)

图像预处理

1.mixup

论文:https://arxiv.org/pdf/1801.02929v2.pdf
代码:https://github.com/hongyi-zhang/mixup
开源代码中采用的是一个dataloader,和论文中说的两个DataLoader不一致,下面是代码的基本流程。
1.定义mixup的形式。在每个batch中的操作
在这里插入图片描述
在这里插入图片描述2,论文中实验流程和结果:
图像分类实验
mixup实质是为数据提供了更加平滑的干扰因素。在数据集ImageNet2012上,mixup的图像效果如下:
在这里插入图片描述

和ERM进行了比较,参数保持在[0.1,0.4]之间,基本都要比ERM提高了至少一个百分点。
参数的值对应的取值分布:
在这里插入图片描述
对于mixup,我们发现,与ERM相比, α \alpha α∈[0.1,0.4]能够提高性能,而对于较大的 α \alpha α, mixup会导致欠拟合。我们还发现,具有较高能力和/或较长训练时间的模型在混合中受益最大。例如,当训练90个epoch时,ResNet-101和ResNeXt-101的混合变体相比ERM类似物获得了更大的提高(0.5%到0.6%)比较小的模型如ResNet-50的提高(0.2%)要大得多。当训练200个epoch时,ResNet-50混合变量的top-1错误比90个epoch运行时进一步减少1.2%,而它的ERM模拟值保持不变。
对于混合,我们使用了五个阶段的热身期,在这个阶段我们对原始的训练例子进行训练,因为我们发现这样可以加快初始收敛速度。表4显示,在这个任务上,mixup的性能优于ERM,特别是在使用具有更大容量的模型vga -11时。

原理:实质新增了label为 λ ( l a b e l i ) + ( 1 − λ ) l a b e l j \lambda(label_i)+(1-\lambda)label_j λ(labeli)+(1λ)labelj的样本,样本比原数据更接近分类最佳分类平面,训练时训练更严格,能学到更多的差异特征。

2.马赛克,cutmix

模型

第一步.开发一个baseline

这里,我们使用一个非常简单的架构创建一个基本的模型,没有任何正则化或dropout层,看看我们是否能超过50%的准确率基线。尽管我们不可能总能达到这个目标,但如果我们在尝试了多种合理的架构后不能超过基线,那么输入数据可能不包含模型进行预测所需的信息。backbone尝试常用的 inception ,ResNet,DenseNet等。

第二步.开发一个足够大可以过拟合的模型

一旦我们的基线模型有足够的能力超过基线分数,我们就可以增加基线模型的能力,直到它在数据集上过拟合为止,然后我们就开始应用正则化。我们可以通过以下方式增加模块容量:

  • 添加跟多的层
  • 使用更好的结构
  • 更完善的流程训练
    目前存在以下结构模块,可以改进模型的容量,但几乎没有改变计算复杂度;
  • Residual Networks
  • Wide Residual Networks
  • Inception
  • EfficientNet
  • Swish activation
  • Residual Attention Network
    大多数时候,模型容量和精度是正相关的 —— 随着容量的增加,精度也会增加,反之亦然。

第三步.训练过程的优化

以下方法用来调整模型的训练过程,通过实例项目来看看他们是如何工作的;

  • Mixed-Precision Training
  • Large Batch-Size Training 大尺度训练
  • Cross-Validation Set 交叉验证
  • Weight Initialization 权重初始化
  • Self-Supervised Training (Knowledge Distillation) 自监督训练,知识蒸馏
  • Learning Rate Scheduler学习率
  • Learning Rate Warmup 学习率预热 先使用小的学习率训练一段,再使用较大的初始学习率
  • Early Stopping早停,防止过拟合,设置停止条件
  • Differential Learning Rates 差异化学习率
  • Ensemble 集成学习
  • Transfer Learning 迁移学习
  • Fine-Tuning 微调

超参数调参
与参数不同,hyperparameters是由你在配置模型时指定的(即学习率、epoch的数量、hidden units的数量、batch size大小等)。
你可以通过使用hyperparameter调优库,比如Scikit learn Grid Search,Keras Tuner来自动化这个过程,而不是去手动配置。这些库会在你指定的范围内尝试所有的hyperparameter组合,返回表现最好的模型。
需要调优的超参数越多,过程就越慢,因此最好选择模型超参数的最小子集进行调优。
并不是所有的模型超参数都同样重要。一些超参数会对机器学习算法的行为产生巨大的影响,进而影响其性能。你应该小心地选择那些对模型性能影响最大的参数,并对它们进行调优以获得最佳性能。

损失函数

1.标签平滑(label smooth)

2.Center Loss

惩罚特征向量和类别中心在欧式空间中的距离来增强类内的紧密性,使用级联的 Softmax loss 来保证类间的分离性。但是,在训练时随着 ID 数量的增加,更新类别中心十分困难。与softmax一起使用。
对样本的特征进行相似性进行计算:
使用过程:
1,计算整体训练集中每个类的类内中心
2,训练过程中,返回每个batch的样本的特征向量和结果
3,在每个batch中,计算每个样本到该样本类别的类内中心的欧式距离作为损失函数,这样就提高了类内的聚集。<

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在图像分析中,土地利用图像的分类是重要的应用。 用于数据分类的算法有很多种,有些算法是基于规则的,有些算法是基于学习的。 我们可能会得到很好的分类,但是某些像素总是被错误分类或未分类。 错误分类的主要原因是混合像素。 单个像素中各种对象的组成使真正类别的识别更加困难。 子像素算法可以更好地了解此类像素的各个类别。 子像素映射方法根据图像的类型而变化。 在全色或多光谱图像中,与高光谱图像相比,数据集要少得多。 高光谱图像包含连续的波段。 每个频带非常窄,只有几纳米的带宽。 在高光谱图像中有一百多个这样的波段可用。 对于典型的神经网络而言,处理如此庞大的数据集非常困难。 前馈神经网络无法达到局部最小值,而反向传播神经网络需要大量时间才能收敛到最小值。 径向基函数神经网络相对于其他具有某些优势,但在高光谱成像方面的性能较差。 卷积神经网络将解决巨大的数据问题。 它具有3维向量,其中我们可以采用多个内核对感兴趣的数据进行操作。 这个内核为我们提供了深度,而深度只是同一个像素的更多信息。 因此,与其他神经网络相比,我们在这里可以节省很多信息。 但是在池化层之后的卷积神经网络中,我们的数据是3D形式,我们需要通过展平再次将其转换为1D。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值