从AlexNet(2012)开始
博客:blog.shinelee.me | 博客园 | CSDN
写在前面
本文重点在于回顾深度神经网络在CV领域的First Blood——AlexNet,AlexNet是首个在大规模图像识别问题取得突破性进展的深度神经网络,相比基于SIFT+FVs、稀疏编码的传统方法,性能提升了10多个百分点(error rate 26.2% → 15.3%,ILSVRC-2012),并由此开启了深度神经网络血洗CV各领域的开端,如下图所示(SuperVision即AlexNet)。

截止本文时间2019年9月2日,AlexNet论文的引用量达45305,论文作者Alex Krizhevsky、Ilya Sutskever和“深度学习之父”Geoff Hinton。

网络结构
AlexNet的原始网络结构如下,可以参见caffe的网络定义bvlc_alexnet,pytorch等也给出了变种实现,见torchvision/models/alexnet.py。

整个网络大体由5个卷积层和3个全连接层组成,受限于当时的计算资源,网络通过2块GTX580 3GB的GPU训练,上图可见,整个网络上下一分为二,各用1块GPU训练(在caffe中通过group层实现),每个GPU放一半的神经元,网络中第3个卷积层和3个全连接层跨GPU连接。与使用单个GPU和50%神经元的网络相比,这个双GPU方案的Top1和Top5错误率分别降低了1.7%和1.2%。
每层的配置如下,第一个卷积层的kernel size为11,stride为4:

创新点
为了获得最佳表现,论文中综合应用了很多技术,有些后来已成为通用的标准做法。
使用ReLU作为激活函数,作为non-saturating非线性激活函数有效避免了梯度消失问题,同时与tanh(saturating非线性激活函数)相比,训练速度提升了数倍(CIFAR-10上训练达到25%错误率速度快了6倍)。
多GPU训练,实际上相当于增加了网络的宽度,如上节所述,Top1和Top5错误率比单GPU网络分别降低了1.7%和1.2%。
提出了LRN(Local Response Normalization)层,使用相邻\(n\)个特征图上同位置的值对当前值进行归一化,公式如下。LRN被认为没有太大效果,已不被后来者采用。
\[
b_{x, y}^{i}=a_{x, y}^{i} /\left(k+\alpha \sum_{j=\max (0, i-n / 2)}^{\min (N-1, i+n / 2)}\left(a_{x, y}^{j}\right)^{2}\right)^{\beta}
\]使用Overlapping Max-Pooling,如上节图中,Pooling层的kernel size \(z=3\),stride \(s=2\),\(z > s\),与\(s=z=2\)相比,Top1和Top5错误率分别下降了0.4%和0.3%。
通过Data Augmentation数据增广降低过拟合,提高预测准确度
- 训练阶段,通过生成大量训练数据来降低过拟合,生成数据的方式有2种,
- 第1种方式从\(256\times 256\)图像中随机裁剪+左右翻转出\(224\times 224\)的图像,将训练数据扩大了2048倍;
- 第2种方式对每张训练图像RGB通道做数值扰动,扰动量通过对整个训练集的RGB像素进行PCA获得,扰动量为\(\left[\mathbf{P}_{1}, \mathbf{P}_{2}, \mathbf{P}_{3}\right]\left[\alpha_{1} \lambda_{1}, \alpha_{2} \lambda_{2}, \alpha_{3} \lambda_{3}\right]^{T}\),\(\mathbf{P}_{i}\)和 \(\lambda_{i}\)为RGB像素协方差矩阵的特征向量和特征值,\(\alpha_{i}\)为0均值0.1标准差的高斯随机值。
- 预测阶段,从待预测\(256\times 256\)图中上下左右中间crop+左右翻转得到10张\(224\times 224\)的图像,逐一输入网,络对输出结果取平均,来提升预测阶段的准确率,相当于数据层面的集成学习。
- 训练阶段,通过生成大量训练数据来降低过拟合,生成数据的方式有2种,
对前2个全连接层使用Dropout技术,训练时每次随机让50%的神经元输出为0,以此来降低过拟合,预测时将权重乘以0.5。这样可以强迫网络学习到更鲁棒的特征,也可以从集成学习的视角理解,预测阶段相当于对随机到的所有模型求了个期望。

batchsize 128,SGD Momentum 0.9,weight decay 0.0005,initial learning rate 0.01 停滞时divide by 10,
\[
\begin{aligned} v_{i+1} & :=0.9 \cdot v_{i}-0.0005 \cdot \epsilon \cdot w_{i}-\epsilon \cdot\left\langle\left.\frac{\partial L}{\partial w}\right|_{w_{i}}\right\rangle_{D_{i}} \\ w_{i+1} & :=w_{i}+v_{i+1} \end{aligned}
\]
其他有意思的点
回顾AlexNet论文,发现论文中提及了很多有意思的点,有些仅仅是一笔带过,但是可能启发了后面大量的工作,翻回来看才发现“祖师爷”早有预兆。
finetune,在一个库上训练,在另一个库上finetune

权重可视化,仅可视化第1个卷积层的96个卷积核权重,发现网络学到了频率方向性的特征,更有意思的是,GPU1上的48个卷积核是颜色无关的,GPU2上的是颜色相关的。

匹配与检索,使用最后一个全连接层的输出作为特征,通过欧氏距离可计算图像间的特征相似度,可做匹配,提出可以通过auto-encoder进一步压缩获取到short binary code,可用于检索,如下图所示,检索与最左边一列特征最近的图像

深度十分重要,增加深度可以进一步提升性能,当前性能只是受限于计算资源和训练时间(微笑)


在ILSVRC 2012上做的报告展示了使用AlexNet做detection的结果,如下

不愧是开创性工作的paper,给这含金量跪了。
参考
- paper: ImageNet Classification with Deep Convolutional Neural Networks
- slides LSVRC 2012: ImageNet Classification with Deep Convolutional Neural Networks
- slides 2015: ImageNet Classification with Deep Convolutional Neural Networks
- cs231n_2017_lecture9
- Large Scale Visual Recognition Challenge 2012 (ILSVRC2012)
从AlexNet(2012)开始的更多相关文章
- AlexNet 2012
AlexNet Alexnet是一年一度的ImageNet大型视觉识别挑战赛(ILSVRC)2012年冠军,ILSVRC使用ImageNet的一个子集,分为1000种类别,每种 ...
- 学习笔记TF030:实现AlexNet
ILSVRC(ImageNet Large Scale Visual Recognition Challenge)分类比赛.AlexNet 2012年冠军(top-5错误率16.4%,额外数据15.3 ...
- TensorFlow实战之实现AlexNet经典卷积神经网络
本文根据最近学习TensorFlow书籍网络文章的情况,特将一些学习心得做了总结,详情如下.如有不当之处,请各位大拿多多指点,在此谢过. 一.AlexNet模型及其基本原理阐述 1.关于AlexNet ...
- CNN Architectures(AlexNet,VGG,GoogleNet,ResNet,DenseNet)
AlexNet (2012) The network had a very similar architecture as LeNet by Yann LeCun et al but was deep ...
- 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献中 ...
- 图像分类丨ILSVRC历届冠军网络「从AlexNet到SENet」
前言 深度卷积网络极大地推进深度学习各领域的发展,ILSVRC作为最具影响力的竞赛功不可没,促使了许多经典工作.我梳理了ILSVRC分类任务的各届冠军和亚军网络,简单介绍了它们的核心思想.网络架构及其 ...
- CNN-2: AlexNet 卷积神经网络模型
1.AlexNet 模型简介 由于受到计算机性能的影响,虽然LeNet在图像分类中取得了较好的成绩,但是并没有引起很多的关注. 知道2012年,Alex等人提出的AlexNet网络在ImageNet大 ...
- (转)The 9 Deep Learning Papers You Need To Know About (Understanding CNNs Part 3)
Adit Deshpande CS Undergrad at UCLA ('19) Blog About The 9 Deep Learning Papers You Need To Know Abo ...
- ImageNet && 医学图像的识别
医学图像识别的问题 如果将CNN应用于医学图像,首要面对的问题是训练数据的缺乏.因为CNN的训练数据都需要有类别标号,这通常需要专家来手工标记.要是标记像ImageNet这样大规模的上百万张的训练图像 ...
随机推荐
- Reactor和Proactor模型
背景 前面介绍了I/O多路复用模型,那有了I/O复用,有了epoll已经可以使服务器并发几十万连接的同时,还能维持比较高的TPS,难道还不够吗?比如现在在使用epoll的时候一般都是起个任务,不断的去 ...
- mybatis源码学习(一) 原生mybatis源码学习
最近这一周,主要在学习mybatis相关的源码,所以记录一下吧,算是一点学习心得 个人觉得,mybatis的源码,大致可以分为两部分,一是原生的mybatis,二是和spring整合之后的mybati ...
- Scala函数式编程(四)函数式的数据结构 上
这次来说说函数式的数据结构是什么样子的,本章会先用一个list来举例子说明,最后给出一个Tree数据结构的练习,放在公众号里面,练习里面给出了基本的结构,但代码是空缺的需要补上,此外还有预留的test ...
- Java中代理和装饰者模式的区别
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案: 代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用: 装饰模式为所装饰的对象增强功能:代理模式对代理的对 ...
- < AlexNet - 论文研读个人笔记 >
Alexnet - 论文研读个人笔记 一.论文架构 摘要: 简要说明了获得成绩.网络架构.技巧特点 1.introduction 领域方向概述 前人模型成绩 本文具体贡献 2.The Dataset ...
- JS使用readAsDataURL读取图像文件
JS使用readAsDataURL读取图像文件 FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项特殊的技术,可以将资料(例如图片 ...
- 【并发编程】Object的wait、notify和notifyAll方法
本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 方法简介 wait方法 wait方法是Object类中的 ...
- 转载:不是书评 :《我是一只IT小小鸟》
本文转载自刘未鹏博客:http://www.mindhacks.cn. 原文地址如下:http://mindhacks.cn/2009/10/05/im-a-tiny-bird-book-review ...
- c++关于multiset的头文件包含问题
最近在Bilibili上看到不少侯捷老师C++的视频教程,侯捷老师翻译了很多C++的经典书籍,比如<Essential C++中文版>.<STL源码剖析>,也写了<深入浅 ...
- 深入 .NET Core 基础 - 2:共享框架
深入 .NET Core 基础 - 2:共享框架 原文地址:https://natemcmaster.com/blog/2018/08/29/netcore-primitives-2/ 共享框架从 . ...