不懂得如何优化CNN图像分类模型?这有一份综合设计指南请供查阅

简介: 本文是一篇关于使用CNN完成图像分类的综合设计指南,涵盖了一些模型设计、模型优化以及数据处理经验,是一份适合图像分类方向研究者参考的综合设计指南。

       对于计算机视觉任务而言,图像分类是其中的主要任务之一,比如图像识别、目标检测等,这些任务都涉及到图像分类。而卷积神经网络(CNN)是计算机视觉任务中应用最为广泛且最为成功的网络之一。大多数深度学习研究者首先从CNN入门,上手的第一个项目应该是手写体MNIST数字图像识别,通过该项目能够大致掌握图像分类的基本操作流程,但由于该项目太成熟,按步骤操作一遍可能只知其然而不知其所以然。所以,当遇到其它图像分类任务时,研究者可能不知道如何开始,或者不知道选取怎样的预训练网络模型、或者不知道对已有的成熟模型进行怎样的调整、模型的层数怎样设计、如何提升精度等,这些问题都是会在选择使用卷积神经模型完成图像分类任务时应该考虑的问题。
       当选择使用CNN进行图像分类任务时,需要优化3个主要指标:精度、仿真速度以及内存消耗。这些性能指标与设计的模型息息相关。不同的网络会对这些性能指标进行权衡,比如VGG、Inception以及ResNets等。常见的做法是对这些成熟的模型框架进行微调、比如通过增删一些层、使用扩展的其它层以及一些不同的网络训练技巧等完成相应的图像分类任务。
       本文是关于使用CNN进行图像分类任务的优化设计指南,方便读者快速掌握图像分类模型设计中所遇到的问题及经验。全文集中在精度、速度和内存消耗这三个性能指标进行扩展,介绍不同的CNN分类方法,并探讨这些方法在这三个性能指标上的表现。此外,还可以看到对这些成熟的CNN方法进行各种修改以及修改后的性能表现。最后,将学习如何针对特定的图像分类任务优化设计一个CNN网络模型。

网络类型

11


       网络类型和性能指标之间有一个非常明显的权衡现象。首先肯定会选择Inception或ResNet网络类型的模型,因为这两个网络比VGG和AlexNet模型更新,只是在精度和仿真速度两个指标之间进行了权衡,如果想要精度,选择ResNet网络是个不错的开端,如果想要仿真速度快,那就选择Inception网络。

用智能卷积设计减少运行时间和内存消耗

       CNN总体设计的最新进展已经有一些令人惊叹的替代方案,在不损失太多精度的前提下,可以加快CNN仿真运行的时间并减少内存消耗。以下所有的这些都可以很容易地集成到上述CNN成熟模型之中:

  • MobileNets:使用深度可分离卷积技术,在仅牺牲1%~5%的精度的条件下,极大地减少了计算量和内存消耗量,精度的降低程度与计算量和内存消耗量的下降成正比。
  • XNOR-Net:使用二进制卷积,即卷积核只有两种取值:-1或1。通过这种设计使得网络具有很高的稀疏性,因此可以很容易地压缩网络参数而不会占用太多内存。
  • ShuffleNet:使用逐点群卷积(pointwise group convolution)和信道重排(channel shuffle)大大降低计算成本,同时网络模型的精度要优于MobileNets。
  • Network Pruning(网络剪枝):去除CNN模型的部分结构以减少仿真运行时间和内存消耗,但也会降低精度。为了保持精度,去除的部分结构最好是对最终结果没有多大的影响。

网络深度

       对于CNN而言,有一些常用的方法是增加通道数以及深度来增加精度,但是会牺牲仿真运行速度和内存。然而,需要注意的是,层数增加对精度的提升的效果是递减的,即添加的层越多,后续添加的层对精度的提升效果越小,甚至会出现过拟合现象。

12
13

激活函数

       对于神经网络模型而言,激活函数是必不可少的。传统的激活函数,比如Softmax、Tanh等函数已不适用于CNN模型,有相关的研究者提出了一些新的激活函数,比如Hinton提出的ReLU激活函数,使用ReLU激活函数通常会得到一些好的结果,而不需要像使用ELU、PReLU或LeakyReLU函数那样进行繁琐的参数调整。一旦确定使用ReLU能够获得比较好的结果,那么可以优化网络的其它部分并调整参数以期待更好的精度。

