第三十周:文献阅读

news2024/11/15 20:33:34

第三十周:综述阅读+文献阅读+pytorch学习

  • 摘要
  • Abstract
  • 1. 深度可分离卷积
    • 1.1 文献摘要
    • 1.2 引言
    • 1.3 Inception 模块
    • 1.4 Inception模块与深度可分离卷积的差别
    • 1.5 Xception架构
    • 1.6 实验
    • 1.7 总结
    • 1.8 创新点

摘要

深度可分离卷积是一种卷积神经网络(CNN)中的卷积操作,其设计目的是在保持性能的同时减少参数量和计算复杂度。这种卷积操作通常分为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。由于深度卷积只在每个通道上进行卷积,而不是在所有通道上同时进行,因此参数量大大减少。这有助于减小模型大小,提高模型在资源有限的环境中的可用性。本文将通过 Xception: Deep Learning with Depthwise Separable Convolutions ,我们深入了解深度可分离卷积

Abstract

Deeply separable convolution is a convolution operation in convolutional neural networks (CNNs) designed to reduce the number of parameters and computational complexity while maintaining performance. This convolution operation is usually divided into two steps: depthwise convolution and pointwise convolution. The number of parameters is greatly reduced because deep convolution is performed only on each channel, not on all channels simultaneously. This helps in reducing the model size and improves the usability of the model in resource constrained environments. In this article, through Xception: Deep Learning with Depthwise Separable Convolutions , we take a deeper look at deep separable convolution

1. 深度可分离卷积

文献来源:Xception: Deep Learning with Depthwise Separable Convolutions

1.1 文献摘要

作者将卷积神经网络中的 Inception 模块解释为常规卷积和深度可分离卷积运算(深度卷积后跟点卷积)之间的中间步骤。从这个角度来看,深度可分离卷积可以理解为具有最大数量塔的 Inception 模块。作者在该文献中证明,这种被称为 Xception 的架构在 ImageNet 数据集(Inception V3 的设计目标)上稍微优于 Inception V3,并且在包含 3.5 亿张图像和 17,000 个类别的更大图像分类数据集上显着优于 Inception V3。由于 Xception 架构具有与 Inception V3 相同数量的参数,因此性能提升并不是由于容量的增加,而是由于更有效地使用模型参数。

1.2 引言

近年来,卷积神经网络已成为计算机视觉领域的主要算法,并且开发设计它们的方法已成为备受关注的主题。卷积神经网络设计的历史始于 LeNet 式模型,它是用于特征提取的简单卷积堆栈和用于空间子采样的最大池化操作。 2012 年,这些想法被细化为 AlexNet 架构,其中卷积操作在最大池化操作之间重复多次,从而使网络能够在每个空间尺度上学习更丰富的特征。

Inception 类型模型的基本构建块是 Inception 模块,该模块存在多个不同的版本。在下图中,展示了 Inception 模块的规范形式,如 Inception V3 架构中所示。 Inception 模型可以理解为此类模块的堆栈。这与早期的 VGG 式网络不同,早期的 VGG 式网络是简单卷积层的堆栈。
在这里插入图片描述

1.3 Inception 模块

卷积层尝试学习 3D 空间中的滤波器,具有 2 个空间维度(宽度和高度)和一个通道维度;因此,单个卷积核的任务是同时映射跨通道相关性和空间相关性。

Inception 模块是通过将其显式分解为一系列操作来使该过程变得更容易、更高效,这些操作将独立地查看跨通道相关性和空间相关性。更准确地说,典型的 Inception 模块首先通过一组 1x1 卷积查看跨通道相关性,将输入数据映射到小于原始输入空间的 3 或 4 个独立空间,然后将所有相关性映射到这些较小的 3D 空间中,通过常规 3x3 或 5x5 卷积。如上图所示。

考虑 Inception 模块的简化版本,该模块仅使用一种尺寸的卷积(例如 3x3),并且不包括平均池塔。该 Inception 模块可以重新表述为一个大型 1x1 卷积,然后是对输出通道的非重叠段进行操作的空间卷积。
在这里插入图片描述
在这里插入图片描述
基于这个更强的假设,Inception 模块的“极端”版本将首先使用 1x1 卷积来映射跨通道相关性,然后分别映射每个输出通道的空间相关性。如下图所示。Inception 模块的这种极端形式几乎与深度可分离卷积(一种已在神经网络中使用的操作)相同。
在这里插入图片描述
深度可分离卷积,在 TensorFlow 和 Keras 等深度学习框架中通常称为“可分离卷积”,由深度卷积组成,即在输入的每个通道上独立执行的空间卷积,然后是逐点卷积,即 1x1 卷积,将深度卷积输出的通道投影到新的通道空间上。不要将其与空间可分离卷积混淆,空间可分离卷积在图像处理社区中通常也称为“可分离卷积”。

