1. 计算机视觉
使用传统神经网络处理机器视觉的一个主要问题是输入层维度很大。例如一张64x64x3的图片,神经网络输入层的维度为12288。
如果图片尺寸较大,例如一张1000x1000x3的图片,神经网络输入层的维度将达到3百万,使得网络权重W非常庞大。
这样会造成两个后果:
-
一是神经网络结构复杂,数据量相对不够,容易出现过拟合;
-
二是所需内存、计算量较大。解决这一问题的方法就是使用卷积神经网络(CNN)。
2. 边缘检测示例
神经网络由浅层到深层,分别可以检测出图片的边缘特征 、局部特征(例如眼睛、鼻子等)、整体面部轮廓。
如何检测图片的边缘:
-
垂直边缘(vertical edges)
-
水平边缘(horizontal edges)
图片的边缘检测可以通过与相应滤波器进行卷积来实现。以垂直边缘检测为例,原始图片尺寸为6x6,滤波器filter尺寸为3x3,卷积后的图片尺寸为4x4,得到结果如下:
∗表示卷积操作。python中,卷积用conv_forward()表示;tensorflow中,卷积用tf.nn.conv2d()表示;keras中,卷积用Conv2D()表示。
3. 更多边缘检测内容
图片边缘有两种渐变方式,一种是由明变暗,另一种是由暗变明。
以垂直边缘检测为例,下图展示了两种方式的区别。实际应用中,这两种渐变方式并不影响边缘检测结果,可以对输出图片取绝对值操作,得到同样的结果。
垂直边缘检测和水平边缘检测的滤波器算子如下所示: