本文主要是介绍罗浩老师行人重识别课程记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
卷积核在图像处理领域的物理意义: 一个卷积核卷一次图像 就是在提取一副图片的特征,所以,卷积就是在提取特征。不同的卷积核卷积图像会得到图像的不同特征,一次卷积操作对应着一次特征提取
-
CNN的平移不变性: CNN对于同一张图片及其平移后的版本,都能输出同样的结果
-
感受野: 感受野指的是一个神经元与输入层连接神经元组成区域,卷积和池化操作都会改变感受野的大小
-
卷积神经网络三特性: 1. 局部连接 底层神经元更注重局部细节并且局部神经元减少了参数量 2. 权值共享 可以使用一个卷积核对整副图像进行卷积,参数量进一步缩小 3. 池化
-
池化的作用: 1. 扩大感受野 池化会进一步缩小原图像 从而使感受野扩大。2. 层次特征 浅层特征关注的局部的细节特征——纹理、颜色 高层关注的是更加抽象的全局特征——轮廓、类别
-
卷积神经网络为什么需要深度? 层数越多,表达能力越强。不同的深度提取不同层次的特征,浅层的感受野很小,只能关注很小的局部的区域,随着深度的增加,关注的区域越来越大,比如,对于人脸来说,浅层可能关注一些边角信息,中层关注一些眼睛、鼻子一类的特征,高层可能就会关注一些到人脸完整的特征
-
深度卷积神经网络的构成:
- 卷积层: 一个卷积核对图像进行卷积之后会得到1个特征图,当有多个卷积核(每个卷积核会提取图像的一种特征 并且卷积核不是二维的,是三维的,对应长宽深三个维度,卷积核的深度与当前图像的深度(feature map的张数)相同,所以指定卷积核时,只需指定其长和宽两个参数)卷积图像之后,会得到多个特征图(即一个图像的多种特征)
- 池化层: 池化层没有任何需要学习的参数,作用是将特征图的大小进行压缩(也就是下采样),另外一个作用就是扩大感受野。卷积层之间一般是max pooling,最后输出层一般是avg pooling,令特征表达更加紧凑,同时拥有位移不变性
- 全连接层: 全连接层一般用于分类
- 辅助层: 例如反卷积层,反卷积层通过padding,使得output大于input(上采样),常用于图像分割和图像生成领域
-
卷积结构的类型
-
普通卷积: nn.Conv2d(in_channels,out_channels,kernel_size=k,stride=1,padding=0,dilation=1,groups=1,bias=true) ,输出的特征图的大小 H0 = (H + 2*padding - kernel_size)/stride + 1 W0 = (W+2*padding-kernel_size)/stride+1
-
1*1卷积核卷积: nn.Conv2d(in_channels,out_channels,kernel_size=1,stride=1,padding=0,dilation=1,groups=1,bias=true),卷积之后,H和W不发生变化,通道数发生变化,主要用于降维或者升维。
-
分组卷积: nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=2,bias=true),group可以自行的调整,相比正常卷积,参数量变少,一般用来显存不够,或者压缩参数量,缺点:信息不回完全的打通(通道被分开了,彼此之间没有联系)。
-
Channel-wise/Depthwise Convolution卷积:
nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=ci,bias=true)中的group等于当前输入的通道数,是分组卷积的极端形式,参数量大大减少,缺点是通道之间的信息没有打通,一般在其后面接1*1的卷积来打通通道信息。 -
空洞卷积(Dilated Convolution): nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=2,groups=1,bias=true)中的dilation是自行设定的,卷积核中间添加数字0,从而扩大感受野,在分割任务中常见,也用于提取多尺度的特征。
-
-
常用的卷积神经网络
-
AlexNet: 提出了分组卷积的概念,GPU内的卷积和GPU间的卷积,当进行Max pool和全连接层的时候需要进行GPU间的卷积,因为Max pool和全连接层都是对全局信息而言的,不能分开计算。首次提出了下述的六种概念
-
ZFNet: 在AlexNet的基础上将卷积核的大小进行了缩小,从而使feature map增大。
-
VGGNet: VGGNet相比ZFNet和AlexNet更加深了,并且提出了小卷积核的堆叠,提出了卷积块Block的概念。
-
GoogLeNet(Inception): GoogleNet 不同于前面网络的地方在于,GoogLeNet不是使用堆叠的方式建立层结构,而是通过多尺度特征(在同一层使用不同尺度的特征),比如VGGNet对于输入来说只有一个支路,一条支路走到黑,而GoogLeNet对于输入来说有多个分支,比如下图左图所示的,Previous Layer进入网络之后,分别经过 1*1的卷积、3*3的卷积、5*5的卷积 和 3*3的max pooling,得到不同尺度的特征,最后将不同尺度提取的特征拼接在一起,实现不同尺度的feature map的融合。相比于Inception-v1,Inception-v2又有了进一步的改进,通过 1*1的卷积核实现升维或者降维达到了减少参数的作用。
下述的第二幅图相对于第一幅图又有了改进,第二幅图的Inception-v2相比于第一幅图的Inception-v2来说,第二幅图将第一幅图的5*5 的卷积分解为两个3*3的卷积,两个3*3的卷积和一个5*5的卷积的感受野大小相同,然后又在3*3卷积的基础上Inception-v3进一步分解卷积,分解为 1*3 和 3*1,后面的感受野和前面3*3的感受野相同,但是参数进一步减少,3*3的卷积核的参数为9,1*3加上3*1的参数量只有6。
-
ResNet: (在之前的几篇文章中讲解了)
-
DenseNet(2017): DenseNet在ResNet中的恒等映射基础上进行改进,DenseNet将当前的层不止与前一个层相连,它会与前面左右的层进行连接,将shortcut的思想发挥到极致。 缺点:耗时比较多
-
这篇关于罗浩老师行人重识别课程记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!