1.4 Inception模块与深度可分离卷积的差别

  1. 操作顺序:通常实现的深度可分离卷积(例如在 TensorFlow 中)首先执行通道空间卷积,然后执行 1x1 卷积,而 Inception 首先执行 1x1 卷积
  2. 第一次操作后是否存在非线性。在 Inception 中,这两个操作都遵循 ReLU 非线性,但是深度可分离卷积通常在没有非线性的情况下实现。

位于常规 Inception 模块和深度可分离卷积之间的 Inception 模块的其他中间公式也是可能的:实际上,常规卷积和深度可分离卷积之间存在离散谱,由独立通道空间的数量参数化用于执行空间卷积的段。常规卷积(前面是 1x1 卷积)处于该范围的一个极端,对应于单段情况;深度可分离卷积对应于另一个极端,其中每个通道有一个段; Inception 模块位于两者之间,将数百个通道分为 3 或 4 个部分。这种中间模块的特性似乎尚未被探索过。

做出这些观察后,作者建议可以通过用深度可分离卷积替换 Inception 模块来改进 Inception 系列架构,即通过构建深度可分离卷积堆栈的模型。 TensorFlow 中有效的深度卷积实现使这一点变得实用。作者提出了一种基于此思想的卷积神经网络架构,其参数数量与 Inception V3 相似,并在两个大规模图像分类任务上针对 Inception V3 评估了其性能。

1.5 Xception架构

作者提出了一种完全基于深度可分离卷积层的卷积神经网络架构。可以做出以下假设:卷积神经网络特征图中跨通道相关性和空间相关性的映射可以完全解耦。因为这个假设是 Inception 架构底层假设的更强版本,所以作者将提出的架构命名为 Xception。

下图给出了网络规格的完整描述。Xception 架构有 36 个卷积层,构成网络的特征提取基础。在作者的实验评估中,将专门研究图像分类,卷积基础后面将是逻辑回归层。 也可以在逻辑回归层之前插入全连接层。 36 个卷积层被构造为 14 个模块,除了第一个和最后一个模块外,所有模块周围都有线性残差连接。
在这里插入图片描述
简而言之,Xception 架构是具有残差连接的深度可分离卷积层的线性堆栈。

1.6 实验

作者选择将 Xception 与 Inception V3 架构进行比较,因为它们的规模相似:Xception 和 Inception V3 的参数数量几乎相同,因此任何性能差距都不能归因于网络容量的差异。数据集ImageNet 数据集和JFT 数据集。

JFT 是 Google 内部的大规模图像分类数据集,由 Hinton 等人首次提出。 ,其中包含超过 3.5 亿张高分辨率图像,并用来自 17,000 个类的集合的标签进行注释。为了评估在 JFT 上训练的模型的性能,我们使用辅助数据集 FastEval14k。

FastEval14k 是一个包含 14,000 张图像的数据集,其中包含来自约 6,000 个类别的密集注释(平均每个图像 36.5 个标签)。在此数据集上,我们使用前 100 个预测的平均精度 (MAP@100) 来评估性能,并通过一个分数来衡量每个类别对 MAP@100 的贡献,并评估该类别在社交媒体图像中的常见程度(因此也很重要) 。此评估程序旨在捕获社交媒体中频繁出现的标签的表现,这对于 Google 的生产模型至关重要。

所有网络均使用 TensorFlow 框架 实现,并分别在 60 个 NVIDIA K80 GPU 上进行训练。对于ImageNet实验,作者使用数据并行和同步梯度下降来实现最佳分类性能,而对于JFT作者使用异步梯度下降来加速训练。

所有评估均使用单次输入图像和单个模型进行。 ImageNet 结果是在验证集而不是测试集上报告的(即 ILSVRC 2012 验证集的非黑名单图像)。 JFT 结果是在 3000 万次迭代(一个月的训练)后报告的,而不是在完全收敛后报告的。表 1 和表 2 以及图 6、图 7、图 8 中提供了结果。在 JFT 上,我们测试了不包含任何全连接层的网络版本和包含两个全连接层的网络版本逻辑回归层之前有 4096 个单元的层。

在这里插入图片描述
在 ImageNet 上,Xception 显示出比 Inception V3 稍好的结果。在 JFT 上,Xception 在 FastEval14k MAP@100 指标上显示出 4.3% 的相对改进。我们还注意到 Xception 优于 He 等人报告的 ImageNet 结果。对于 ResNet-50、ResNet-101 和 ResNet。
在这里插入图片描述

