AI 课程网站首页
返回知识库

卷积与方向边缘响应

逐项计算卷积核如何响应局部边缘。

本篇目录
  1. 互相关与卷积
  2. 方向 Sobel 算子
  3. 完整的局部计算
  4. 数值输入与响应图
  5. 方向与解释范围
  6. 参考文献

边缘与相邻位置之间的数值变化有关。将邻域一侧与另一侧相减,可以消除均匀区域的响应,并突出发生变化的位置。卷积核把这种比较写成一组局部权重,使系数与响应之间的关系能够精确计算。

局部线性滤波器对邻域数值进行加权求和。其响应取决于系数排列、空间方向、边界处理与数值尺度。固定边缘检测器提供了一个可完整计算的例子,也为后续讨论卷积网络中的可训练系数建立运算基础。

1. 互相关与卷积

对于单通道输入 XX,以及以中心为原点编号的 3×33\times3 核 KK,互相关定义为:

Yi,j=∑u=−11∑v=−11Ku,vXi+u,j+vY_{i,j}=\sum_{u=-1}^{1}\sum_{v=-1}^{1}K_{u,v}X_{i+u,j+v}

数学卷积则使用相反的空间偏移:

(K∗X)i,j=∑u=−11∑v=−11Ku,vXi−u,j−v(K*X)_{i,j}=\sum_{u=-1}^{1}\sum_{v=-1}^{1}K_{u,v}X_{i-u,j-v}

等价地,可以先翻转卷积核的空间方向,再执行互相关。许多神经网络库将不翻转核的运算也称为卷积,因此在比较系数或响应正负号前,需要先声明采用的约定。[1]

下文的数值例子采用互相关、步幅一,以及一圈复制填充。复制填充用最近的边界值延拓输入。这些条件保持输入的空间尺寸,并明确规定边界位置的计算方式。

2. 方向 Sobel 算子

水平方向 Sobel 核为:

Kx=[−101−202−101]=[121][−101]K_x=\begin{bmatrix}-1&0&1\\-2&0&2\\-1&0&1\end{bmatrix} =\begin{bmatrix}1\\2\\1\end{bmatrix} \begin{bmatrix}-1&0&1\end{bmatrix}

这一分解将水平差分与竖直方向的加权求和结合。由于核系数总和为零,常数区域的响应为零。对于水平线性变化 Xi,j=aj+bX_{i,j}=aj+b,每一行的差分为 2a2a;再按 1,2,11,2,1 加权,得到:

Gx=8aG_x=8a

因此,在单位网格间距下,除以八可得到这一特定线性变化的斜率。未归一化算子带有尺度因子,解释响应幅度时需要保留这一点。竖直边界沿水平方向发生数值变化,所以会产生较强的水平响应。[2]

3. 完整的局部计算

考虑局部区域:

P=[202022020202202020220]P=\begin{bmatrix}20&20&220\\20&20&220\\20&20&220\end{bmatrix}

将对应元素相乘后求和,得到:

Gx=(−20+220)+(−40+440)+(−20+220)=800G_x=(-20+220)+(-40+440)+(-20+220)=800

中间一行的非零权重绝对值为二,因此贡献是上下两行各自贡献的两倍。若反转数值变化方向,响应符号也反转为 −800-800。正负号区分变化方向,单独保留绝对值则会丢失这一区别。

三乘三区域与 Sobel 系数:三行贡献依次为 200、400、200。

4. 数值输入与响应图

测试输入的高度为 128、宽度为 192。在坐标 48≤x≤14348\le x\le143、32≤y≤9532\le y\le95 内,数值为 220;其他位置为 20。以 (x,y)=(47,50)(x,y)=(47,50) 为中心的区域,恰好对应上述计算。这些数值定义的是合成数值输入,并非模型实测输出。

高 128、宽 192 的合成输入:数值为 20 的区域中包含数值为 220 的矩形。

对于这一输入,水平响应的最大绝对值为 800,显示图按下式生成:

Di,j=round⁡(255∣Gx(i,j)∣800)D_{i,j}=\operatorname{round}\left(255\frac{|G_x(i,j)|}{800}\right)

水平 Sobel 响应的绝对值,缩放到零至 255 的显示范围。

分母 800 仅适用于当前输入。对于任意零至 255 的输入值,核的正权重总和为四,因此理论最大绝对响应可达 4⋅255=10204\cdot255=1020。用于显示的归一化不应与滤波器原始输出混淆。

5. 方向与解释范围

竖直方向算子为 Ky=Kx⊤K_y=K_x^\top。组合两个方向可定义梯度幅值 Gx2+Gy2\sqrt{G_x^2+G_y^2},但上图只显示 ∣Gx∣|G_x|。因此,水平响应为零并不表示不存在边界;水平边界可能在另一个方向上产生响应。

较大的响应也不能确定物体类别。固定滤波器根据指定系数测量局部方向变化。在 CNN 中,系数可以由任务训练获得,但底层的滑动加权求和仍然保留为基本计算单元。 [2]

参考文献