第三章 AI算子基础:卷积、池化、激活函数、全连接层在图像处理中的角色

各位好,欢迎来到第三章。前两章我们把 ISP 流水线的硬件链路捋了一遍,从 RAW 域一路走到 YUV 输出。但从这一章开始,我们要聊点不一样的——AI 算子。

你可能会问:ISP 工程师为什么要学这些?我当年也有这个疑问。直到我在一个夜景降噪项目里,发现传统 3DNR 怎么调都压不住棋盘格噪声,最后用了一个 3×3 的卷积层就解决了。嗯,从那以后我就明白了——ISP 和 AI 算子,其实是同一枚硬币的两面。

这一章,我们只讲四个最基础的算子:卷积、池化、激活函数、全连接层。别小看它们,整个 AI-ISP 协同的根基就在这儿。

3.1 卷积:图像特征的“扫描仪”

卷积是什么?说白了就是一个滑动窗口,在图像上从左到右、从上到下地扫,每扫一次做一次加权求和。

我个人习惯把卷积核看作一个“特征探测器”。不同的核,探测不同的东西:

  • 边缘检测核:比如 Sobel 算子,专门抓水平和垂直边缘
  • 模糊核:比如高斯核,用来平滑噪声
  • 锐化核:增强细节,让图像更“通透”

在 ISP 里,卷积最常见的应用就是去噪和锐化。举个例子:

// 一个简单的 3×3 均值滤波核
float kernel[3][3] = {
    {1/9, 1/9, 1/9},
    {1/9, 1/9, 1/9},
    {1/9, 1/9, 1/9}
};

// 对每个像素 (x, y) 做卷积
output[x][y] = 0;
for (int i = -1; i <= 1; i++) {
    for (int j = -1; j <= 1; j++) {
        output[x][y] += input[x+i][y+j] * kernel[i+1][j+1];
    }
}

你看,这个操作和 ISP 里的 2D 滤波几乎一模一样。区别在于:AI 里的卷积核参数是学出来的,不是手调的。

关键认知:卷积层 = 可学习的 ISP 滤波模块。你调了十年的 3×3 滤波系数,AI 用反向传播几分钟就搞定了。

我在项目中遇到过一个问题:用 5×5 的大核去卷积 4K 图像,结果 AI 芯片的 MAC 阵列直接跑满了,帧率掉了一半。后来我换成两个 3×3 的级联,感受野一样,计算量却少了将近 40%。

实战技巧:在 AI-ISP 芯片上,3×3 卷积是最“友好”的尺寸。5×5 和 7×7 虽然感受野大,但硬件利用率往往不高。能用小核堆叠,就别用大核硬扛。

3.2 池化:降维但不丢关键信息

池化层的作用很单纯:缩小特征图尺寸。但它不是简单地缩放,而是保留最“强”的响应。

最常见的两种:

  • 最大池化(Max Pooling):取窗口内的最大值。保留最显著的特征,丢掉次要信息。
  • 平均池化(Average Pooling):取窗口内的平均值。信息更平滑,但可能丢失尖锐特征。

在 ISP 场景里,池化层通常用在特征提取的前几层之后。比如你要做全局色调映射,先把 4K 图像池化到 512×512,提取全局统计量,再上采样回去做引导滤波。

注意:池化会丢失空间分辨率。如果你做的是像素级任务(比如去马赛克、超分),池化层要慎用。我见过一个团队在去马赛克网络里用了 4 次池化,结果输出图像全是马赛克块——因为细节信息早就丢光了。

为什么会这样?因为池化本质上是一个信息瓶颈。它强迫网络只保留最重要的特征,但代价是空间位置精度下降。对于分类任务这没问题,但对于 ISP 这种像素级任务,你得小心平衡。

3.3 激活函数:给网络注入“非线性”

如果没有激活函数,再多卷积层堆叠也只是线性变换——那跟一个全连接层没区别。激活函数的作用,就是让网络能拟合任意复杂的映射关系。

在 AI-ISP 里,最常用的激活函数就三个:

函数 公式 ISP 场景偏好 我的经验
ReLU max(0, x) 通用特征提取 简单高效,但小心“死神经元”
Leaky ReLU max(αx, x) 低照度增强 负半轴保留一点梯度,避免神经元“坏死”
PReLU max(ax, x),a 可学习 HDR 色调映射 参数化版本,适应性更强

我曾经在一个夜景去噪项目里,用了 ReLU 做激活,结果训练到一半 loss 不降了。排查了半天,发现是 ReLU 把负值的噪声响应全砍成了 0,导致梯度消失。换成 Leaky ReLU 之后,收敛速度明显改善。

避坑指南:在 ISP 任务中,输入图像是 0-255 或 0-1 的正值,但中间特征图很可能出现负值。ReLU 一刀切会丢失信息。我建议在图像恢复类网络里优先考虑 Leaky ReLU 或 PReLU。

3.4 全连接层:特征“汇总”与决策

全连接层(FC)的作用,是把前面提取到的所有特征“拍平”并映射到输出空间。在分类网络里,它输出类别概率;在 ISP 任务里,它可能输出一组调参系数。

举个例子:一个 AI 自动白平衡网络,前面用卷积提取色温特征,最后接一个全连接层,输出 R/G、B/G 的增益值。这就是典型的“特征提取 + 全连接回归”。

但全连接层有个致命问题:参数量巨大。一个 1024 维输入、512 维输出的 FC 层,就有 1024×512 ≈ 52 万个参数。这在 AI 芯片上意味着大量的权重存储和带宽消耗。

硬件视角:在 AI-ISP 芯片上,全连接层往往是内存带宽的瓶颈。卷积层还能复用权重,FC 层每个输出神经元都要读一遍全部权重。我建议:能用卷积 + 全局池化替代的,就别用 FC。

我记得有一次做芯片部署,一个 3 层 FC 的分类头占掉了整个模型 70% 的参数量。后来我用全局平均池化 + 1×1 卷积替代了前两层 FC,参数量降了 80%,精度只掉了 0.3%。

3.5 四大算子的协同关系

这四个算子不是孤立的。在典型的 AI-ISP 网络里,它们是这样配合的:

AI-ISP 网络中的算子协同流程 输入图像 卷积层 3×3, 32通道 激活函数 Leaky ReLU 池化层 2×2 最大池化 卷积层 3×3, 64通道 激活函数 PReLU 池化层 全局平均池化 全连接层 输出:增益系数 典型 AI-ISP 网络结构 卷积→激活→池化→卷积→激活→池化→FC

这个流程你看着眼熟吗?其实它和 ISP 的经典链路很像:

  • 卷积 → 相当于 ISP 里的 2D 滤波 + 特征提取
  • 激活函数 → 相当于 ISP 里的非线性映射(比如 gamma 曲线)
  • 池化 → 相当于 ISP 里的下采样或统计量提取
  • 全连接层 → 相当于 ISP 里的自动调参决策模块

核心观点:AI 算子不是凭空造出来的东西。它们和 ISP 的经典模块一一对应。理解了这个对应关系,你就能把 ISP 的硬件经验直接迁移到 AI 网络设计里。

3.6 本章小结

这一章我们聊了四个基础算子:

  • 卷积:可学习的特征提取器,和 ISP 滤波同源
  • 池化:降维工具,保留主要特征,但会丢空间信息
  • 激活函数:注入非线性,ISP 任务里 Leaky ReLU 比 ReLU 更友好
  • 全连接层:特征汇总与决策,但参数量大,能省则省