1维卷积神经网络参考文献_【4.卷积神经网络】第一周卷积神经网络-卷积【笔记1】...

本文介绍了卷积神经网络在计算机视觉中的重要性,以边缘检测为例,详细阐述了垂直和水平边缘检测的过程,包括卷积计算方法和过滤器的作用。还提到了Sobel和Scharr滤波器,并预告了如何使用padding和stride来解决图片尺寸变化问题。
摘要由CSDN通过智能技术生成

85033899e4bf188a8a1270a6e5f1f8f4.png

结果应该是这样对应1.1-1.3

OK,cut the crap.

一、计算机视觉(Computer Vision,CV)概述,1.1

LeNet、AlexNet到ResNet,近年来卷积神经网络似乎一直在主导深度学习的发展。在计算机视觉中,卷积神经网络依靠端到端等多方面优势干掉了一票图像处理算法。在课程开始时,从吴老师的精神头能看出,卷积神经网络学起来肯定很过瘾.

Andrew Ng计算机视觉图像分类的Hello World:猫图分类.

440327d5ef6f89e2937eb8902b7c397a.png
以下截图均来自课程

目标检测的Hello World:车辆识别.

fe203c64df0e37545633da3fe34ec4cb.png

终于有了新例子,风格迁移

d99e73cf6c986aed1daa393afa13316c.png

在前两节课程

b80e1c6372f154dc565a93f33f3f5e94.png

中,作业中处理的都是几十刚上百像素的图片(之前的猫图分类作业是64×64,样本向量

equation?tex=x_n 的长度也只有64×64×3,12288),但在目前这个时间点,图片的大小均以M起步(样本向量
equation?tex=x_n 的长度将达到1000×1000×3,3000000,3m,三百万维),此时采用全连接的普通类型神经网络来处理,若第一层有1000个神经元,而权值矩阵
equation?tex=W%5E%7B%5B1%5D%7D 的维度为[1000,3000000],这矩阵将有3000000×1000,第一层就30亿个参数,对于数据和计算的压力非常大.而AlexNet一共只有六千万参数,这就是卷积的妙用。

二、边缘检测(Edge Detection),1.2,1.3

b7a42ea591e06d3a57bf235d881d00aa.png

这种类似的图在公众号,专栏中见过很多了,像拼图一样,从青春痘拼出个猪腰子脸.

边缘:物体周边的部分,在图片中因颜色不同呈现

在边缘检测中,既要检测垂直边缘,又要检测水平边缘,这样才能勾勒出目标.

5617cff315c5de0ca422941f45db7778.png

对于数字图像,想得到边缘,需要用过滤器(filter),或称为核(kernel)、卷积核、滤波器来进行卷积运算(Convolution Operation,*),垂直和水平的区别就是过滤器不同,在矩阵运算中,也常用稀疏矩阵来过滤掉不想保留的元素.

这里课程中将的非常仔细,我就直接截图了.

1.垂直边缘检测

这里先说明计算方法,具体为什么选择6×6,3×3得到4×4再说

卷积计算第一行第一个元素

68b6f7a063e706cfa373e22280dac983.png
清楚明白

注意这里不是矩阵乘法,行乘列相加,而是直接对应相乘相加.

往右走一步,计算第一行第二个元素:

8042e3165f338b54e4afa7869f048e4d.png

第一行其余类似.

回到最左边,计算第二行第一个元素:

b633136fd1d0fe53239398b062bf2488.png

其余元素都类似计算就得到卷积的结果.
编程时,卷积运算函数:

Python:conv_forward

TensorFlow:tf.nn.conv2d

tf.nn.conv2d(
    input,
    filter,
    strides,
    padding,
    use_cudnn_on_gpu=True,
    data_format='NHWC',
    dilations=[1, 1, 1, 1],
    name=None
)

Keras:Conv2D

keras.layers.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)

为什么

9106655815a53a279168223f5f40200b.png

是垂直过滤器?

先验知识①灰度值:数字越小越黑,一般255为白,0为黑

先验知识②:

c82724c7c305b4584c158e341553c597.png
图中的边缘图是黑底白花的,和那头每小时80迈脑筋不会急转弯的猪一样,也就是轮廓处灰度值较大

有了以上两条,再看课程中为什么1,0,-1,1,0,-1,1,0,-1是垂直过滤器的例子:

1942cc280ea60e6396635b2f62c4d991.png

将它们卷积后可视化,结果把原图像中间的垂直轮廓以白色勾勒出来了.

3b53711eff7828c0a7eca106d96cae6f.png

另一种,原图像从暗到亮的卷积结果轮廓不太直观

2.水平边缘检测

正边缘:从亮到暗.负边缘:从暗到亮.

53552d45cfa925d5e5589ca4a6667ff8.png
顺时针旋转90°

一个水平边缘检测的例子:

400aabf3e67a3aae520bad00060298dd.png

原图:

eba8fbb9c67ae8c4f4c5c416527b59ba.png
红款内红线为水平边缘

结果(示意图):

b03cbabb43b53123f7f9d8bbeea7841b.png
因图片太小,出现过度的情况,但大体结果是正确的,边缘为中间这一条

3.过滤器

①Sobel filter

6c3a7c422edece911581b1da96246ece.png

②Scharr filter

571b948f75770957f3324c873600b78c.png

在深度学习中,面对不同领域的项目,过滤器要通过训练得到,就是权值矩阵

equation?tex=W .除了垂直和水平过滤器,特殊角度的过滤器也可习得.

在本节中,6×6的图片经过3×3的过滤器后变为4×4,图片缩水了

下一部分将学习padding和stride,填充和步长,来应对这种情况

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值