当前位置: 首页 > article >正文

模型减肥秘籍:模型压缩技术 CNN基础

这里是Datawhale的组队学习活动,主要介绍的是模型压缩技术。后续将以CNN网络为基础点,带领大家领略模型压缩的魅力。首先是回顾一下一些关于CNN的基础知识。

参考链接:

模型减肥秘籍:模型压缩技术-课程详情 | Datawhale

datawhalechina/leedl-tutorial: 《李宏毅深度学习教程》(李宏毅老师推荐👍,苹果书🍎),PDF下载地址:https://github.com/datawhalechina/leedl-tutorial/releases

CNN介绍

  CNN网络,即卷积神经网络(Convolutional Neural Network),是一类特别为处理具有类似网格结构的数据设计的深度学习网络,比如图像(2D网格)和声音信号(1D网格)。CNN在图像和视频识别、图像分类、医学图像分析等领域取得了显著的成功。

 核心组成

  CNN的核心思想是利用卷积层来自动并有效地提取输入数据的特征,无需手动特征提取。这些特征通过网络的多个层次被逐渐抽象和组合,用以执行分类、检测或分割等任务。CNN通常包含以下类型的层:

  1. 卷积层(Convolutional Layers): 这些层通过卷积运算提取输入数据的局部特征,每个卷积层有多个卷积核(Kernel),能够产生不同的特征图(Feature Maps)。

  2. 激活层(Activation Layers): 通常跟在卷积层后面,引入非线性,使得网络可以学习更加复杂的特征。最常用的激活函数是ReLU(Rectified Linear Unit)。

  3. 池化层(Pooling Layers): 这些层用于降低特征图的空间尺寸,减少后续层的参数数量和计算量,同时使特征检测变得更加稳定。

  4. 全连接层(Fully Connected Layers): 通常位于CNN的末端,将卷积层或池化层输出的高维特征向量转换为最终的输出,如分类标签。

优点

  CNN通过层的叠加和组合,能够自动并有效地从原始数据中学习到有用的特征表示,避免了传统机器学习方法中手工特征提取的繁琐过程。具有如下优点:

  1. 局部连接:卷积层中的神经元仅与输入数据的一个局部区域相连接,这使得网络专注于局部特征,并增强了模型的空间利用率。
  2. 参数共享:通过卷积层中的卷积核重复使用同一组参数,CNN能够以较少的参数量处理大规模输入数据。
  3. 平移不变性:通过池化层,CNN能够对输入数据的小范围平移保持不变性,这对于识别图像中的对象特别重要。

这三个优点其实也对应了图像识别中的三个观察:

观察 1:检测模式不需要整张图像

神经元不需要把整张图像当作输入, 只需要把图像的一小部分当作输入,就足以让它们检测某些特别关键的模式是否出现,而不用采取全连接的方式将整个图像传入神经元。

简化 1:感受野

根据观察1 可以做第1个简化,卷积神经网络会设定一个区域,即感受野(receptive f ield),每个神经元都只关心自己的感受野里面发生的事情。

观察 2:同样的模式可能会出现在图像的不同区域

第2个观察是同样的模式,可能会出现在图像的不同区域。比如说模式鸟嘴,它可能出 现在图像的左上角,也可能出现在图像的中间。

简化 2:共享参数

既然要检测的模式是一样的,只是检测的区域不同,那么其实可以共享神经元的参数。

上面感受野的第1个神经元会跟下面感受野的第1个神经元共 用参数,上面感受野的第2个神经元跟下面感受野的第2个神经元共用参数······ 所以每个 感受野都只有一组参数而已,这些参数称为滤波器(filter)。

接下来通过另一个角度来说明卷积神经网络。一个卷积层里面就是有一排的滤波器,每个滤波器都是一 个3×3×通道,其作用是要去图像里面检测某个模式。这些模式要在3×3×通道,这个小 的范围内,它才能够被这些滤波器检测出来。

滤波器就是一个一个的张量,这些张量里面的数值就是模型里面的参数。这些滤波器里面的 数值其实是未知的,它是可以通过学习找出来的。

第1个版本的故事里面说 到了有一些神经元,这些神经元会共用参数,这些共用的参数就是第2个版本的故事里面的滤波器。

在第1个版本的故事里面,不同的神经元可以共享权重,去守备不同的 范围。而共享权重其实就是用滤波器扫过一张图像,这个过程就是卷积。这就是卷积层名字的来。把滤波器扫过图像就相当于不同的感受野神经元可以共用参数,这组共用的参数就叫做一个滤波器。

观察 3:下采样不影响模式检测

把一张比较大的图像做下采样(downsampling), 把图像偶数的列都拿掉,奇数的行都拿掉,图像变成为原来的1/4,但是不会影响里面是什么东西。例如,把一张大的鸟的图像缩小,这张小的图像还是一只鸟。

简化 3:汇聚

根据第3个观察,汇聚被用到了图像识别中。汇聚没有参数,所以它不是一个层,它里面 没有权重,它没有要学习的东西,汇聚比较像Sigmoid、ReLU等激活函数。因为它里面是没 有要学习的参数的,它就是一个操作符(operator),其行为都是固定好的,不需要根据数据 学任何东西。每个滤波器都产生一组数字,要做汇聚的时候,把这些数字分组,可以2×2个 一组,3×3、4×4也可以,这个是我们自己决定的,图4.27中的例子是2×2个一组。汇聚 有很多不同的版本,以最大汇聚(max pooling)为例。最大汇聚在每一组里面选一个代表, 选的代表就是最大的一个,如图4.28所示。除了最大汇聚,还有平均汇聚(meanpooling), 平均汇聚是取每一组的平均值。

一个经典的CNN网络架构如下,是不是对其中的不同层有了更深理解了呢。


http://www.kler.cn/a/392220.html

相关文章:

  • 【Java SE】接口类型
  • gpu-V100显卡相关知识
  • 【C++】类与对象的基础概念
  • 使用@react-three/fiber,@mkkellogg/gaussian-splats-3d加载.splat,.ply,.ksplat文件
  • ubuntu cmake CPack将第三方库进行打包
  • 【贪心算法】No.1---贪心算法(1)
  • docker运行ActiveMQ-Artemis
  • 第三十七章 Vue之编程式导航及跳转传参
  • 边缘计算在智能交通系统中的应用
  • 在码上飞用自然语言开发软件,按效果付费,不好用我买单!
  • Angular 和 Vue2.0 对比
  • 文献解读-DNAscope: High accuracy small variant calling using machine learning
  • Vue实际应用之无限滚动、css之、混合宏和~
  • 密码学基础 -- RSA-PSS盐值长度大揭秘
  • 机器学习—模型评估
  • 【日常记录-Java】代码配置Logback
  • GitHub每日最火火火项目(11.13)
  • 重学 Android 自定义 View 系列:动手实现专属 TextView
  • Vue3 : Tailwindcss之margin样式类
  • PCL 点云拟合 基于角度约束的Ransac拟合直线
  • C++ 中的异常处理机制是怎样的?
  • 【AI大模型】大型语言模型LLM基础概览:技术原理、发展历程与未来展望
  • C#语言详解:从基础到进阶
  • 国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?
  • 灰狼优化算法
  • 【WebRTC】视频发送链路中类的简单分析(下)