作业汇总:https://blog.csdn.net/u013733326/article/details/79827273
第一周课堂笔记:卷积神经网络基础:https://blog.csdn.net/red_stone1/article/details/78651063
第二周课堂笔记:深度卷积模型:案例研究:https://blog.csdn.net/red_stone1/article/details/78769236
几种网络结构,ResNet(多):https://blog.csdn.net/dby_freedom/article/details/79847371#t3
典型网络模型 论文
1、AlexNet
经典论文:AlexNet论文 ( ImageNet Classification with Deep Convolutional Neural Networks )
(译文):https://blog.csdn.net/hongbin_xu/article/details/80271291
分析:https://blog.csdn.net/yihaizhiyan/article/details/26962607
参考:https://blog.csdn.net/wy23333/article/details/80142324
个人笔记
AlexNet
Fig 1:AlexNet architecture
AlexNet共有8个学习层,其中5个卷积层(含有3个MAX pooling),3个全连接层
1、输入:227 x 227 x 3(图中为224 x 224 x 3 可能写错或者以前维度计算方法不一样)
2、两种数据增强方法
(1)generating image translations and horizontal reflections. 平移图像和水平映射。
图像的平移变换就是将图像所有的像素坐标分别加上指定的水平偏移量和垂直偏移量,
即 x=x+dx, y=y+dy,这里操作为:从256×256图像中随机提取227×227的图像块。
(2)altering the intensities of the RGB channels in training images. 改变训练图像的RGB灰度值
在整个ImageNet训练集的图像的RGB像素值上使用PCA(PCA:主成分分析方法,是一种使用最广泛的数据降维算法)。对于每个训练图像,我们添加多个通过PCA找到的主成分,大小与相应的特征值成比例,乘以一个随机值,该随机值属于均值为0、标准差为0.1的高斯分布。(没有具体了解)
3、激活函数:ReLU函数
为什么使用ReLU?如图,4层CNN,ReLU训练误差率到25%所迭代次数约6个epochs,tanh训练误差率到25%所要迭代次数约37个epochs。ReLU比tanh的训练快几倍。
Fig 2:(4 layer CNN) Solid line ReLU;dashed line tanh
4、3个max pooling,使用的是重叠池化
Filter size : f ,stride :s ,if s < f ,即重叠池化。
5、dropout。在前两个全连接层使用dropout,且keep_prob = 0.5
6、动量随机梯度下降:SGD with a batdh size of 128,momentum of 0.9,weight decay of 0.0005
7、参数初始化
各层权重:标准差 0.01,均值 0 的高斯分布,b2,45,6,7,8 = 1,b1,3 = 0,学习率:0.01,并训练中减小3次(/10)
创新点:
(1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。
(2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后两个全连接层使用了Dropout。
(3)在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。
(4)提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。(效果不是很明显且用的不多,没看)
2、VGG
经典论文:原文+译文:https://blog.csdn.net/wspba/article/details/61625387
VGG介绍:https://blog.csdn.net/u013181595/article/details/80974210
1、网络结构
VGG-16,共有16层网络,其中13层卷积层(含有5个MAX pooling),3层全连接层。
2、预处理只有在训练集中的每个像素上减去RGB的均值。
3、特点
(1)卷积层均使用filter = 3 * 3,s = 1,padding 模式为same(即卷积后图像大小不变)
(2)池化层均使用 MAX POOL ,filter = 2 * 2,s = 2 (即池化后图像大小减少一半)
(3)卷积核的数目以2倍递增,64—128—256—512
4、激活函数:ReLU函数
5、小批量的动量梯度下降法: batch size = 256,momentum = 0.9
6、使用权重衰减
7、第一和第二全连接层使用dropout,且keep_prob = 0.5
8、训练过程中学习率一共减少3次,每次10倍衰减。
创新点
1、全部使用很小的卷积,即3*3的卷积核(有些结构使用1*1的卷积核),相比于核更大的卷积核参数量减少。同时增加了非线性操作。
例如:两个3*3卷积层的串联相当于1个5*5的卷积层,3个3*3的卷积层串联相当于1个7*7的卷积层,即3个3*3卷积层的感受野大小相当于1个7*7的卷积层。但是3个3*3的卷积层参数量只有7*7的一半左右。
3个3*3的卷积层进行了3次ReLU非线性操作,而1个7*7的卷积层只进行1次ReLU非线性操作,使决策更具有判别性。
2、结构简单,具有很好的对称性。即卷积核,池化层的参数均一样。
3、为什么使用1*1的卷积核?其作用?
(1)可用于升维、降维(这里并没有降维)
1*1卷积核实际上是对每个像素点在不同通道上线性组合(信息整合),且保留了图片的原有平面结构,仅仅是改变channels的数量,进而达到升维和降维的功能。
(个人理解:升维、降维主要的与卷积层的channel有关,与kernel_size大小无关,3*3的卷积核也可以用来降维,但1*1的卷积核的参数比3*3的卷积核参数少,更主要的是减少参数数目,减少训练成本,提高训练速度)
(2)减少参数
当输入和输出的通道数很大时,乘起来会使得卷积核参数变的很大,当加入1*1的卷积进行降维后,可减少参数数量。
(3)增加非线性
1*1的卷积层相当于一个线性操作,目的是为了增加决策函数的非线性,1*1的卷积并不影响卷积层的感受野,输出大小与输入大小一样,但是ReLU增加了非线性。
3、LeNet-5
4、ResNet
ResNet 简介: https://blog.csdn.net/qq_31050167/article/details/79161077
5、GoogLeNet(Inception)
https://blog.csdn.net/loveliuzz/article/details/79135583
第三周课堂笔记:目标检测:https://blog.csdn.net/red_stone1/article/details/79028058
YOLO算法的原理与实现: https://blog.csdn.net/xiaohu2022/article/details/79211732
YOLO(You Only Look Once)算法详解:https://blog.csdn.net/u014380165/article/details/72616238
yolo系列之yolo v3【深度解析】:https://blog.csdn.net/leviopku/article/details/82660381
第四周课堂笔记:人脸识别与神经风格迁移:https://blog.csdn.net/red_stone1/article/details/79055467