卷积核大小

       人们可能普遍认为使用较大的卷积核(比如5x5、7x7)总是会产生最高的精度,然而,并不总是这样。研究人员发现,使用较大的卷积核使得网络难以分离,最好的使用像3x3这样更小的内核,ResNetVGGNet已经很好地证明了这一点。此外,也可以使用1x1这样的卷积核来减少特征图(Feature map)的数量。

空洞卷积

       空洞卷积(Dilated Convolutions)使用权重之间的间距以便能够使用远离中心的像素,这种操作允许网络在不增加网络参数的前提下增大感受野,即不增加内存消耗。相关论文表明,使用空洞卷积可以增加网络精度,但也增加仿真运行消耗的时间。

14

数据扩充

       深度学习依赖于大数据,使用更多的数据已被证明可以进一步提升模型的性能。随着扩充的处理,将会免费获得更多的数据,使用的扩充方法取决于具体任务,比如,你在做自动驾驶汽车任务,可能不会有倒置的树、汽车和建筑物,因此对图像进行竖直翻转是没有意义的,然而,当天气变化和整个场景变化时,对图像进行光线变化和水平翻转是有意义的。这有一个很棒的数据扩充库

训练优化

       当对网络训练过程优化时,有几种优化算法可供选择。常用的算法是随机梯度下降算法(SGD),但该算法需要调整学习率等参数,这一过程略显乏味;另外使用自适应学习率梯度下降算法,比如Adam、Adagrad或Adadelta算法,是比较容易实现的,但是可能无法获得最佳的梯度下降算法精度。
       最好的办法是遵循和激活函数类似的处理方式,先用简单的训练方法来看看设计的模型是否工作得很好,然后用更复杂的方式进行调整和优化。个人推荐从Adam开始,该方法使用起来非常容易:只需要设定一个不太高的学习率,通常默认设置为0.0001,这样一般会得到非常好的效果,之后可以使用SGD算法进行微调。

15

类别平衡

       在很多情况下,可能会遇到数据不平衡问题。数据不平衡是什么意思呢?举一个简单的例子:假设你正在训练一个网络模型,该模型用来预测视频中是否有人持有致命武器。但是训练数据中只有50个持有武器的视频,而有1000个没有持有武器的视频。如果使用这个数据集完成训练的话,模型肯定倾向于预测视频中没有持有武器。
       针对这个问题,可以做一些事情来解决:

  • 在损失函数中使用权重:对数据量小的类别在损失函数中添加更高的权重,使得对于该特定类别的任何未正确分类将导致损失函数输出非常高的错误。
  • 过采样:重复包含代表性不足类别的一些训练实例有助于提升模型精度。
  • 欠采样:对数据量大的类别进行采样,降低二者的不平衡程度。
  • 数据扩充:对数据量小的类别进行扩充。

优化迁移学习

       对于大多数数据而言,一般的做法是使用迁移学习,而不是从头开始训练网络模型。迁移学习就是基于一些成熟的模型,使用其部分网络结构参数,只训练一些新的网络部件。在这个过程中遇到的问题是,选择什么样的模型进行迁移学习,保留哪些网络层、哪些网络部件需要重新训练,这都取决于你的数据集是什么样子。如果你的数据与预训练的网络(网络一般是通过ImageNet数据集训练)更相似,那么需要重新训练的网络部件也越少,反之亦然。例如,假设正在尝试区一个图像是否包含葡萄,那么数据集是由包含葡萄的图像与不包含图像组成,这些图像与ImageNet中的图像非常相似,所以只需要重新训练选取的模型最后几层,也许只是训练最后的全连接层,因为ImageNet是区分1000类,而本次任务只区分两类——图像中包不包含葡萄,所以只需更改最后的全连接层参数。又假设正在尝试分类外太空图像中是否包含行星,这类的数据与ImageNet的数据集有很大的不同,因此需要重新训练模型后面的卷积层。

16

结论

       本文是针对使用CNN完成图像分类任务的优化设计指南,给出了一些常见的优化方式,便于初学者按照给定的规则调整优化网络模型。

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

作者信息

George Seif,机器学习工程师,
个人主页:https://www.linkedin.com/in/georgeseif/
本文由阿里云云栖社区组织翻译。
文章原标题《A Comprehensive Design Guide for Image Classification CNNs》,译者:海棠,审校:Uncle_LLD
文章为简译,更为详细的内容,请查看原文

