此处以caffe官方提供的AlexNet为例.

目录:

1.背景

2.框架介绍

3.步骤详细说明

5.参考文献

背景:

AlexNet是在2012年被发表的一个金典之作,并在当年取得了ImageNet最好成绩,也是在那年之后,更多的更深的神经网路被提出,比如优秀的vgg,GoogleLeNet.

其官方提供的数据模型,准确率达到57.1%,top 1-5 达到80.2%. 这项对于传统的机器学习分类算法而言,已经相当的出色。

框架介绍:

AlexNet的结构模型如下:

如上图所示,上图采用是两台GPU服务器,所有会看到两个流程图,我们这里以一台CPU服务器为例做描述.该模型一共分为八层,5个卷基层,,以及3个全连接层,在每一个卷积层中包含了激励函数RELU以及局部响应归一化(LRN)处理,然后在经过降采样(pool处理),下面我们来逐一的对每一层进行分析下吧.

3. 详细介绍:

1. 对于conv1层,如下

layer {name: "conv1"type: "Convolution"bottom: "data"top: "conv1"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}convolution_param {num_output: 96kernel_size: 11stride: 4}
}

该过程,

   1.输入Input的图像规格: 224*224*3(RGB图像),实际上会经过预处理变为227*227*3

2.使用的96个大小规格为11*11的过滤器filter,或者称为卷积核,进行特征提取,(ps:图上之所以看起来是48个是由于采用了2个GPU服务器处理,每一个服务器上承担了48个).

需要特别提一下的是,原始图片为RBG图像,也就是三个通道的,我们这96个过滤器也是三通道的,也就是我们使用的实际大小规格为11*11*3,也就是原始图像是彩色的,我们提取到的特征也是彩色的,在卷积的时候,我们会依据这个公式来提取特征图: 【img_size - filter_size】/stride +1 = new_feture_size,所以这里我们得到的特征图大小为:

([227-11] / 4 + 1 )= 55 注意【】表示向下取整. 我们得到的新的特征图规格为55*55,注意这里提取到的特征图是彩色的.这样得到了96个55*55大小的特征图了,并且是RGB通道的.

需要特别说明的一点是,我们在使用过滤器filter和数据进行卷积时(ps: 卷积就是[1,2,3]*[1,1,1] = 1*1+2*1+3*1=6,也就是对应相乘并求和),而且我们使用的卷积核尺寸是11*11,也就是采用的是局部链接,每次连接11*11大小区域,然后得到一个新的特征,再次基础上再卷积,再得到新的特征,也就是将传统上采用的全链接的浅层次神经网络,通过加深神经网路层次也就是增加隐藏层,然后下一个隐藏层中的某一个神经元是由上一个网络层中的多个神经元乘以权重加上偏置之后得到的,也就是所偶为的权值共享,通过这来逐步扩大局部视野,(形状像金字塔),最后达到全链接的效果. 这样做的好处是节约内存,一般而言,节约空间的同时,消耗时间就会相应的增加,但是近几年的计算机计算速度的提升,如GPU.已经很好的解决了这个时间的限制的问题.

3. 使用RELU激励函数,来确保特征图的值范围在合理范围之内,比如{0,1},{0,255}

最后还有一个LRN处理,但是由于我一直都是没用这玩意,所以,哈哈哈哈哈哈,没有深切的体会,就没有发言权.

4. 降采样处理(pool层也称为池化),如下图:

                        

layer {name: "pool1"type: "Pooling"bottom: "norm1"top: "pool1"pooling_param {pool: MAXkernel_size: 3stride: 2}
}

5. 使用LRN,中文翻译为局部区域归一化,对降采样的特征图数据进行如果,其中LRN又存在两种模式:

5.1 源码默认的是ACROSS_CHANNELS ,跨通道归一化(这里我称之为弱化),local_size:5(默认值),表示局部弱化在相邻五个特征图间中求和并且每一个值除去这个和.

官方给的是内核是3*3大小,该过程就是3*3区域的数据进行处理(求均值,最大/小值,就是区域求均值,区域求最大值,区域求最小值),通过降采样处理,我们可以得到

( [55-3] / 2 + 1 ) = 27 ,也就是得到96个27*27的特征图,然后再以这些特征图,为输入数据,进行第二次卷积.

conv2层,如下图:

对应的caffe:

