图像分类必备经典模型,一文打尽知多少?(一)

简介: 图像分类必备经典模型,一文打尽知多少?(一)

图像分类必备经典模型,一文打尽知多少?(一)

机器之心 2022-08-21 11:33 发表于北京

以下文章来源于机器之心SOTA模型,作者机器之心SOTA模型

机器之心专栏

本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。


本文将分 3 期进行连载,共介绍 15 图像分类任务上曾取得 SOTA 的经典模型。


  • 第1期:AlexNet、VGG、GoogleNet、ResNet、ResNetXt
  • 第2期:DenseNet、MobileNet、SENet、DPN、IGC V1
  • 第3期:Residual Attention Network、ShuffleNet、MnasNet、EfficientNet、NFNet

您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。


本期收录模型速览


模型  SOTA! 模型资源站收录情况 模型来源论文
AlexNet https://sota.jiqizhixin.com/models/models/d07f8019-2816-4ce4-af44-ff9c1310e6ee
收录总数:10
支持框架:PyTorch、CANN、MindSpore、caffe、TensorFlow、PaddlePaddle 等
Imagenet Classification with Deep Convolution Neural Network
VGG https://sota.jiqizhixin.com/models/models/9d4c5378-8f0d-43aa-b64f-976a3c87273b
收录总数:16
支持框架:CANN、PyTorch、TensorFlow、MindSpore、caffe、PaddlePaddle 等
Very Deep Convolutional Networks for Large-Scale Image Recognition
GoogleNet https://sota.jiqizhixin.com/models/models/5b5254d4-c27d-4014-85b0-c1cb48488995
收录总数:10
支持框架:CANN、TensorFlow、PyTorch、MindSpore、PaddlePaddle 等
Going Deeper with Convolutions
ResNet https://sota.jiqizhixin.com/models/models/51e81484-f784-4b1d-9b4a-723d9c18a76f
收录总数:47
支持框架:CANN、TensorFlow、MindSpore、PyTorch、PaddlePaddle、JAX 等
Deep Residual Learning for Image Recognition
ResNeXt https://sota.jiqizhixin.com/models/models/0e3dac75-f35b-4813-9355-c4c9f5cb0f78
收录总数:55
支持框架:PyTorch、TensorFlow、CANN、MindSpore、Torch、PaddlePaddle、MXNet、Caffe2 等
Aggregated Residual Transformations for Deep Neural Networks


图像分类是计算机视觉领域最经典的任务之一,目的是将输入的图像对应到预定义的语义类别中,即打上类别标签。传统的图像分类方法由底层特征学习、特征编码、空间约束、分类器设计、模型融合等步骤组成。


首先,从图像中提取特征,经典的特征提取方法包括HOG(Histogram of Oriented Gradient, 方向梯度直方图) 、LBP(Local Bianray Pattern, 局部二值模式)、SIFT(Scale-Invariant Feature Transform, 尺度不变特征转换)等,也可以将多种特征融合以保留更多有用信息。然后,对特征进行编码后去除冗余和噪声,生成特征编码,经典方法包括稀疏编码、局部线性约束编码、Fisher向量编码等。再然后,经过空间特征约束后实现特征汇聚,例如经典的金字塔特征匹配方法。最后,利用分类器进行分类,经典分类器包括SVM、随机森林等等。



Alex Krizhevsky 在 2012 年 ILSVRC 提出的 CNN 模型首次将深度学习应用于大规模图像分类任务,其效果远超传统的图像分类方法,一举获得 ILSVRC 2012 的冠军,开启了深度学习模型在图像分类中的应用历程。这个模型就是著名的 AlexNet。自此,图像分类改变了传统的致力于提取有效的特征、改进分类器的有效性的研究和应用路径,转为研究不同的深度学习模型架构。


深度卷积神经网络为图像分类带来了一系列突破。深度神经网络集成了低/中/高层次的特征,可以被端到端训练,特征的层次可以通过网络的深度来丰富。甚至有研究人员称,正是在图像分类任务中应用的巨大成功,带动了深度学习的方法。


