卷积 3D 实验室

看懂卷积怎样提取特征,转置卷积怎样把小图变大

此刻

怎么做

会骗你

文字版:卷积 3D 实验室在做什么

卷积就是拿一个小窗口在图上滑,每滑到一处就把窗口里的数和卷积核对应相乘再加起来,得到输出图上的一格。这一页把这个过程立体展开:每一块平板是一个通道,你可以逐格查看某一个输出值究竟是哪九个数算出来的。

画面上正在发生什么

点「播放窗口」,蓝框会一格一格走过输入,右下方同步展开这一格的完整算式:窗口里的每个数乘上核里对应的权重,全部相加再加偏置。灰边表示 padding 补的 0。卷积核里的数字可以直接改,改完立刻看到输出怎么变——把核设成一侧正一侧负,输出就会在边缘处亮起来,这就是边缘检测。

几个参数的作用可以逐个试:步长决定窗口每次走几格(步长变大输出变小);padding 决定四周补几圈 0(补得够多,输出才能保持和输入一样大);采样间隔 dilation 让窗口里的格子拉开距离,在不增加参数的前提下看得更宽;分组 groups 把输入通道切成几组各算各的,参数量随之下降。

最后那个「转置卷积」是反过来的:3×3 的输入经 2×2 的核变成 6×6,小图变大。它常被叫作「反卷积」,但那个名字容易误导——它只是把尺寸放大,并不能还原被卷积丢掉的信息。

什么时候它会骗你

  • 输出尺寸算错是最常见的低级错误。输出边长 = (输入 + 2×padding − 核大小) ÷ 步长 + 1。这一页每改一个参数就把新尺寸标出来,可以直接对着核算。
  • 通道数不会因为改宽高而自动变。页面明确提示了这一点:输出通道数取决于你用了多少组卷积核,和输入的宽高、步长、padding 都无关。
  • 转置卷积会留下棋盘格。当核大小不能被步长整除时,输出上不同位置被叠加的次数不一样,生成的图像会出现规则的方格状伪影。这是图像生成任务里的经典问题,常见对策是改用「先上采样再普通卷积」。

常见问题

卷积层的参数量怎么算?
一组卷积核的参数量 = 核高 × 核宽 × 输入通道数,再加 1 个偏置;有多少个输出通道就有多少组。所以 3×3 的核、64 进 128 出,参数量是 3×3×64×128 + 128。注意它和输入图的宽高无关——这正是卷积比全连接省参数的原因。
为什么卷积特别适合图像?
两个性质:局部连接(每个输出只看输入的一小块,符合图像里相邻像素更相关的事实)和权重共享(同一个核滑遍全图,意味着「在哪里找这个花纹」用的是同一套参数)。这让参数量大幅下降,也带来了平移不变性。
1×1 卷积有什么用?它不是什么都没看吗?
它在空间上确实只看一格,但在通道方向上看了全部。所以它的作用是通道之间的线性组合:升维、降维、跨通道融合信息。ResNet 的瓶颈块、Inception 结构都大量使用它来控制计算量。

本页的输入图案与卷积核均为教学设定,所有输出值由页面按标准卷积定义实时计算。

作者与维护:覃秉丰 · 关于覃秉丰 · 引用本页讲解

继续学习