首页 AI学术青年与开发者社区

【中文字幕】2017春季CS231n 斯坦福深度视觉识别课

开课时间:2017年11月10日
开课时长:讲座共有6个lecture,3个 Guest Talk,已完结。加入小组即可立即观看(完全免费):https://ai.yanxishe.com/page/groupDetail/19。
免费课 基础入门
现价: 免费
该课程已关闭

output size:

N-F/stride+1

为了保证输出图像维持不变,用0补齐边缘

[展开全文]

convolution layer

The factors that we should consider:

  1. the size of filters
  2. stride
  3. how many filters you have

multiple filters - for example the number of filters is n, and then we will gain n activation maps.

(That means each of the filter is producing an activation maps.)

The filters at the earlier layers ->Low-level features:  like edges.

mid-level features: more complex features , like corners and blobs(斑点) and so on,

high-level features: more ensemble concepts than blobs.

[From simple to complex features.]

 

Assume we have 7*7 input and 3*3 filter , and then we will gain an 5*5 activation map.

Assume we have 7*7 input and 3*3 filter , and the stride is 2 . Then we will gain an 5*5 activation map.

Then we can think about it, how to compute the output size?

input ——N.  The size of filter——F.

e.g. N=7,F=3

stride 1=> (7-3)/1+1 =5

stride 2=> (7-3)/2+1 = 3

stride 3=> (7-3)/3+1 = 2.33 (error)

In practice: common to zero pad the border

pad——M

(N+M*2-F)/stride +1

 

parameters

note: each filter has one bias

input: 32*32*3

filters: 10 5*5

(5*5*3+1)*10 = 760

[展开全文]

卷积神经网络的工作原理

全连接层:在向量上操作

   对于图片,将像素展开成向量

   对向量进行点积运算得到一个数,就是得分

卷积层:

卷积核

和特定空间的值进行点积计算

卷积核的工作:在图像上滑动,遍历每一个像素

卷积层的底层一般是比较初级的特征,越深层得到的一些更加复杂的图像特征

Q:卷积核滑动时,有些像对边缘或拐角的采样而不是其他地方

Q:可视化图像中是什么

网格中的每个部分都是一个神经元,可视化的部分就是输入是什么时将特定的神经元的激活函数最大化

卷积:图像-卷积层-非线性函数-采样层-全连接层-分值函数

 

 

[展开全文]

1.对全连接层而言,我们要做的就是在这些向量上进行操作,比如我们有一张图片,三维图片,32*32*3大小,我们将所有的像素展开,就可以得到一个3072维的向量,我们得到这些权重,把向量与权重矩阵相乘,这里我们用10*3072,然后就可以得到激活值,这一层的输出,例子中我们用十行数据与这个3072维的输入进行点积运算,从而我们可以得到一个数字,这个数字就是该神经元的值

2.至于卷积层,他和全连接层的主要差别就是可以保全空间结构,这个三维输入的结构,我们的权重是一些小的卷积核,例子中是5*5*3的大小,我们将把这个卷积核在整个图像上滑动,计算出每一个空间定位时的点积结果,接下来就是他们工作的具体细节

3.首先,我们采用的卷积核,总是会将输入量扩展至完全,所以她们都是很小的一个空间区域,他们会遍历所有通道,然后我们采用这个卷积核,在一个给定的空间区域,在这个卷积核和图像块间进行点积运算,我们要做的就是在图像空间区域上,覆盖这个卷积核,然后进行点积运算,也就是将卷积核每个位置元素和与之对应图像区域的像素值相乘,这个区域是从图像上取出的,经过运算后给我们一个点积结果,例子中我们进行了5*5*3次计算,之后我们再加上偏置项,这就是卷积核W的基本方法,就是用W的转置乘以X再加上偏置项

4.我们如何滑动卷积核并遍历所有空间位置?     将这个卷积核从左上方的边角处开始,并且让卷积核遍历输入的所有像素点,在每一个位置,我们都进行点击运算,每一次运算都会在我们输出激活映射中产生一个值,之后我们再继续滑动卷积核,最简单的方法是一个像素一个像素的滑动,我们持续进行这样操作,并相应的填满我们的输出激活映射。

5.当我们在处理一个卷积层时,我们希望用到多种卷积核,因为每一个卷积核都可以从输入中得到一种特殊的模式或者概念,所以我们会有一组卷积核,这里我们将利用第二个卷积核,也就是图中绿色的卷积核,也是相同的大小,将它进行滑动,遍历所有像素,得到第二个相同大小的绿色的激活映射,我们可以按照相同的方法使用多个卷积核进行计算,就会产生多个激活映射

