前言
本篇文章是吴恩达《深度学习》课程《卷积神经网络——第一周》的学习笔记。
计算机视觉
计算机视觉面临的一个挑战是图像的数据量巨大。
上述图片是计算机视觉领域的典型应用:图像分类、风格转换、目标检测。
如上图所示,神经网络第一层参数矩阵巨大,具有三十亿个参数。在这种情况下,难以获取足够的数据来防止神经网络发生过拟合和竞争需求。要处理包含三十亿参数的神经网络,巨大的内存需求让人不能接受。
边缘检测示例:
需要注意的两个点
- filter过滤器在论文中有时也称作kernel核。
- 在数学中,“*”就是卷积的标准标志,Python中表示乘法或者是元素乘法。
更多边缘检测内容:
Sobel filter的好处是增加了中间一行元素的权重,也就是处在图像中间的像素点,这使得结果的鲁棒性会更高一点。
Scharr filter也是垂直边缘检测滤波器,旋转90度得到水平边缘检测器。
上图下半部分显示,把滤波器当成参数学习,也许胜过其他滤波器,能够检测多角度边缘或者可以学习一些更低级的特征。
Padding
在没有padding时,输入图像维度为 n ∗ n n*n n∗n,滤波器维度为 f ∗ f f*f f∗f,那么输出图像维度为 ( n − f + 1 ) ∗ ( n − f + 1 ) (n-f+1)*(n-f+1) (n−f+1)∗(n−f+1)。缺点在于:每做一次卷积操作,图像就会缩小。
另外,如上图所示,原图中在角落或者边缘区域的像素点,在输出中采用较少,也就是说filter很少触碰到它们,意味着丢掉了图像边缘位置的信息。
若边缘填充像素个数表示成p,那么输出图像的维度为 ( n + 2 p − f + 1 ) ∗ ( n + 2 p − f + 1 ) (n+2p-f+1)*(n+2p-f+1) (n+2p−f+1)∗(n+2p−f+1)。如上图所示,在padding之后,左侧填充绿色像素点的区域(原图左上角像素)影响了右侧填充绿色的像素点。这样,角落或者边缘区域像素点在输出中采用较少的这一缺点就被削弱了。
选择多少像素进行填充,通常由两种方式,分别叫做Valid卷积和Same卷积,如下图所示:
Valid卷积意味着不填充。
Same卷积意味着填充后你的输出图像的大小和输入图像的大小是一样的。Same卷积中padding的大小 p = f − 1 2 p = \frac{f-1}{2}