layer {name: "conv2"type: "Convolution"bottom: "pool1"top: "conv2"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}convolution_param {num_output: 256pad: 2kernel_size: 5group: 2}
}

conv2和conv1不同,conv2中使用256个5*5大小的过滤器filter对96*27*27个特征图,进行进一步提取特征,但是处理的方式和conv1不同,过滤器是对96个特征图中的某几个特征图中相应的区域乘以相应的权重,然后加上偏置之后所得到区域进行卷积,比如过滤器中的一个点X11 ,如X11*new_X11,需要和96个特征图中的1,2,7特征图中的X11,new_X11 =1_X_11*1_W_11+2_X_11*2_W_11+7_X_11*7_W_11+Bias,经过这样卷积之后,然后在在加上宽度高度两边都填充2像素,会的到一个新的256个特征图.特征图的大小为:

(【27+2*2 - 5】/1 +1) = 27 ,也就是会有256个27*27大小的特征图.

然后进行ReLU操作.

再进行降采样【pool】处理,如下图,得到

layer {name: "pool2"type: "Pooling"bottom: "norm2"top: "pool2"pooling_param {pool: MAXkernel_size: 3stride: 2}
}

得到: 【27-3】/2 +1 = 13  也就是得到256个13*13大小的特征图.

conv3层,如下图:

layer {name: "conv3"type: "Convolution"bottom: "pool2"top: "conv3"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}convolution_param {num_output: 384pad: 1kernel_size: 3}
}

得到【13+2*1 -3】/1 +1 = 13 , 384个13*13的新特征图.

conv3没有使用降采样层.

conv4层:

layer {name: "conv4"type: "Convolution"bottom: "conv3"top: "conv4"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}convolution_param {num_output: 384pad: 1kernel_size: 3group: 2}
}

依旧

得到【13+2*1 -3】/1 +1 = 13 , 384个13*13的新特征图.

conv4没有使用降采样层.

conv5层,如下图:

 View Code

得到256个13*13个特征图.

降采样层pool,防止过拟合:

layer {name: "pool5"type: "Pooling"bottom: "conv5"top: "pool5"pooling_param {pool: MAXkernel_size: 3stride: 2}
}

得到: 256个 (【13 - 3】/2 +1)=6  6*6大小的特征图.

fc6全链接图:

描述一下: 这里使用4096个神经元,对256个大小为6*6特征图,进行一个全链接,也就是将6*6大小的特征图,进行卷积变为一个特征点,然后对于4096个神经元中的一个点,是由256个特征图中某些个特征图卷积之后得到的特征点乘以相应的权重之后,再加上一个偏置得到.  

layer {name: "drop6"type: "Dropout"bottom: "fc6"top: "fc6"dropout_param {dropout_ratio: 0.5}
}

再进行一个dropout随机从4096个节点中丢掉一些节点信息(也就是值清0),然后就得到新的4096个神经元.

fc7全连接层:

和fc6类似.

fc8链接层:

采用的是1000个神经元,然后对fc7中4096个神经元进行全链接,然后会通过高斯过滤器,得到1000个float型的值,也就是我们所看到的预测的可能性,

如果是训练模型的话,会通过标签label进行对比误差,然后求解出残差,再通过链式求导法则,将残差通过求解偏导数逐步向上传递,并将权重进行推倒更改,类似与BP网络思虑,然后会逐层逐层的调整权重以及偏置.

5.参考文献:

ImageNet https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

BP神经网络 https://www.zhihu.com/question/27239198

还有一些当时学习的时候看过,不过时隔久远,已经忘了地址了.

编程是一种快乐,享受代码带给我的乐趣!!!

转载于:https://www.cnblogs.com/alexanderkun/p/6917985.html

AlexNet详解2相关推荐

  1. Alexnet详解以及tesnsorflow实现alexnet;什么是alexnet alexnet能做什么;alexnet教程

    一.over roll archi Alexnet--2012年--标志性网络 该网络的亮点在于: (1)首次利用GPU进行网络加速训练. (2)使用了ReLU激活函数,而不是传统的Sigmoid激活 ...

  2. 图像分类篇——AlexNet详解

    一.概述 AlexNet是由2012年ImageNet竞赛参赛者Hinton和他的学生Alex Krizhevsky设计的.AlexNet在当年赢得了ImageNet图像分类竞赛的冠军,使得CNN成为 ...

  3. 卷积神经网络之AlexNet网络详解

    一  介绍 Alex Krizhevsky等人训练了一个大型的卷积神经网络用来把ImageNet LSVRC-2010比赛中120万张高分辨率的图像分为1000个不同的类别.在测试卷上,获得很高准确率 ...

  4. 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...

  5. DL之AlexNet:AlexNet算法的架构详解、损失函数、网络训练和学习之详细攻略

    DL之AlexNet:AlexNet算法的架构详解.损失函数.网络训练和学习之详细攻略 相关文章 Dataset:数据集集合(CV方向数据集)--常见的计算机视觉图像数据集大集合(建议收藏,持续更新) ...

  6. PyTorch实现AlexNet模型及参数详解

    文章目录 一.卷积池化层原理 二.全连接层原理 三.模型参数详解 注:AlexNet论文错误点 1.卷积池化层1 (1)卷积运算 (2)分组 (3)激活函数层 (4)池化层 (5)归一化处理 (6)参 ...

  7. AlexNet网络结构详解与代码复现

    参考内容来自up:3.1 AlexNet网络结构详解与花分类数据集下载_哔哩哔哩_bilibili up主的CSDN博客:太阳花的小绿豆的博客_CSDN博客-深度学习,软件安装,Tensorflow领 ...

  8. 详解深度学习之经典网络:AlexNet(2012) 并利用该网络架构实现人脸识别

    @[TOC](详解深度学习之经典网络:AlexNet(2012) 并利用该网络架构实现人脸识别**) 近来闲来无事,翻出了搁置已久的轻薄版电脑,望着积满灰尘的显示屏,觉得有愧于老师的尊尊教导,心中叹息 ...

  9. AlexNet网络结构详解(含各层维度大小计算过程)与PyTorch实现

    AlexNet网络结构详解(含各层维度大小计算过程)与PyTorch实现 1.AlexNet之前的思考 2.AlexNet网络结构 3.AlexNet网络结构的主要贡献 4.PyTorch实现     ...

  10. [Python图像识别] 五十.Keras构建AlexNet和CNN实现自定义数据集分类详解

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

最新文章

  1. 60日均线操盘的三种入场点形态
  2. 【JS】两种计时器/定时器
  3. 每日一皮:当产品经理试图让程序员冷静下来的时候...
  4. mysql php 入门_第一节 数据库概述_MySQL_php入门教程
  5. 浅谈C语言的基本数据类型
  6. 题目1049:字符串去特定字符
  7. BZOJ4127Abs——树链剖分+线段树
  8. 解决 : org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
  9. 三甲医院his系统源码_三甲医院科研管理系统是什么,科研成果包括哪些
  10. 还在使用 Windows?我的70岁母亲都用了 21 年 Linux
  11. [原创]按键小精灵通用去广告破解补丁
  12. 【华为云技术分享】原来CTR预估模型的发展有这样的规律
  13. 列举一台微型计算机的常用硬件,电脑基础知识问答卷
  14. C++作用域、局部变量、全局变量、传引用传值对比的一个例子
  15. 【BZOJ1116】[POI2008]CLO 并查集
  16. XAF 应用程序模型架构
  17. 哪家的服务器cpu性能高,服务器cpu排行
  18. MSP430学习笔记(一)--从点灯说起
  19. 【BZOJ 3097】 Hash Killer I
  20. 华为云云原生之多云管理利器Karmada从0到1的实操【与云原生的故事】

热门文章

  1. html如何转换成电子表,如何轻松将电子表格转换为HTML [快速提示] | MOS86
  2. mysql查询当前时间和用户_MySQL学习笔记(3) - 查询服务器版本,当前时间,当前用户...
  3. cesium版本之间如何兼容_【JS】cesium与three.js 结合的栗子,结合了一下网友们的栗子,解决了three.js 高版本模型出不来的问题...
  4. 使用hive计算每一年的最大气温的日期+温度
  5. JS9 -- switch
  6. 【进阶3-4期】深度解析bind原理、使用场景及模拟实现
  7. Laravel5.4 导出Excel表格
  8. 华夏银行:大数据时代 商业银行该如何治理海量数据?
  9. C# async/await 使用总结
  10. 【VMCloud云平台】SCAP(二)