1.7 总结

本文展示了卷积和深度可分离卷积如何位于离散谱的两个极端,而 Inception 模块是两者之间的中间点。这一观察结果促使我们建议在神经计算机视觉架构中用深度可分离卷积替换 Inception 模块。我们基于这个想法提出了一种新颖的架构,名为 Xception,它具有与 Inception V3 类似的参数数量。与 Inception V3 相比,Xception 在 ImageNet 数据集上的分类性能提升较小,但在 JFT 数据集上的分类性能提升较大。我们预计深度可分离卷积将成为未来卷积神经网络架构设计的基石,因为它们提供与 Inception 模块类似的属性,但与常规卷积层一样易于使用。

1.8 创新点

  1. 分离空间特征学习和通道间特征学习: 深度可分离卷积将传统的卷积操作分解为两个步骤:深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。深度卷积对每个输入通道进行卷积,而逐点卷积则在通道间进行线性组合。这种分离的方式使得网络可以更有效地学习空间特征和通道特征,从而减少参数量和计算复杂度。
  2. 减少参数数量: 深度可分离卷积减少了模型的参数数量。由于深度卷积只在每个通道上进行卷积,而不是在所有通道上同时进行,因此参数量大大减少。这有助于减小模型大小,提高模型在资源有限的环境中的可用性。
  3. 计算效率提高: 分离的卷积操作减少了计算的复杂度。深度卷积的计算成本相对较低,逐点卷积的计算量也相对较小。因此,深度可分离卷积在移动设备和嵌入式系统等资源受限的环境中更加高效。
  4. 更好的泛化能力: 由于深度可分离卷积能够更有效地学习空间和通道特征,它在许多视觉任务中表现出更好的泛化能力。这种结构有助于网络更好地捕获输入数据的层次性和抽象特征。

总的来说,深度可分离卷积通过创新地分离通道特征学习和空间特征学习,以及减少参数数量和计算复杂度,提高了卷积神经网络的效率和性能。这种结构在许多现代神经网络中广泛应用,特别是在移动端和嵌入式设备上,以实现轻量级和高性能的深度学习模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1486114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】线程概念|线程理解|线程控制

文章目录 线程概念Linux中线程是否存在的讨论线程创建和线程控制线程的终止和等待(三种终止方式 pthread_join()的void**retval) 线程概念 线程就是进程内部的一个执行流,线程在进程内运行,线程在进程的地址空间内运行&#xff0…

【c++】继承深度解剖

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么事继承,基类和派生类的使用和…

启动CMD/powershell命令窗口时,设置默认的python虚拟环境 in window10

启动CMD/powershell命令窗口时,设置默认的python虚拟环境 in window10 本文有两个目的: CMD命令窗口, 设置默认启动的python环境PowerShell命令窗口, 设置默认启动的python环境 CMD命令窗口, 设置默认启动的python环…

企业计算机服务器中了360勒索病毒如何解密,360后缀勒索病毒处理流程

对于众多的企业来说,企业的数据是企业发展的核心,越来越多的企业开始注重企业的数据安全问题,但随着网络技术的不断发展与应用,网络黑客的攻击加密手段也在不断升级。近期,云天数据恢复中心接到多家企业的求助&#xf…

PDN分析及应用系列二-简单5V电源分配-Altium Designer仿真分析-AD

PDN分析及应用系列二 —— 案例1:简单5V电源分配 预模拟DC网络识别 当最初为PCB设计打开PDN分析仪时,它将尝试根据公共电源网络命名法从设计中识别所有直流电源网络。 正确的DC网络识别对于获得最准确的模拟结果非常重要。 在示例项目中已经识别出主DC网络以简化该过程。 …

人工智能之Tensorflow程序结构

TensorFlow作为分布式机器学习平台,主要架构如下: 网络层:远程过程调用(gRPC)和远程直接数据存取(RDMA)作为网络层,主要负责传递神经网络算法参数。 设备层:CPU、GPU等设备,主要负责神经网络算法中具体的运…

【旧文搬运】为你的 Laravel 应用添加一个基于 Swoole 的 WebSocket 服务

做了一个基于 Swoole 的 WebSocket 扩展包,可以用来做实时状态推送,或者自定义消息处理实现 im,有需要的可以看看: [giorgio-socket] 使用方法 安装 安装扩展包 composer require wu/giorgio-socket发布配置文件 php artisan vendor:pu…

可莉炸鱼

情况有s*k>n&#xff0c;最多炸鱼数为n s*k<n&#xff0c;最多炸鱼数为s*k 将s*k转化为k个s相加&#xff0c;每次结果与n比较 #include<iostream> #include<vector> #include<algorithm> using namespace std; #define endl \n #define ll long lon…

