1 典型CNN模型
- LeNet,这是最早用于数字识别的CNN
- AlexNet,2012 ILSVRC比赛远超第2名的CNN,比LeNet更深,用多层小卷积层叠加替换单大卷积层。
- ZF Net,2013 ILSVRC比赛冠军
- GoogLeNet,2014 ILSVRC比赛冠军
- VGGNet,2014 ILSVRC比赛中的模型,图像识别略差于GoogLeNet,但是在很多图像转化学习问题(比如object detection)上效果奇好
1.1 Lenet
图1 Lenet的网络结构
1.2 AlexNet
2012 Imagenet 比赛第一,Top5准确度超出第二10%
图2 AlexNet的网络结构
1.2.1 基本结构
a. 共有8层,其中前5层是convolutional,后边3层full-connected ,最后的一个full-connected层的output是具有1000个输出的softmax,最后的优化目标是最大化平均的multinomial logistic regression
b. 在第一层conv1和conv2之后直接跟的是Response-nomalization layer,也就是norm1,norm2层。
c. 在每一个conv层以及full-connected层后紧跟的操作是ReLU操作。
d. Max pooling操作是紧跟在第一个norm1,norm2,以及第5个conv层,也就是conv5
e.Dropout操作是在最后两个full-connected层。
1.2.2 操作流程
a. 在第一个conv层(conv1)中,AlexNet采用了96个11*11*3的kernel在stride为4的情况下对于224*224*3的图像进行了滤波。直白点就是采用了11*11的卷积模板在三个通道上,间隔为4个像素的采样频率上对于图像进行了卷积操作。4个像素是receptive field中心在kernel map上的距离,这是个经验数据。最初的输入神经元的个数为224*224*3 = 150528个。对于每一个map来说,间隔为4,因此224/4 = 56,然后减去边缘的一个为55个,也就是本层的map大小为55*55,然后神经元数目为55*55*96 = 290400
得到基本的conv数据后,则进行一次ReLU(relu1)以及Norm(norm1)的变换后,然后进行pooling(pool1),作为输出传递到下一层。
本层map数目为96。
b.第二个conv层(conv2)是第一个conv层(conv1)经过norm(norm1)以及pool(pool1)后,然后再apply 256个5*5的卷积模板卷积后的结果。pool1后,map的size减半int(55/2)= 27,得到的本层的神经元数目为27*27*256 = 186642个。本层map数目为256个。
c. 第三个conv层(conv3)的生成过程和第二层类似,不同的是这一层是apply 384个3*3的卷积模板得到的。pool2后,map的size减半int(27/2) = 13,得到本层神经元数目为13*13*384 = 64896。本层map数目为384个。
d. 第四个conv层(conv4)是第三个conv层(conv3)进行一次ReLU(relu3)后,然后直接apply 384个3*3的卷积模板得到的。
本层神经元的数目为13*13*384 = 64896。本层map数目为384个,size还是13*13.
e. 第五个conv层(conv5)与第四个生成类似,只是对上层进行了一个ReLU(relu4)后生成的,不同之处在于此处apply的卷积模板为256个3*3的。
本层神经元的数目为13*13*256 = 43264。本层map数目为256个,size还是13*13。
f. 第一个full-connected层(fc6)是上一个conv层(conv5)进行pooling(pool5)后的全连接。
pool5后,map的size减半int(13/2) = 6,上层基本连接为6*6*256,然后全连接后到4096个节点,本层最终节点为4096个。
g.第二个full-connected层(fc7)是上一个full-connected(fc6)进行ReLU(relu6)后,然后进行dropout(drop6)后再进行全连接的结果
本层节点数目为4096个。
h.最后一个full-connetcted层(fc8)则是上一个full-connected层(fc7)再次进行ReLU(relu7)以及dropout(drop7)后再进行全连接的结果。最后输出为融合label的softmax loss。
1.3 googLenet
这是一种网中网(Network In Network)的结构,即原来的结点也是一个网络。Inception一直在不断发展,目前已经V2、V3、V4了,感兴趣的同学可以查阅相关资料。Inception的结构如下图所示,其中1*1卷积主要用来降维,用了Inception之后整个网络结构的宽度和深度都可扩大,能够带来2-3倍的性能提升。
原始数据,输入为224*224*3
第一层卷积层 conv1 ,pad是3,64个特征,7*7 步长为2,输出特征为 112*112*64,然后进行relu,经过pool1(红色的max pool) 进行pooling 3*3的核,步长为2, [(112 - 3+1)/2]+1 = 56 特征为56*56*64 , 然后进行norm
第二层卷积层 conv2, pad是1,3*3,192个特征,输出为56*56*192,然后进行relu,进行norm,经过pool2进行pooling,3*3的核,步长为2 输出为28*28*192 然后进行split 分成四个支线
第三层开始时 inception module ,这个的思想受到使用不同尺度的Gabor过滤器来处理多尺度问题,inception module采用不同尺度的卷积核来处理问题。3a 包含 四个支线:
1: 64个1*1的卷积核(之后进行RULE计算) 变成28*28*64
2: 96个1*1的卷积核 作为3*3卷积核之前的reduce,变成28*28*96, 进行relu计算后,再进行128个3*3的卷积,pad为1, 28*28*128
3:16个1*1的卷积核 作为5*5卷积核之前的reduce,变成28*28*16, 进行relu计算后,再进行32个5*5的卷积,pad为2,变成28*28*32
4:pool层,3*3的核,pad为1,输出还是28*28*192,然后进行32个1*1的卷积,变成28*28*32。
将四个结果进行连接,输出为28*28*256
然后将3a的结果又分成四条支线,开始建立3b的inception module
3b
1:128个1*1的卷积核(之后进行RULE计算) 变成28*28*128
2:128个1*1的卷积核 作为3*3卷积核之前的reduce,变成28*28*128, 再进行192个3*3的卷积,pad为1, 28*28*192,进行relu计算
3:32个1*1的卷积核 作为5*5卷积核之前的reduce,变成28*28*32, 进行relu计算后,再进行96个5*5的卷积,pad为2,变成28*28*96
4:pool层,3*3的核,pad为1,输出还是28*28*256,然后进行64个1*1的卷积,变成28*28*64。
将四个结果进行连接,输出为28*28*480
Figure 1 GoogLeNet 详细结构图
1.4 VGG结构
2 卷积神经网络常用框架
Caffe、TensorFlow、Torch等,具体内容参见深度学习框架的评估与比较
3 研究现状
在Large-Scale Video Classification with Convolutional Neural Networks中,将CCNs应用到视频分类当中,并且提出了一个将处理过程分成低分辨率和高分辨率的两部分的架构,在没有牺牲精度的前提下提升了处理速度。
在3D Convolutional Neural Networks for Human Action Recognition中,提出了应用3D卷积运算来从视频中提取特征来用于行为识别。开发了3D卷积神经网络架构,从相邻的视频帧中产生多个通道的信息,最终特征包含了所有通道的特征。在3D CNN模型终添加多个架构,以适应多种应用。
Deformable Deep Convolutional Neural Networks for Object Detection中,提出了一个新的整合框架,并且使用大量分类注解的图片来预训练此模型,在ImgeNet的任务中取得了显著的进步。
On an Improved FPGA Implementation of CNN-Based Gabor-Type Filters 中,改进了用FPGA实现的基于CNN gabor 滤波器,在每hz的吞吐量上取得了很大改善。
Learning and Transferring Mid-Level Image Representations using Convolutional Neural Networks 中,通过迁移学习的方法将在源域中训练好的CNN网络转换成适合目标任务的CNN网络,证明了迁移学习具有很大的潜力。
在基于FPGA的卷积神经网络并行结构研究中,在针对如何提高片上存储资源使用效率的问题,提出了一种存储面积优化的数据缓存结构,采用寄存器轮转策略充分开发卷积计算中的数据重用,实验结果表明该结构提高了对片外存储器带宽和片上存储资源的利用率。
4、imagenet模型在matlab上的应用
在matlab上应用Imagenet-vgg-f模型提取图片特征,最终结果有22个struct,从第17到20的struct分别是4096位,最后第21到22个struct是1000维的,是4096维经过softmax后的结果,此次试验使用第20个struct的数据(第19个struct检索效果比采用第20个struct的特征差)。这个网络有8层构成,从第6层到第8层都是全连接层。根据特征的相似度排序。本次试验的结果如下图所示。
本次试验使用cpu进行图片库的特征提取。