文章目录
- 1. 卷积核计算
- 2. 卷积神经网络计算
- 3. 卷积核关注的特征
- 问题解答
- 水平边缘检测与水平条纹检测
- 45度条纹检测
- 4. 图像检测
- 5. 卷积网络是特殊的全连接网络
- 6. 输出矩阵的三种填充方法
- 7. 卷积设计
- 8.9 成像公式
- 10. 卷积的计算次数
- 11. 全连接层的计算
1. 卷积核计算
卷积操作过程
- 对于给定矩阵 ( 2 3 1 0 3 4 1 2 3 ) \begin{pmatrix}2&3&1\\0&3&4\\1&2&3\end{pmatrix} 201332143 和卷积核 ( 1 1 2 − 3 ) \begin{pmatrix}1&1\\2&-3\end{pmatrix} (121−3),步长为(1)。
- 按照卷积运算规则,从矩阵左上角开始依次取 2 × 2 2\times2 2×2子矩阵与卷积核(相对于位置元素)相乘再求和,得到卷积后的结果为 ( − 4 − 2 − 1 2 ) \begin{pmatrix}-4&-2\\-1&2\end{pmatrix} (−4−1−22)。
- 注意不是矩阵乘法。
ReLU激活操作过程
- ReLU函数为 y = max ( 0 , x ) y = \max(0,x) y=max(0,x), 将卷积结果 ( − 4 − 2 − 1 2 ) \begin{pmatrix}-4&-2\\-1&2\end{pmatrix} (−4−1−22)的每个元素代入ReLU函数。
- 经过计算,被ReLU激活后的结果为 ( 0 0 0 2 ) \begin{pmatrix}0&0\\0&2\end{pmatrix} (0002)。
2. 卷积神经网络计算
3. 卷积核关注的特征
问题解答
从数学角度看,卷积操作是对图像局部区域的加权求和。当卷积核中的权重有正有负时,在进行加权求和时,能够突出显示图像中像素值变化较大的区域。
左边卷积核
- 当这个卷积核在图像上滑动进行卷积操作时,它会对图像中的竖条纹状特征有较强的响应。
- 原因是:在竖条纹区域,卷积核中的 1 1 1和 − 1 -1 −1会分别与条纹的亮部和暗部(亮部的像素值比较大,暗部的像素值比较小)对应相乘并求和,得到较大的响应值。例如,如果图像中有一条垂直的亮条纹,当卷积核的 1 1 1与亮条纹对应时,会产生较大的正值。
右边卷积核
- 当这个卷积核在图像上滑动进行卷积操作时,它会对图像中的横条纹状特征有较强的响应。
- 原因是:在横条纹区域,卷积核中的 1 1 1和 − 1 -1 −1会分别与条纹的亮部和暗部对应相乘并求和,得到较大的响应值。例如,如果图像中有一条水平的亮条纹,当卷积核的 1 1 1与亮条纹对应时,会产生较大的正值。
水平边缘检测与水平条纹检测
- 水平边缘检测卷积核
- 典型的水平边缘检测卷积核如Sobel算子的水平版本 K e d g e − h o r i z o n t a l = ( − 1 0 1 − 2 0 2 − 1 0 1 ) K_{edge - horizontal}=\begin{pmatrix}-1&0&1\\-2&0&2\\-1&0&1\end{pmatrix} Kedge−horizontal= −1−2−1000121 。
- 原理:它主要是检测图像中水平方向上像素值的急剧变化,也就是边缘。
- 当这个卷积核在图像上滑动时,通过对覆盖区域内像素值的加权求和来判断是否存在水平边缘。
- 例如,当它滑过图像中从 左到右(注意卷积核左负右正) 像素值有明显变化(如从暗到亮)的区域时,由于卷积核左侧是负数权重,右侧是正数权重,加权求和后(右侧)会得到较大的值,从而检测到水平边缘。
- 特点:这种卷积核对水平方向上的像素值变化敏感,旨在找到边缘位置,其响应值在边缘处较大,在平滑区域较小。
- 检测水平条纹的卷积核
- 例如 K s t r i p e − h o r i z o n t a l = ( 1 1 1 0 0 0 − 1 − 1 − 1 ) K_{stripe - horizontal}=\begin{pmatrix}1&1&1\\0&0&0\\-1&-1&-1\end{pmatrix} Kstripe−horizontal= 10−110−110−1 可以用于检测水平条纹。
- 原理: 它是通过对水平方向上的像素值进行特定加权求和来检测水平条纹。
- 当该卷积核在图像上滑动时,如果遇到水平条纹,其正负权重区域会分别与条纹的亮部和暗部对应相乘并求和,得到较大的响应值。
- 例如,对于一条水平亮条纹,卷积核中的正数权重(第一行)与亮条纹对应时会产生较大的正值。
- 特点:这种卷积核侧重于检测水平方向上具有一定宽度和对比度的条纹,其响应值在水平条纹区域较大,在其他区域较小。
- 不同点总结
- 设计目的:水平边缘检测卷积核的目的是找到水平方向上像素值的急剧变化(边缘),而检测水平条纹的卷积核是为了找到水平方向上具有一定宽度和对比度的条纹。
- 权重分布: 水平边缘检测卷积核的权重分布是左右对称且有正负交替,以检测边缘(左右)两侧的像素值变化;检测水平条纹的卷积核权重分布则是水平方向上有明显的正负区分,用于匹配条纹的亮暗部分。
- 响应结果: 水平边缘检测卷积核在图像的边缘处响应值大,在平滑区域响应值小;检测水平条纹的卷积核在水平条纹区域响应值大,在非条纹区域响应值小。
45度条纹检测
- 构建用于检测45°条纹的卷积核
- 一个简单的卷积核可以是 ( 0 1 − 1 − 1 0 1 1 − 1 0 ) \begin{pmatrix}0&1&-1\\-1&0&1\\1&-1&0\end{pmatrix} 0−1110−1−110 。
- 原理
- 斜对角线为0,因为卷积核的权重分布应该对 45° 方向上的像素值变化敏感。
- 当这个卷积核在图像上滑动时,它会对45°方向上的像素值变化进行加权求和。
- 对于45°亮条纹(从左上角到右下角方向),当卷积核的正数权重区域与亮条纹部分重合,负数权重区域与暗条纹部分重合时,加权求和会得到较大的响应值,从而检测到45°条纹。
- 数学过程示例
- 假设图像中有一个简单的45°亮条纹区域,条纹部分像素值为1,背景像素值为0。当卷积核在条纹区域滑动时,根据卷积操作规则,计算加权求和。
- 以卷积核左上角与条纹左上角重合为例,卷积计算为 ( 0 × 0 + 1 × 1 + ( − 1 ) × 0 ) + ( ( − 1 ) × 0 + 0 × 1 + 1 × 0 ) + ( 1 × 0 + ( − 1 ) × 1 + 0 × 0 ) = 0 (0\times0 + 1\times1+(-1)\times0)+((-1)\times0 + 0\times1+1\times0)+(1\times0 + (-1)\times1+0\times0)=0 (0×0+1×1+(−1)×0)+((−1)×0+0×1+1×0)+(1×0+(−1)×1+0×0)=0,随着卷积核的滑动,在条纹区域合适位置会得到较大的响应值。
- 其他可能的卷积核及改进方法
- 还可以通过旋转、组合等方式得到更复杂的卷积核来更好地检测45°条纹。
- 例如,将水平和垂直方向的Sobel卷积核进行旋转和组合,或者使用高斯差分(DoG)方法结合旋转来构建对45°条纹更敏感的卷积核,同时可以结合图像预处理(如旋转、缩放等)来增强45°条纹检测的效果。
4. 图像检测
在图像处理问题中,最常用的神经网络是卷积神经网络,如下原因
权值共享:减少参数量
局部连接: 卷积层中的神经元只与输入图像的局部区域相连接,这符合图像的局部特性。例如,在识别图像中的物体时,局部的像素特征往往能反映出物体的局部结构,卷积神经网络能够很好地捕捉这些局部特征。
平移不变性:这意味着无论目标物体在图像中的哪个位置出现,卷积核都能以相同的方式检测到它。例如,在人脸识别任务中,人脸出现在图像的左上角或右下角,卷积神经网络都能有效识别。
专为图像处理设计:它在图像分类、目标检测、图像分割等图像处理任务中都表现出很强的能力。例如,在著名的ImageNet图像分类竞赛中,基于卷积神经网络的模型取得了非常高的准确率。
相比之下:
- 全连接神经网络(A选项)参数过多,容易过拟合,在图像处理中效率较低。
- 图神经网络(B选项)主要用于处理图结构数据,而非图像数据。
- 循环神经网络(D选项)主要用于处理序列数据,如自然语言处理中的文本数据等,不适用于图像处理。
5. 卷积网络是特殊的全连接网络
6. 输出矩阵的三种填充方法
输出图像的三种填充方法如下:
图像填充方法、合法填充、保持图像大小填充
有如下问题:
完整填充(full padding)
- 输出大小公式: ( H i n + H f − 1 ) × ( W i n + W f − 1 ) × K o u t (H_{in}+H_f - 1)×(W_{in}+W_f - 1)×K_{out} (Hin+Hf−1)×(Win+Wf−1)×Kout
- 解释: 在完整填充中,输入矩阵的四周会填充足够多的0,使得滤波器在输入矩阵上滑动时,每个位置都能进行卷积操作。
- 对于高度方向,滤波器可以从最上方开始滑动,滑动的步数为 H i n + H f − 1 H_{in}+H_f - 1 Hin+Hf−1步。同理,对于宽度方向,滑动步数为 W i n + W f − 1 W_{in}+W_f - 1 Win+Wf−1步。
- 输出通道数为 K o u t K_{out} Kout。
保持图像大小填充(same padding)
- 输出大小公式: H i n × W i n × K o u t H_{in}×W_{in}×K_{out} Hin×Win×Kout
- 解释:在保持图像大小填充中,通过在输入矩阵四周填充合适数量的0,使得输出矩阵的大小与输入矩阵相同。 这意味着卷积操作后,输出矩阵的高度和宽度保持不变,仍为 H i n H_{in} Hin和 W i n W_{in} Win,通道数变为 K o u t K_{out} Kout。
合法填充(valid padding)
- 输出大小公式: ( H i n − H f + 1 ) × ( W i n − W f + 1 ) × K o u t (H_{in}-H_f + 1)×(W_{in}-W_f + 1)×K_{out} (Hin−Hf+1)×(Win−Wf+1)×Kout
- 解释: 在合法填充中,不进行额外的填充(除了可能在边缘处有必要的少量填充以保证滤波器能完整覆盖输入矩阵的局部区域)。
- 对于高度方向,滤波器从输入矩阵的顶部开始,能够滑动的步数为 H i n − H f + 1 H_{in}-H_f + 1 Hin−Hf+1步。同理,对于宽度方向,滑动步数为 W i n − W f + 1 W_{in}-W_f + 1 Win−Wf+1步。
- 输出通道数为 K o u t K_{out} Kout。
注意:输出通道数都为 K o u t K_{out} Kout。
7. 卷积设计
- 卷积核设计
- 采用三个 1 × 1 × 3 1×1×3 1×1×3的线性滤波器。
- 1x1(每次处理多少)代表是卷积核矩阵的大小,即它一次只处理一个像素点
- 3(有能力提取这个像素点的特征)代表输入通道数,那卷积核需要三个通道能够处理输入通道,以便输出指定目标
- 3个滤波器(要提取多少个特征):因为需要输出RGB,每个通道都需要如上一个滤波器来输出指定要求的值,所以需要三个。
- 这三个滤波器的权重分别为: 第一个滤波器: [ 0 , 0 , 1 ] [0, 0, 1] [0,0,1]、 第二个滤波器: [ 0 , 1 , 0 ] [0, 1, 0] [0,1,0]、第三个滤波器: [ 1 , 0 , 0 ] [1, 0, 0] [1,0,0]
- 卷积操作过程: 对于输入图像中的每个像素,其RGB值会与这三个滤波器进行卷积操作。以输入像素的RGB值 ( R , G , B ) (R, G, B) (R,G,B)为例:
- 第一个滤波器 [ 0 , 0 , 1 ] [0, 0, 1] [0,0,1]与 ( R , G , B ) (R, G, B) (R,G,B)卷积,结果为 B B B。
- 第二个滤波器 [ 0 , 1 , 0 ] [0, 1, 0] [0,1,0]与 ( R , G , B ) (R, G, B) (R,G,B)卷积,结果为 G G G。
- 第三个滤波器 [ 1 , 0 , 0 ] [1, 0, 0] [1,0,0]与 ( R , G , B ) (R, G, B) (R,G,B)卷积,结果为 R R R。
- 这样,通过这三个滤波器的卷积操作,就实现了红色通道和蓝色通道值的对调。
- 验证
- 对于输入像素 ( 255 , 128 , 0 ) (255, 128, 0) (255,128,0):
- 第一个滤波器 [ 0 , 0 , 1 ] [0, 0, 1] [0,0,1]卷积结果: 0 0 0
- 第二个滤波器 [ 0 , 1 , 0 ] [0, 1, 0] [0,1,0]卷积结果: 128 128 128
- 第三个滤波器 [ 1 , 0 , 0 ] [1, 0, 0] [1,0,0]卷积结果: 255 255 255
- 输出像素为 ( 0 , 128 , 255 ) (0, 128, 255) (0,128,255),符合要求。
8.9 成像公式
10. 卷积的计算次数
每个输出位置:需要进行大小为 H f × W f × K i n H_f×W_f×K_{in} Hf×Wf×Kin的向量之间的点积。
对于一个输出通道,总共有 H i n × W i n H_{in}×W_{in} Hin×Win个输出位置。 所以,对于一个输出通道,所需的乘法操作次数为 H f × W f × K i n × H i n × W i n H_f×W_f×K_{in}×H_{in}×W_{in} Hf×Wf×Kin×Hin×Win。
考虑输出通道:因为总共有 K o u t K_{out} Kout个输出通道,所以总的乘法操作次数为 H f × W f × K i n × H i n × W i n × K o u t H_f×W_f×K_{in}×H_{in}×W_{in}×K_{out} Hf×Wf×Kin×Hin×Win×Kout。
11. 全连接层的计算
全连接层的每一个输出需要和输入同样大小的乘法操作,所以一共需要输入×输出数量的乘法操作,即 H i n 2 × W i n 2 × K i n × K o u t H_{in}^2 \times W_{in}^2 \times K_{in} \times K_{out} Hin2×Win2×Kin×Kout。
相比于卷积操作的 H f × W f × K i n × H i n × W i n × K o u t H_f \times W_f \times K_{in} \times H_{in} \times W_{in} \times K_{out} Hf×Wf×Kin×Hin×Win×Kout次,全连接操作乘法数除以卷积操作乘法数是 H i n × W i n H f × W f > 1 \frac{H_{in} \times W_{in}}{H_f \times W_f} > 1 Hf×WfHin×Win>1也就是说全连接需要更多的乘法计算。