Java---文件,流✨❤️

文章目录 1.遍历文件夹2.遍历子文件夹3.练习流4.以字节流的形式读取文件内容5.以字节流的形式向文件写入数据顶折纠问6 .写入数据到文件 1.遍历文件夹 一般说来操作系统都会安装在C盘&#xff0c;所以会有一个 C:\WINDOWS目录。 遍历这个目录下所有的文件(不用遍历子目录) 找出…

pyqt5怎么返回错误信息给页面(警告窗口)

在软件设计中&#xff0c;我们可能会遇到对异常的处理&#xff0c;有些异常是用户需要看到的&#xff0c;比如说&#xff0c;当我们登录出错的时候&#xff0c;后端需要给我们返回响应的错误信息&#xff0c;就像下图实现的这样。 类似这种效果&#xff0c;我们该如何实现&…

选择何种操作系统作为网站服务器

选择操作系统时&#xff0c;需考虑稳定性、安全性、成本、兼容性和技术支持等因素&#xff0c;常见选项有Windows Server和Linux发行版。 选择网站服务器的操作系统是一个关键的决策&#xff0c;因为它将影响到网站的性能、稳定性、安全性以及未来的扩展性&#xff0c;目前市场…

ES向量功能实战:向量搜索

1 缘起 项目需要&#xff0c;向量搜索使用ES&#xff0c;为了顺利使项目顺利交付&#xff0c;开始学习ES的稠密向量功能&#xff0c;本文即ES向量的实践&#xff1a;增删查改。ES从7.x版本支持向量功能&#xff0c;为测试ES向量功能&#xff0c;需要使用7.x及以上的版本。本文…

算法刷题day20:二分

目录 引言概念一、借教室二、分巧克力三、管道四、技能升级五、冶炼金属六、数的范围七、最佳牛围栏 引言 这几天一直在做二分的题&#xff0c;都是上了难度的题目&#xff0c;本来以为自己的二分水平已经非常熟悉了&#xff0c;没想到还是糊涂了一两天才重新想清楚&#xff0…

vue3 vite项目一运行就401(Unauthorized)

问题&#xff1a;项目一执行&#xff1a; pnpm run dev, 启动就出错&#xff0c; Failed to load resource: the server responded with a status of 401 (Unauthorized) 分析&#xff1a; 项目之前是正常运行的&#xff0c;没有问题&#xff0c;回溯刚刚改动&#xff0c;还原…

W5300驱动说明

W5300是一款带有硬件协议栈的网络芯片&#xff0c;内部拥有128K的缓存&#xff0c;最大支持8路socket通信&#xff0c;与MCU之间通过16位数据总线通信&#xff0c;通信速度远超W5500之类以SPI作为通信接口的网络芯片&#xff0c;特别适合对高速网络传输有需求的应用。 本次使用…

基于springboot+vue的疫苗发布和接种预约系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

关于工业 24V 电源转换电路参考设计

一. 概述 在工业邻域的应用中&#xff0c;部分电路板输入电源为 24V&#xff0c;而电路板上 MCU 及外设等的供电多为 3.3V、5V 以及 12V&#xff0c;因此设计将 24V 降压转换为各种电压非常有必要。常用的电源转换芯片有 DCDC 及 LDO 等&#xff0c;了解选型依据及其电路…

DolphinScheduler——调度系统数仓任务编排规范

原文大佬的这篇DS数仓任务编排规范有借鉴意义&#xff0c;这里摘抄下来用作学习和知识沉淀。 前言 在使用DolphinScheduler&#xff08;以下简称DS&#xff09;做数仓任务管理时&#xff0c;数据建模分层落地到调度上缺少规范&#xff0c;往往比较随意&#xff0c;例如将所有任…

OpenCV 4基础篇| OpenCV图像的裁切

目录 1. Numpy切片1.1 注意事项1.2 代码示例 2. cv2.selectROI()2.1 语法结构2.2 注意事项2.3 代码示例 3. Pillow.crop3.1 语法结构3.2 注意事项3.3 代码示例 4. 扩展示例&#xff1a;单张大图裁切成多张小图5. 总结 1. Numpy切片 语法结构&#xff1a; retval img[y:yh, x…

【JavaEE进阶】CSS选择器的常见用法

CSS选择器的主要功能就是选中页面指定的标签元素&#xff0c;选中了元素&#xff0c;才可以设置元素的属性。 CSS选择器主要有以下几种: 标签选择器类选择器id选择器复合选择器通配符选择器 接下来用代码来学习这几个选择器的使用。 <!DOCTYPE html> <html lang&q…