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

相关文章

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 自定义

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解