AlexNet


AlexNet 首次发表在 NIPS 2012,获得了 ILSVRC 2012 的冠军,开启了深度学习模型在图像分类中的应用历程。AlexNet 实际上就是一个 CNN,如下图,包含 8 个学习层:5 个卷积层和 3 个全连接层。在现在看来,AlexNet 的架构并不复杂。

图 1 AlexNet 架构


AlexNet 首次在 CNN 中成功应用了 ReLU、Dropout 和 LRN 等。具体如下:

(1)AlexNet 中使用 Relu 作为 CNN 的激活函数,成功解决了 Sigmoid 在网络较深时的梯度弥散问题:



(2)AlexNet 在训练时使用 Dropout 随机忽略一部分神经元,以避免模型过拟合。在AlexNet 中主要是最后几个全连接层使用了 Dropout。


(3)AlexNet 中引入了局部响应归一化( Local Response Normalization,LRN)。对于第 i 个特征图 (x,y) 上的神经元活性 (a_x,y)^i ,应用 ReLU 非线性,响应归一化的活动是


通过向局部神经元的活动引入竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。


(4)AlexNet 使用重叠的最大池化。此前 CNN 中普遍使用平均池化,AlexNet 全部使用最大池化,避免平均池化的模糊化效果。并且 AlexNet 中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。


(5)使用 CUDA 加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。受限于当时的显卡显存条件,AlexNet 使用两卡并行训练,在最终的卷积层中,单 GPU 网络实际上可以具有与双 GPU 网络相同数量的内核。
(6)优化器是 SGD+Momentum。


当前 SOTA!平台收录 AlexNet 共 10 个模型实现资源,支持的主流框架包含 PyTorch、CANN、MindSpore、caffe、TensorFlow、PaddlePaddle 等。


模型 SOTA!模型资源站详情页
AlexNet 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/d07f8019-2816-4ce4-af44-ff9c1310e6ee


VGG


VGG 是指用于大规模图像识别的极深度卷积网络(VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION),重点研究的是深度对CNN 性能的影响,提出用堆叠的小卷积核来代替大卷积核,论文发表在 ICLR 2015。VGG 的核心思想是使用具有非常小的卷积核的架构,增加网络的深度,然后进行全面评估。实验表明将深度推至 16-19 层可以实现对现有技术的提升。具体的,VGG16、VGG19 中的数字都是指有参数层的数量。


表 1 ConvNet 的配置(以列显示)


如表 1 所示,ConvNet 的配置的深度从左(A)到右(E)增加,卷积层的参数表示为 "conv <receptive field size>-<number of channels>"。其中,忽视了 Relu 层。

在训练阶段,ConvNets 的输入是一个固定大小的 224×224 的 RGB 图像。我们所做的唯一预处理是减去每个像素的 RGB 平均值,该值是在训练集上计算出来的。将图像传递到卷积层的堆栈中,使用具有非常小的感受野(receptive field,RF)的过滤器:3×3。在其中一个配置中,还利用了 1x1 卷积核,这可以看作是输入通道的线性变换。卷积 stride 固定为 1 ,padding 是为了卷积前后分辨率不变。池化由 5 个 max-pooling 执行,大小为 2,stride 为 2。引入 1×1 卷积层(配置C,表1)是增加决策函数的非线性而不影响卷积层的感受野的一种方法。

卷积层的堆栈(在不同的架构中具有不同的深度)之后是三个全连接(FC)层:前两个层各有 4096 个通道,第三层进行 1000 维度的 ILSVRC 分类,因此包含 1000 个通道(每个对应一个类别)。最后一层是 softmax 层。在所有网络中,全连接层设置都是相同的。

VGG 使用 ReLu 作为激活函数,网络(除了一个)均不包含 LRN。文中实验证明这种归一化不能提高 ILSVRC 数据集的性能,还会导致内存消耗和计算时间增加。此外,VGG 使用了 Dropout 来优化网络结构。VGG 的优点是结构简单,易于推广应用。缺点则是参数量和计算量都很大。