相关文章
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。
【7月更文挑战第2天】计算机视觉借助深度学习实现了革命性进步,从图像分类到复杂场景理解,深度学习模型如CNN、RNN重塑了领域边界。AlexNet开启新时代,后续模型不断优化,推动对象检测、语义分割、图像生成等领域发展。尽管面临数据隐私、模型解释性等挑战,深度学习已广泛应用于安防、医疗、零售和农业,预示着更智能、高效的未来,同时也强调了技术创新、伦理考量的重要性。
6 1
|
3天前
|
机器学习/深度学习 算法
基于PSO粒子群优化的CNN-LSTM的时间序列回归预测matlab仿真
**算法预览图省略** - **软件版本**: MATLAB 2022a - **核心代码片段**略 - **PSO-CNN-LSTM概览**: 结合深度学习与优化,解决复杂时间序列预测。 - **CNN**利用卷积捕获时间序列的空间特征。 - **LSTM**通过门控机制处理长序列依赖,避免梯度问题。 - **流程**: 1. 初始化粒子群,每个粒子对应CNN-LSTM参数。 2. 训练模型,以验证集MSE评估适应度。 3. 使用PSO更新粒子参数,寻找最佳配置。 4. 迭代优化直到满足停止条件,如最大迭代次数或找到优良解。
|
29天前
|
机器学习/深度学习 算法 数据可视化
基于GA遗传优化的CNN-LSTM的时间序列回归预测matlab仿真
摘要:该内容展示了基于遗传算法优化的CNN-LSTM时间序列预测模型在matlab2022a中的应用。核心程序包括遗传算法优化过程、网络训练、误差分析及预测结果的可视化。模型通过GA调整CNN-LSTM的超参数,提升预测准确性和稳定性。算法流程涉及初始化、评估、选择、交叉和变异等步骤,旨在找到最佳超参数以优化模型性能。
|
1月前
|
机器学习/深度学习 JSON 测试技术
CNN依旧能战:nnU-Net团队新研究揭示医学图像分割的验证误区,设定先进的验证标准与基线模型
在3D医学图像分割领域,尽管出现了多种新架构和方法,但大多未能超越2018年nnU-Net基准。研究发现,许多新方法的优越性未经严格验证,揭示了验证方法的不严谨性。作者通过系统基准测试评估了CNN、Transformer和Mamba等方法,强调了配置和硬件资源的重要性,并更新了nnU-Net基线以适应不同条件。论文呼吁加强科学验证,以确保真实性能提升。通过nnU-Net的变体和新方法的比较,显示经典CNN方法在某些情况下仍优于理论上的先进方法。研究提供了新的标准化基线模型,以促进更严谨的性能评估。
60 0
|
19天前
|
机器学习/深度学习 自然语言处理 PyTorch
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
36 0
|
2月前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。
|
27天前
|
机器学习/深度学习 算法
基于GA遗传优化的CNN-GRU的时间序列回归预测matlab仿真
摘要: 使用MATLAB2022a,展示了一种基于遗传算法优化的CNN-GRU时间序列预测模型,融合遗传算法与深度学习,提升预测精度。遗传算法负责优化模型超参数,如学习率和神经元数量,以最小化均方误差。CNN负责特征提取,GRU处理序列数据中的长期依赖。流程包括初始化、评估、选择、交叉、变异和迭代,旨在找到最佳超参数组合。
|
2月前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
摘要: 本文介绍了使用matlab2022a中优化后的算法,应用于时间序列回归预测,结合CNN、LSTM和Attention机制,提升预测性能。GWO算法用于优化深度学习模型的超参数,模拟灰狼社群行为以求全局最优。算法流程包括CNN提取局部特征,LSTM处理序列依赖,注意力机制聚焦相关历史信息。GWO的灰狼角色划分和迭代策略助力寻找最佳解。
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于WOA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
该文介绍了使用优化后的深度学习模型(基于CNN、LSTM和Attention机制)进行时间序列预测,对比了优化前后的效果,显示了性能提升。算法在MATLAB2022a中实现,利用WOA(鲸鱼优化算法)调整模型超参数。模型通过CNN提取局部特征,LSTM处理序列依赖,Attention机制关注相关历史信息。核心程序展示了WOA如何迭代优化及预测过程,包括数据归一化、网络结构分析和预测误差可视化。
|
2月前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
摘要: 该文介绍了使用 MATLAB 2022a 进行时间序列预测的算法优化。优化前后对比显示效果改善明显。算法基于CNN、GRU和注意力机制的深度学习模型,其中GWO(灰狼优化)用于优化超参数。CNN提取时间序列的局部特征,GRU处理序列数据的长期依赖,注意力机制聚焦关键信息。GWO算法模拟灰狼行为以实现全局优化。提供的代码片段展示了网络训练和预测过程,以及预测值与真实值的比较。

热门文章

最新文章