6.在卷积神经网络中我们是如何使用卷积层的?                                        我们的ConvNet基本上是由多个卷积层组成的一个序列,他们依次堆叠,就像我们之前在神经网络中那样堆叠简单的线性层一样,之后我们将用激活函数对其进行逐一处理,比方说一个ReLu激活函数,我们将得到一些比如Conv和ReLU的东西,以及一些池化层,之后你会得到一系列的这些层,每一个都会有一个输出,该输出又作为下一个卷积层的输入

7.前面的几层卷积核一般代表了一些低阶的图像特征,比如说像一些边缘特征,对于那些中间层,你可以得到一些更加复杂的图像特征

8.实际上,当你给他这种类型的层次结构并使用反向传播进行训练,这些类型的卷积核也会学习到特征

9.卷积神经网络整体上来看,其实就是一个输入图片,让它通过很多层,第一个是卷积层,然后通常是非线性层,所以ReLU其实就是一种非常常用的手段,我们有了Conv ReLU 接下来我们会用到池化层,这些措施已经大大降低了激活映射的采样尺寸,经过这些处理后,最终得到卷积层输出,然后我们就可以用我们之前见过的全连接层连接所有的卷积输出,并用其获得一个最终的分值函数

10.我们将卷积核滑过每一个单独的空间位置,每滑一次所经过的区间,称其为步幅,在最初我们是用1作为步长,会产生一个5*5输出,如果我们采用值为2的步幅,我们总共会有3个可以拟合的输出,也就是一个3*3的输出

11.如何计算输出尺寸?                      假设输入的维度为N,卷积核大小为F,那么我们在滑动时的步幅以及最终的输出大小,也就是每个输出大小的空间维度,这些将变成(N-F)/步幅+1

12.深度就是使用卷积核的数目                零填补是否在角落上增加了一些额外的特征,我们尽全力来得到一些值,然后做一些处理那个图像范围的事,所以零填补是它的一种方式,我们可以侦测到在这个区域内的模板的某些部分,所以在边缘处是有些人为成分,你可以尽最大努力来解决它

13.为什么做零填补?                        我们做零填补的方式是保持和我们之前的输入大小相同,我们开始用的是7*7,如果让卷积核从左上角处开始,将所有东西填入,那么我们之后会得到一个很小的输出,但是我们想保持全尺寸输出,就会做零填补

14.如果你需要处理的图像是多层叠加在一起的,你会发现,如果你不做零填充,或任何形式的填充,输出图像的尺寸会迅速减小,这不是我们想要的,设想你有一个不错的深度网络,你的激活映射迅速缩的非常小,这样是不好的,因为这会损失一些信息,你只能用很少的值来表示你的原始图像

[展开全文]

在神经网络中,我们先输入一张图片,经过第一层卷积后可以得到32张(或者不管多少张feature map),这32张的每一张都是通过一个3*3的卷积核来做卷积操作的,我觉得这样的操作经过了32次,每次这个3*3的卷积核里面的数值会发生改变!!!!!(这个理解不太对)

不对,如果我输入channel=1,输出channel=32,那我会初始化出32个卷积核,并行操作运行得到这32张feature map.

 

输入一张图经过前几层卷积,我们会得到比较loe_level features(这些特征很弱,或者说是不具有代表性。)---然后再经过几层神经网络,我们会得到mid_level features(得到的这些特征可能会能体现出我输入图片的一些特征了,但是可能还不能够完全表示)---再经过几层神经网络,我们能提取出high_level features(这些特征很有可能能代表我输入图片的特点或者而说是属性)---最后可以通过线性分类器来进行分类。。。     

很重要的一点,正是由于神经网络的这些特点,我们才可以做transfer learning,直接保存前几层输出的feature,然后将这个训练好的网络进行fine-turning,加上新场景的图片输入------

 

神经网络再寻找什么??----显然是图像的特征????

做padding的原因:是想获得和输入尺寸一样的大小的输出图片。

 

输入32*32*3的图片经过5*5*10的卷积核,请问这个网络中含有多少个参数??

5*5*3+1=76(这里的1是偏置)

76*10=760个参数

 

[展开全文]

常用是3*3 5*5 7*7卷积核

为了保证图像输出大小 需要进行零填充

计算输出大小 需要图像大小减去卷积核除以步长加1

当存在零填充时候 还要考虑考虑零填充

参数总数是 卷积核相乘乘以隐藏层 加上偏置 再乘以卷积核个数

[展开全文]
阿斗 · 2017-12-18 · 5.2 卷积和池化 0

相关课程

开课日期:直播已结束,可回看开始
智能驾驶 基础入门 86959
开课日期:开始
机器学习 基础入门 111688

授课教师

暂无教师
微信扫码分享课程