当前 SOTA!平台收录 VGG 共 16 个模型实现资源,支持主流框架包括 CANN、PyTorch、TensorFlow、MindSpore、caffe、PaddlePaddle 等。


模型 SOTA!模型资源站详情页
VGG 前往 SOTA!模型资源站获取实现资源:https://sota.jiqizhixin.com/models/models/9d4c5378-8f0d-43aa-b64f-976a3c87273b



相关文章
|
机器学习/深度学习 数据可视化 数据挖掘
初学者该如何选择最适合自己的图像分类模型
初学者该如何选择最适合自己的图像分类模型
2731 0
初学者该如何选择最适合自己的图像分类模型
|
机器学习/深度学习 缓存 PyTorch
PyTorch 2.0 推理速度测试:与 TensorRT 、ONNX Runtime 进行对比
PyTorch 2.0 于 2022 年 12 月上旬在 NeurIPS 2022 上发布,它新增的 torch.compile 组件引起了广泛关注,因为该组件声称比 PyTorch 的先前版本带来更大的计算速度提升。
1493 0
|
算法 数据挖掘 开发者
Hunt' s Algorithm| 学习笔记
快速学习 Hunt' s Algorithm。
Hunt' s Algorithm| 学习笔记
|
10月前
|
人工智能 监控 数据可视化
什么是低代码开发平台?2025年最热门的10大低代码开发平台盘点!
低代码开发平台通过可视化拖拽、模型驱动等方式,大幅减少手工编码,提升应用开发效率。当下更是结合AI能力,自动生成应用,组件,图表,进一步加快应用软件的开发效率落地。
|
5月前
|
人工智能 自然语言处理 搜索推荐
生成式引擎优化(GEO)的深层逻辑:超越内容堆砌的“两大核心+四轮驱动”范式研究
本文旨在深入探讨GEO优化的本质,驳斥其仅为“内容堆砌”的片面认知。
472 15
|
5月前
|
缓存 安全 Java
Java 类加载机制硬核全解:双亲委派模型底层原理与破坏场景的实战
本文深入解析Java类加载机制,从JVM规范底层到生产级架构实战。首先详解类加载的7个生命周期阶段和6种主动使用触发规则,通过实例验证主动/被动使用的区别。重点剖析双亲委派模型的核心原理、JDK17类加载器层次结构及源码实现,并给出遵循规范的自定义类加载器实现。特别分析5大经典破坏场景:SPI机制通过线程上下文类加载器逆向加载、Web容器热部署的自定义加载逻辑、JDK9+模块化体系重构、插件化架构的动态加载等。
409 3
|
6月前
|
弹性计算 人工智能 固态存储
2026年阿里云服务器最新租用价格:包年包月和按量收费标准与活动价格参考
2026年阿里云服务器价格更新,轻量应用服务器低至38元/年(2核2G,200M带宽),ECS经济型e实例99元/年(2核2G,3M带宽),通用算力型u1实例199元/年(2核4G,5M带宽),企业用户专享。GPU服务器首购享4折优惠。同时,阿里云推出99元和199元长效特惠云服务器,新老用户同享,续费不涨价。用户可根据需求选择不同配置和时长,搭配165元无门槛优惠券及阶梯折扣,实现低成本高效上云,满足个人开发、企业应用等多元场景需求。
|
机器学习/深度学习 人工智能 编解码
【AI系统】MobileNet 系列
本文详细介绍 MobileNet 系列模型,重点探讨其轻量化设计原则。从 MobileNetV1 开始,通过深度可分离卷积和宽度乘数减少参数量,实现低延迟、低功耗。后续版本 V2、V3、V4 逐步引入线性瓶颈、逆残差、Squeeze-and-Excitation 模块、新型激活函数 h-swish、NAS 搜索等技术,持续优化性能。特别是 MobileNetV4,通过通用倒瓶颈(UIB)和 Mobile MQA 技术,大幅提升模型效率,达到硬件无关的 Pareto 最优。文章结合最新深度学习技术,全面解析各版本的改进与设计思路。
5703 8
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
1676 3

热门文章

最新文章