卷积神经网络的概述
在处理图像识别的时候,最常用的一个深度学习方法就是使用 CNN,也就是卷积神经网络,其优点就在于可以通过使用较小的图像数据,进行深度学习。下面我们来介绍一下 CNN 的基本流程。
Input
对于图像,因为是无符号类型的数据,默认正数,所以我们使用 uint8
作为数据格式。Shape 我们前两个维度的数据我们可以任意定义,但默认的 channel
是三层。
Filter
滤波器是 CNN 中不可缺少的一部分,滤波器的作用是在输入 Input 之后的第一层进行 CNN,提取 feature map
。每个 feature map
会在之后进行叠加。feature 相当于是图形的特征值,比如,我们在识别一张图片的时候,很有可能值需要位置信息,而不需要特定的其他信息。feature 可以很好的帮我们规避多余的处理。
Stride
也可以理解为步数,我们会使用 window 类似于定义一个窗口大小,通过移动 (stride),来进行数据的提取,然后和 kernel
矩阵相乘,获得输出。
Padding
因为我们使用了 feature map
和 kernel
相乘,很大程度上会降维,那可能会丢失边界的重要信息,这时候我们会设置 padding
来填充边界,以确保数据的完整性。
Output Shape
CNN 中很重要的一 part 是要会计算输出的 shape。比如,输入是 7*7 的 shape,filter 为 1, stride 为 2,padding 2,那输出的 shape 公式如下:
s
h
a
p
e
=
(
I
n
p
u
t
S
h
a
p
e
−
F
i
l
t
e
r
S
h
a
p
e
+
2
∗
P
a
d
d
i
n
g
)
/
S
t
r
i
d
e
+
1
shape = (Input Shape- Filter Shape + 2 * Padding) / Stride+ 1
shape=(InputShape−FilterShape+2∗Padding)/Stride+1