umich cv-4-2 经典卷积网络架构
这节课中主要讨论了卷积神经网络的发展历史以及几种经典结构是如何构建的
AlexNet
在2012年的时候,Alexnet神经网络提出,这时网络的架构比如说各个层之间要如何排列组合,使用多少卷积层池化层,每个层又如何设置超参数其实没有什么规律,主要通过实验与试错:

但是我们通过对内容容量,可学习参数以及浮点运算次数的计算,可以看到一些有趣的规律,绝大多数的内容容量都使用在了卷积层,绝大多数的可学习的参数都在全连接层,绝大多数的浮点运算都发生在卷积层

在2013年又提出了ZFNet,其实只是一个更大的AlexNet:


VGG
在2014年提出了VGG网络,VGG网络引入了有规律的设计。建立了更深层的网络,我们可以看到卷积层与池化层的超参数都是固定的,并且每次池化之后都会让卷积层通道数加倍,这样可以保证卷积层每次进行的运算数量一致

从下图也可以看出,VGG要比Alexnet复杂许多:

GoogleNet

但是同样在2014年提出的Googlenet网络中,不再强调更大更深的神经网络,因为谷歌想要在更低要求的设备下,去追求效率,这意味着减少内存容量的使用,可学习参数的数目以及浮点运算的次数
为了实现上面的目标,googlenet做出了很多的努力
首先,在网络最开始,Googlenet采用了非常激进地下采样,使用了步长与卷积核都比较大的卷积层以及池化层,我们可以看到是直接从224维度降到了28,同时内存,参数,浮点运算也大幅下降:

其次,Googlenet在网络的中间部分,多次采用了叫Inception Module的结构,我们可以看到它是采用了多个平行分支,在多个尺寸上进行卷积再聚合,那么我们怎么理解这样设计呢,可以参考这篇博文:https://zhuanlan.zhihu.com/p/32702031
简单来说,其实就相当于把传统卷积方式得到的稀疏矩阵,使用不同尺度的卷积,我们可以得到密集矩阵,把相关性强的特征聚集在一起,筛除了冗余信息:

然后,在神经网络的最后,不使用很大的全连接层,而是使用一个平均池化层以及一个全连接层来输出各分类分数得分,这样可以大大减少参数,内存以及浮点运算次数:

最后,由于神经网络层数过深,梯度传播效果不佳,可以选择在其它层数采用和最后结构一样的结构,提取输出分类分数,但是这里是batch normalization还没有提出的时候,之后我们就不需要这样做

ResidualNetwork
在batch normalization提出之后,我们可以很轻松地训练深层的网络使其收敛,导致神经网络的层数迅速增加,但是又出现的新的问题,发现深层神经网络反而不如浅层神经网络训练效果好,甚至出现了欠拟合的情况。
后来就有人(何大神)想出了残差网络,核心原理可以参见这篇:https://medium.com/@hupinwei/深度學習-resnet之殘差學習-f3ac36701b2f
大概是说过深的神经网络会导致出现退化的情况,有一种办法就是我们直接堆叠一层和上一层一样的结果(Identify mapping 恒等映射),更好的办法是这样做:
“讓我們先建立以下的概念:
輸入是x
學到的特徵是H(x)
我們定義一個新的名詞,叫做殘差 Residual
Residual = H(x) - x
殘差的概念很直覺吧? 就是學到的特徵和原本的輸入的差異。
既然是Residual = H(x) - x,Residual 也是X的函數,所以也寫作F(x), 那F(x) = H(x) - x
原本學習是這樣的。 x → H(x)
已經知道 F(x) = H(x) - x
所以學習也可以這樣寫:x → F(x) + x
因為H(x) = F(x) + x
用文字來說明的話,
輸入→特徵
變成:輸入→ 輸入 + 殘差
這樣有什麼好處嗎?
如果今天我們多一層,什麼都沒有學到。那殘差就是0
那多這一層,想想我們上面介紹過的,當殘差=0的時候,輸入→ 輸入,這一層就叫做恆等映射,因此,多這一層如果沒學到新的特徵,也不會讓模型退化。實際上當然不會剛好等於0, 而是可以增加很多層,而每一層都可以學到一些新的更複雜的特徵。”
这就是残差网络中基本的残差块的设计思路:

我们把上图的shortcut加入卷积层,再结合之前VGG的中间结构设计,googlenet的首尾设计,刚开始激进地下采样,最后采用平均池化层与一个线性层输出结构,就得到了残差网络的设计:


更进一步地,我们可以优化残差块的设计,使计算量更小:

我们可以总体看看不同卷积网络的复杂度比较:

最后提及一些其它更加高效的设计,并没有详细地讲,我也不是很懂,这里就再放一张总结图以及小哥的温馨提示:


