Inception网络

2024-05-06 20:18
文章标签 网络 inception

本文主要是介绍Inception网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文来自于网易云课堂

Inception网络简介

当构建卷积层时需要考虑过滤器的大小究竟是1×3,3×3还是5×5,要不要添加池化层而inception网络的作用就是代替你来做决定。虽然网络架构因此变得更加复杂,但网络表现却非常好。
这里写图片描述
对于一个28*28*192的输入,inception网络或inception层的作用就是代替人工来确定卷积层中的过滤器类型或者确定是否需要卷积层或者池化层。一个inception模块会将所有的可能叠加起来,这就是inception模块的核心内容。
这里写图片描述
这里写图片描述
在第二张图中,通常称中间的层为瓶颈层,也就是最小网络层。我们先缩小网络,然后在扩大 它。通过两张图的对比可以明显看到,采用了1*1的层的计算成本下降了10倍。那么仅仅大幅缩小表示层规模会不会影响神经网络的性能?事实证明,只要合理构建瓶颈层,那么既可以缩小规模,又不会降低性能,从而大量节省了运算。

Inception网络

一个完整的Inception模块如图所示。
这里写图片描述
通过将这些模块组合起来就得到了完整的inception网络,由于它是由google的研究员提出的,所以也叫做goolenet,是为了向lenet致敬。
这里写图片描述
那么inception这个名字是怎么来的呢?因为里面说到”我们需要走的更深”,如果看过盗梦空间(inception)这个电影应该会懂得这个梗。—-可惜我没看过:)。作者其实是想用它来表达建立更深的网络的决心。

使用开源的实现方案

事实证明很多神经网络复杂细致,因而难以复制。因为一些参数调整的细节问题会影响性能。而有许多研究者将源代码开源道GitHub上,如果作为应用者,我们可以直接将其下载下来并运用。

迁移学习

如果你要做一个计算机视觉应用,相比于从头训练网络,如果你下载别人已经训练好的网络结构的权重,你通常能够进展的非常快。用这个作为预训练,然后转换到你感兴趣的任务上。计算机视觉的研究社区非常喜欢把许多数据集上传到网上,比如ImageNet,MSCoCo,或Pascal类型的数据集,这些都是上传上去并且已经有很多研究者利用他们训练过他们的算法了,有时候这些训练过程需要花费好几周,并且需要很多GPU,其他人已经做过并且经历了非常痛苦的找最优的过程,这就意味着你可以下载花费了别人好几周甚至几个月而做出来的开源的权重参数并把它当做一个很好的初始化用在你的神经网络上,用迁移学习把公共的数据集的知识迁移到你自己的问题上。
现在假设你有2种猫,tigger和misty,如果你想识别你的猫,这就构成了一个三分类问题:tigger,misty 和neither。但你的数据量很小,这时你就可以利用迁移学习。你可以从网上下载一些神经网络开源的实现,不仅把代码下载下来,还要把权重下载下来。有很多训练好的网络你都可以下载,比如说ImageNet数据集,它有1000个不同的类别,因此这个网络会有一个softmax单元。你可以去掉这个softmax层,然后重新添加你自己的softmax层。就网络而言,Andrew Ng建议把其它层看做是冻结的,也就是你冻结所有的参数只训练和你的softmax层有关的参数。通过使用他人的权重你很可能得到较好的效果,即使只有一个很小的数据集。幸运的是,大部分神经网络框架都支持这些操作。这里有个经验法则就是你的数据越大,那么你要冻结的层应该越少,你能够训练的层数就越大。如果你有很大的数据集,你要做的就是把下载的权重当做初始化参数然后在进行训练。

数据扩充

大部分的计算机视觉任务使用很多的数据,所以数据增强是经常使用的一种技巧来提高计算机视觉的表现。在当下,计算机视觉的主要问题是没有办法得到充足的数据,对大部分机器学习问题来说这并不是问题,但是对计算机视觉数据就远远不够。所以,这就意味着数据增强会起到一定的作用。
这里写图片描述
数据增强的常用技巧包括镜像,随机裁剪,这两个是经常使用的。当然理论上你也可以使用旋转,扭曲,局部变换等,但是因为比较复杂,应用的不多。第二种经常使用的是色彩变换,实践中对 RGB三种通道的色彩变换是基于某种分布的。这样会使得对照片的颜色的鲁棒性更好。
这里写图片描述
执行过程可能是这样的;
这里写图片描述

计算机视觉现状

你可以把大量的机器学习问题看成是处于小部分数据和大量数据之间的部分。所以如果你能跨越整个范围来看机器学习问题的话,如果有很多数据,你会发现人们更倾向于使用更简单的算法和更少的手工工程,因此我们不需要为这个问题精心设置,相反,如果你没有那么多的数据,你会发现人们更多从事的是手工工程。所以,当看待机器学习问题时,Andrew Ng通常认为学习算法有2种知识来源,标记的数据和手工工程。手工工程可以是精心设计的特性或者网络组建等。所以如果你没有更多的数据时,你可以更多的考虑手工工程。Andrew Ng认为计算机视觉是在试图学习一个非常复杂的功能,通常没有足够的数据来满足需要。这就是为什么计算机视觉从历史上甚至现在都更多的依赖于手工工程,而他也认为这是计算机视觉领域发展相当复杂的架构的原因,因为在缺乏相当多的数据的情况下获得更好的数据的方式还是花更多的时间进行架构设计。
这里写图片描述
最后分享一篇计算机视觉历史的文章

这篇关于Inception网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965271

相关文章

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

Python实现简单封装网络请求的示例详解

《Python实现简单封装网络请求的示例详解》这篇文章主要为大家详细介绍了Python实现简单封装网络请求的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装依赖核心功能说明1. 类与方法概览2.NetHelper类初始化参数3.ApiResponse类属性与方法使用实

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义