Firefly开源社区

打印 上一主题 下一主题

NCC S1网络模型 - GNet1

572

积分

1

威望

0

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
572

NCC S1网络模型 - GNet1

发表于 2019-1-3 10:42:40      浏览:3577 | 回复:0        打印      只看该作者   [复制链接] 楼主
本帖最后由 rany 于 2019-1-3 10:44 编辑

NCC S1现支持的模型有GNet1、GNet18和GNetfc三个,这三个网络模型都是用于图片分类的。它们的不同之处在于模型的深度和网络参数不同。其中GNet1是三个网络模型中最大的一个,本文将对GNet1的网络结构和模型数据的输入与输出进行简单的介绍,其中会出现许多的专有名词,请读者自行检索学习,本文不一一介绍。

模型结构
从网络结构看,GNet1其实是VGG-16的一个实现,以下讲的是VGG-16的网络结构,如果GNet1以其有不同的地方会特别指出。  

图1 VGG网络配置图 - 来源《Very Deep Convolutional Networks for Large-Scale Image Recognition》  

图1是VGG网络在不同深度的网络结构,其中第D列就是VGG-16的网络配置。VGG-16包含5段卷积,每一段设有两到三层卷积层,总的算共有2+2+3+3+3=13层卷积层,每一层都使用大小为3x3的卷积核做卷积运算。在每一段后会跟着一个池化层(maxpool,池化核为2x2, stride为2)。在最后一个池化层后跟随三个全连接层(Fully connected layer)和一个归一化指数函数(soft-max)。  
更直观的VGG-16图如下:  

图2 VGG-16 来源《A BRIEF REPORT OF THE HEURITECH DEEP LEARNING MEETUP #5

图中有一个ReLU的标识,其代表VGG-16使用的激活函数 - 修正线性单元(Rectified linear unit,ReLU),即VGG-16具体实现时,会在每一层的卷积层和全连接层后添加一个激活函数。


模型输入输出
GNet1每次计算使用到的参数是从训练中得到的,参数包括卷积核、池化核和ReLU中使用到的参数等。  
GNet1输入一个大小为224x224的图片,图片以图2所示的形式输入到网络每一层,网络的每一层使用训练得到的参数进行计算得出结果,下一层网络以上一层的计算结果作为输入继续计算,直到最后一层soft-max计算出最终结果。  
最终的结果是一组向量,其按顺序可以映射到一组标签,根据向量中值的大小,即可得到与输入图片最相近的标签。

补充
卷积计算
图片在计算机内部的表现形式可以认为是一个矩阵,卷积计算即以卷积核在图片数据矩阵上滑动计算得到结果(称为特征图,feature map)。形象的过程如下图:

图3 卷积计算过程 来源《CS231n Convolutional Neural Networks for Visual Recognition

图中input volume即为卷积层的输入,filter w0和fitler w1为卷积核,output Volume为特征图,Bias b0和Bias b1为ReLU计算参数。  
其中一次计算过程如下:
  1. 第一个像素通道计算:
  2. 0 0 0     -1 -1  0  
  3. 0 1 1  x   1  1  0 = 0*-1 + 0*-1 + 0*0 + 0*1 + 1*1 + 0*1 + 0*0 + 2*0 + 2*-1 = -1  
  4. 0 2 2      0  0 -1  
  5. 第二个像素通道计算:
  6. 0 0 0     0 -1 -1
  7. 0 2 1  x  1  1  0 = 2
  8. 0 1 1     0  0  0
  9. 第三个像素通道计算:
  10. 0 0 0     1  1 -1
  11. 0 1 2  x  0  1  1 = 3
  12. 0 0 0     1 -1 -1

  13. 总和:-1 + 2 + 3 = 4
  14. 最后加上bias: 4 + 1 = 5
复制代码
结果5即为特征图一个单元的值,以一定的步长如图3所示不断计算即可得到这一层的全部特征图。



最大池化层
最大池化层的计算很简单,其过程也是以一个固定的过滤器进行滑动计算,如下图所示:  

图4 最大池化计算 来源《CS231n Convolutional Neural Networks for Visual Recognition

图中过滤器大小为2x2,步长为2,如当过滤器在第一个步是对应的数据为1、1、5、6取其中最大值6为结果,然后移动一步此时对应的数据为2、4、7、8取其中最大值8为结果,重复此计算即可得到池化的结果。








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表