umich cv-4-2 经典卷积网络架构的更多相关文章
- 经典卷积网络VGG,GoodLeNet,Inception
目录 ImageNet LeNet-5 LeNet-5 Demo AlexNet VGG 1*1 Convolution GoogLeNet Stack more layers? ImageNet L ...
- 论文解读丨基于局部特征保留的图卷积神经网络架构(LPD-GCN)
摘要:本文提出一种基于局部特征保留的图卷积网络架构,与最新的对比算法相比,该方法在多个数据集上的图分类性能得到大幅度提升,泛化性能也得到了改善. 本文分享自华为云社区<论文解读:基于局部特征保留 ...
- EdgeFormer: 向视觉 Transformer 学习,构建一个比 MobileViT 更好更快的卷积网络
前言 本文主要探究了轻量模型的设计.通过使用 Vision Transformer 的优势来改进卷积网络,从而获得更好的性能. 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟 ...
- deeplearning.ai 卷积神经网络 Week 2 深度卷积网络:实例研究 听课笔记
1. Case study:学习经典网络的原因是它们可以被迁移到其他任务中. 1.1)几种经典的网络: a)LeNet-5(LeCun et al., 1998. Gradient-based lea ...
- CNN网络架构演进:从LeNet到DenseNet
卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF ...
- CNN网络架构演进
卷积神经网络可谓是现在深度学习领域中大红大紫的网络框架,尤其在计算机视觉领域更是一枝独秀.CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF ...
- 语义分割--全卷积网络FCN详解
语义分割--全卷积网络FCN详解 1.FCN概述 CNN做图像分类甚至做目标检测的效果已经被证明并广泛应用,图像语义分割本质上也可以认为是稠密的目标识别(需要预测每个像素点的类别). 传统的基于C ...
- 五大经典卷积神经网络介绍:LeNet / AlexNet / GoogLeNet / VGGNet/ ResNet
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! LeNet / AlexNet / GoogLeNet / VGG ...
- 怎样设计最优的卷积神经网络架构?| NAS原理剖析
虽然,深度学习在近几年发展迅速.但是,关于如何才能设计出最优的卷积神经网络架构这个问题仍在处于探索阶段. 其中一大部分原因是因为当前那些取得成功的神经网络的架构设计原理仍然是一个黑盒.虽然我们有着关于 ...
- 【论文阅读】ConvNeXt:A ConvNet for the 2020s 新时代卷积网络
一.ConvNext Highlight 核心宗旨:基于ResNet-50的结构,参考Swin-Transformer的思想进行现代化改造,知道卷机模型超过trans-based方法的SOTA效果. ...
随机推荐
- Hexo博客Next主题添加粒子时钟特效
博客应用canvas粒子时钟的操作步骤: 在\themes\next\layout\_custom\目录下,新建clock.swig文件,内容如下: <div style="" ...
- Stable Diffusion修复老照片-图生图
修复老照片的意义就不多说了,相信大家都明白,这里直接开讲方法. 1.原理 这个方法需要一个真实模型,以便让修复的照片看起来比较真实,我这里选择:realisticVisionV20,大家有更好的给我推 ...
- linux内核vmlinux的编译过程(七)
一. vmlinux目标及其构建规则 定义在顶层Makefile中,如下: # The all: target is the default when no target is given on th ...
- Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo
前言 麒麟系统上做全球北斗定位终端开发,调试工具要做一个windows版本方便校对,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标,所以需要转换,可以使用公式转换,但是之前涉及到了另一个sh ...
- Linux 设置 VI 快捷键 -- 在多个打开的文件中切换
场景 部署完一系列服务后,想要查看所有服务的 catelina.out 日志: vi $(find /data/http | grep catalina.out | grep -v bak) 这个命令 ...
- 手机免root安装最新青龙面板(非Alpine term | Zero term软件)
使用软件:Termux 可以用于任何支持qemu虚拟机的环境.APP 制作了基本的系统环境.开发环境和青龙面板环境.多个虚拟机,按需求下载 官方网站:https://api.wer.plus 群:10 ...
- Vue中 router与route的区别
$route对象 该对象表示当前的路由信息,包含当前URL解析得到的信息.包含当前的路径,参数,query对象等.其常用方法如下所示: $route.path 字符串,对应当前路由的路径,总是解析为绝 ...
- pandas 根据内容匹配并获取索引
bool = ExcelDataStr.str.contains("Item No./Customer/Saler") # 初始位置:initial position, 终位置:e ...
- [nginx]lua控制请求头
前言 nginx原生提供expires.add_header两个指令控制请求头,在Lua API中也有类似的指令. 添加请求头 指令:ngx.req.set_header 语法:ngx.req.set ...
- vue3探索——组件通信之依赖注入
背景 通常情况下,当我们需要从父组件向子组件传递数据时,会使用 props.想象一下这样的结构:有一些多层级嵌套的组件,形成了一颗巨大的组件树,而某个深层的子组件需要一个较远的祖先组件中的部分数据.在 ...