吴恩达Deeplearning.ai 知识点梳理(course 4,week 1)

Computer Vision

  Computer Vision有两个具体的问题类型:

  • Classification,例如分类图片中有没有猫
  • Object Detection,例如识别路上的汽车并圈起来

  对于这些Computer Vision的问题,神经网络在处理的时候,最主要的问题是:规模变大。例如一个1000x1000x3,一个图片就是3M的数据量。那么对于一个中间层,假如一个中间层是1000个neuros,那么 W 矩阵尺寸就是(1000, 3M),假如是32位浮点数,12GB内存没了,这还只是一层……
  所以原有的神经网络就不能这样使用了,那么就需要引入卷积层。

边缘检测

  图像的边缘检测这块其实就是数字图像处理的内容了。一些边缘检测算子,例如竖直边缘提取的filter:

111000111

水平边缘提取的filter:

101101101

sobel算子和schhar算子

121000121

31030003103

附上一些关于sobel算子和scharr算子的一些额外内容:
https://stackoverflow.com/questions/17078131/why-sobel-operator-looks-that-way
https://blogs.mathworks.com/steve/2006/10/04/separable-convolution/

Valid, Padding and Stride Convolution

  • Valid:正正常常的 nh×nw 图像和 f×f 进行卷积,输出结果是 (nhf+1)×nwf+1) 。因为filter的半径是 f12 ,需要把半径减掉,两边都剪掉就是现在这个结果。

  • Padding:在边缘进行补足,使得最后输出结果还是 nh×nw ,那么就是 nw+2pf+1=nw ,那么 p=f12 ,其实就是把滤波器的半径补上,两边都补半径。

  • Stride:就是中间每s个卷积一次,那么最后输出的结果尺寸就是 nw+2pfs+1×nh+2pfs+1 。推导过程其实很简单,对于 n×n 来说吧,能用的像素是 N=n+2pf+1 个上边已经推导了,然后 N 如果能够整除s,那么就是N/s个,如果不能整除,那么就是N/s+1,所以这两种最后可以归并为 (N1)/s+1

Volume Convolution and Multiple Filters

  如图所示,对于一个RGB的图像,filter一般都是3通道的,做了element wise multiplication之后总体sum,所以例子中6x6x3卷积上3x3x3之后会得到一个4x4的图像。当希望用多个filters时,则是列举好多个filter一起卷积,然后把结果堆叠起来。

One Convolutional Layer

几个要点:

  • RGB图像作为 a[0]
  • Z[1] 是类似于全联通的 w[1]a[0] ,然后会加上一个常数项 b
  • 然后加上ReLU作为g(),得到 a[1]=g(z[1])

一个例子是:如果一个卷积层是有10个3x3x3滤波器,那么这一层的参数值是多少?
答案是:280,因为10个滤波器是270个参数,加上10个bias/b,一共280。值得注意的是,这一层无论输入是多大的图片,无论是64x64还是1000x1000,都是这么多参数。

Notations / Convetions

ConvNet Example

这个里边没啥特别的。

Pooling layer 池化

Pooling有两种:

  • Max Pooling
  • Average Pooling

Max Pooling 用的比较多,其实就相当于极大值滤波(非线性滤波的一种),所以也一样有 n+2pfs+1 这个关系。
为啥要用Max Pooling,到目前为止没有人能说清楚(Andrew Ng说的),Dr. Ng给出的一个通俗解释就是:假如在某一层的Max Pooling的输入是一个4x4的图像,你可以把它认为成是某一类特征在空间上的分布。这个特征可以是各种各样的,比如一个竖的边缘,又或者是一个猫的眼睛,又或者是猫的胡须等等。一个比较大的数,表示的是某一类特定的特征检测到了,而这个比较大的数所在的位置,比方说是右上角,那么就可以说右上角存在着这个特征。所以max pooling做的事就是:如果在某一个位置上检测到了某类特征,那么就在这个位置上(或者相对位置,比方说右上角)把这个特征保留起来;如果在某些区域没有某类特征,那么取了最大值也很小,代表了这个区域上就没有某一类特征。

额,上边是译文,通俗点说就是,比方说猫的一组特征是眼睛,眉毛和耳朵,这个眼睛眉毛和耳朵应该在左上角,那么检测到眼睛、或者检测到耳朵了,左上角的某一个值就比较大。取最大值之后就会把左上角的特征传递给下一层(一个大区域缩成一个pixel)。而假如在某个区域啥都没检测到,那么就说明最大的那个值,也很小,那么就把这个小数传递给下一层。

不过Dr. Ng也说,其实人们用max pooling的原因,主要是因为在实验中它好用。

Average Pooling
这个很少很少用,不过Dr. Ng说了一个例子,就是当网络非常非常深的时候,比方说到了一个4x4x1000的层,那么就把这个层给平均了,得到一个1000的向量。

一个示例(LeNet-5)

可以看到,这个里边有很多超参数,一般来说,不要一上来就自己去设置超参数,建议先用已有的结构来做。每一层的output的数值量不要下降的太快,否则性能不好。

为什么要用卷积?

  • Parameter Sharing: 对于一个特征提取器(滤波器)在图像的一个地方管用,那么一般也会在另一个地方管用。比方说竖直边缘检测滤波器。
  • Sparsity Connections
    其实就每一个卷积计算结果而言,跟它有关的也就是那3x3个数。其他地方的数跟他没关系。(不过没讲为啥这样好。。。)

另外还有就是卷积会带来平移不变性,shift invariance。也就是卷积会在图像平移了几个像素之后,还是带来相似的特征。

习题精选

  in lecture we talked about “parameter sharing” as a benefit of using convolutional networks. Which of the following statements about parameter sharing in ConvNets are true? (Check all that apply.)
[√] It reduces the total number of parameters, thus reducing overfitting.
[x] It allows gradient descent to set many of the parameters to zero, thus making the connections sparse.
[√] It allows a feature detector to be used in multiple locations throughout the whole input image/input volume.
[x] It allows parameters learned for one task to be shared even for a different task (transfer learning).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值