4、图像分割模型基础:常见模型(UNet、DeepLab、SegNet)结构、算子类型、内存访问模式分析

图像分割是计算机视觉中像素级语义理解的核心任务,其模型结构直接决定了计算密度与内存访问特征。在 Ethos-U 这类面向边缘的 NPU 上部署分割模型时,内存带宽往往比算力更早成为瓶颈。本章从 UNet、DeepLab、SegNet 三种经典架构出发,剖析其算子构成与内存访问模式,为后续的带宽优化建立结构认知基础。

UNet 编码器-解码器 DeepLab 空洞卷积 SegNet 池化索引 Conv 3x3 Conv 3x3 MaxPool Skip Connection UpConv Conv 3x3 Conv 3x3 H×W×64 H/2×W/2×128 ASPP 模块 rate=1 rate=6 rate=12 rate=18 Concat + 1x1 Conv 多尺度感受野 特征图尺寸不变 Conv+BN Pool+Index UpSample Conv+BN 索引 上采样需读取 池化索引 内存访问特征 跳跃连接 → 特征图拼接 带宽消耗:高 内存访问特征 空洞卷积 → 稀疏访问 带宽消耗:中 内存访问特征 索引存取 → 额外开销 带宽消耗:中高

上图从宏观视角对比了三种模型的结构骨架与内存访问特征。UNet 的跳跃连接带来特征图拼接,DeepLab 的空洞卷积改变采样密度,SegNet 的池化索引则引入额外的索引存取。这些差异直接决定了它们在 Ethos-U 上的带宽消耗模式。

4.1 三种经典分割模型的结构与算子构成

4.1.1 UNet:编码器-解码器与跳跃连接

UNet 最初为医学图像分割设计,其核心思想是通过对称的编码器-解码器结构恢复空间分辨率。编码器由多个卷积块(通常为两个 3×3 卷积 + ReLU)和 2×2 最大池化组成,逐步降低特征图尺寸并增加通道数。解码器则通过转置卷积或上采样操作逐步恢复分辨率,并在每个阶段与编码器对应层的特征图进行拼接(Concatenation),即跳跃连接。

从算子类型看,UNet 的主要算子包括:

  • 3×3 标准卷积:占据计算量的主体,每个卷积层包含乘加运算。
  • 2×2 最大池化:下采样操作,无参数,但需要读取整个输入特征图。
  • 转置卷积(UpConv):上采样操作,本质是卷积的逆向传播,计算密度较高。
  • 特征图拼接:沿通道维度拼接,涉及大量数据搬移。

UNet 的内存访问模式具有显著特征:编码器阶段特征图尺寸大但通道数少,解码器阶段特征图尺寸小但通道数多。跳跃连接要求将编码器的特征图保存在内存中,直到解码器对应阶段使用,这导致中间特征图的存储压力极大。在 Ethos-U 上,这种"先存后取"的模式容易造成片外 DRAM 带宽的峰值压力。

4.1.2 DeepLab:空洞卷积与 ASPP

DeepLab 系列(V1-V3+)的核心创新在于使用空洞卷积(Dilated/Atrous Convolution)扩大感受野,而不增加参数量或降低分辨率。空洞卷积通过在卷积核元素之间插入空洞(即跳过部分像素),使得 3×3 卷积在 rate=6 时等效于 13×13 的感受野。ASPP(Atrous Spatial Pyramid Pooling)模块并行使用多个不同空洞率的卷积,捕获多尺度上下文信息。

DeepLab 的算子构成相对简洁:

  • 空洞卷积:不同 rate 的 3×3 卷积,计算密度与标准卷积相同,但内存访问模式变为稀疏采样。
  • 1×1 卷积:用于通道压缩和融合,计算密度低但数据复用性好。
  • 全局平均池化:在 ASPP 中用于提取全局上下文。
  • 双线性上采样:最终恢复分辨率,通常使用插值而非转置卷积。

DeepLab 的内存访问特点在于:空洞卷积虽然计算量不变,但输入特征图的访问呈现"棋盘格"式的稀疏模式。在 Ethos-U 的 DMA 传输中,这种非连续访问会导致传输效率下降,因为硬件通常以连续 burst 方式读取数据。此外,ASPP 的并行分支需要同时读取同一输入特征图的不同区域,增加了片上缓存的压力。

4.1.3 SegNet:池化索引与高效上采样

SegNet 专为道路场景分割设计,其核心创新是使用池化索引(Pooling Indices)进行上采样。在编码器的最大池化过程中,不仅记录池化后的值,还记录最大值所在的位置索引。解码器使用这些索引将特征图稀疏地放置到更大的尺寸上,然后通过卷积进行细化。

SegNet 的算子类型包括:

  • 3×3 卷积 + BN:与 UNet 类似,但无跳跃连接。
  • 带索引的最大池化:输出特征值的同时输出索引矩阵。
  • 索引上采样:根据索引将特征值放置到对应位置,其余位置填零。
  • 卷积细化:上采样后的稀疏特征图经过卷积填充空洞。

SegNet 的内存访问模式较为特殊:池化索引需要额外的存储空间(通常为 2 bit/像素,记录 2×2 池化中的位置),且上采样阶段需要随机访问输入特征图。在 Ethos-U 上,这种随机访问模式对 DMA 的 scatter-gather 能力要求较高,若硬件不支持高效的随机读取,将导致严重的带宽浪费。

4.2 算子类型与内存访问模式对比

对比维度 UNet DeepLab SegNet
核心算子 3×3 卷积、转置卷积、拼接 空洞卷积、1×1 卷积、全局池化 3×3 卷积、池化索引、索引上采样
特征图尺寸变化 先降后升(对称) 基本不变(仅最终上采样) 先降后升(对称)
内存访问连续性 连续为主,拼接时跨通道 空洞卷积导致稀疏访问 索引上采样导致随机访问
中间特征图存储 高(跳跃连接需保存全部) 低(无跳跃连接) 中(需保存索引)
带宽瓶颈点 编码器-解码器交接处 ASPP 多分支并行读取 索引存取与上采样

从表中可以看出,三种模型在内存访问模式上各有痛点。UNet 的瓶颈在于跳跃连接带来的特征图堆积,DeepLab 的瓶颈在于空洞卷积的稀疏访问,SegNet 的瓶颈在于索引的随机存取。在 Ethos-U 上部署时,需要针对不同模型的访问模式设计相应的优化策略。

4.3 案例拆解:UNet 在 Ethos-U55 上的带宽瓶颈分析

假设我们需要在 Ethos-U55(配置 4 MAC 单元,SRAM 1MB)上部署一个输入为 256×256×3 的 UNet 分割模型。模型结构为:编码器 4 层(每层 2 个 3×3 卷积 + 池化),解码器 4 层(每层上采样 + 2 个 3×3 卷积),跳跃连接在每层对应位置拼接。

初始现象:模型推理时间远超预期,实测为 850ms,而理论计算量(约 5.2 GMACs)在 Ethos-U55 上应只需约 200ms。通过 Ethos-U 的 Cycle Counter 工具分析,发现 DRAM 带宽利用率达到 92%,而 MAC 利用率仅为 38%。

关键数据:

  • 编码器第 1 层输出:128×128×64,占用 1MB SRAM 的 100%(无法放下后续层)。
  • 跳跃连接需要保存 4 个中间特征图:128×128×64、64×64×128、32×32×256、16×16×512,总计约 2.1MB。
  • Ethos-U55 的 SRAM 仅 1MB,导致大部分特征图必须存储在片外 DRAM。

分析判断:UNet 的跳跃连接迫使编码器特征图在解码器阶段被重新读取。每次拼接操作需要从 DRAM 读取编码器特征图(例如 128×128×64 = 1MB),同时写入拼接后的特征图(1MB + 解码器特征图)。这种"读-拼-写"操作在 4 个跳跃连接处累计产生约 8MB 的额外 DRAM 流量,远超卷积本身的数据访问量。

实际操作步骤:

  1. 使用 Vela 编译器生成网络描述文件,查看各层的 SRAM 分配情况。
  2. 定位到第一个跳跃连接(编码器第 1 层输出到解码器第 4 层),确认其 DRAM 访问次数。
  3. 尝试将编码器第 1 层的输出压缩为 16-bit 定点(原为 32-bit float),减少 50% 存储。
  4. 调整网络结构,将跳跃连接的拼接操作改为逐元素相加(U-Net++ 风格),避免通道拼接带来的大块数据搬移。

结果对比:

优化措施 DRAM 流量(MB) 推理时间(ms) MAC 利用率
原始 UNet 18.4 850 38%
16-bit 量化 12.1 620 52%
拼接改相加 9.8 480 67%

风险与代价:将拼接改为相加会损失少量精度(mIoU 下降约 0.8%),但换来了 43% 的推理加速。16-bit 量化需要重新校准模型的动态范围,可能引入数值溢出风险。

复盘经验:UNet 类模型在 Ethos-U 上的首要优化目标是减少跳跃连接的数据搬移。如果任务允许,优先考虑相加替代拼接;若必须拼接,则需确保编码器特征图尽可能驻留在 SRAM 中,避免 DRAM 回读。

4.4 常见误区与总结复盘

误区一:认为计算量(MACs)是唯一性能指标。在 Ethos-U 上,内存带宽往往比算力更稀缺。一个 MAC 利用率低的模型可能因为 DRAM 瓶颈而表现不佳。评估模型时,应同时关注"计算密度"(MACs/Byte)和"数据复用率"。

误区二:忽视空洞卷积的稀疏访问代价。DeepLab 的空洞卷积虽然计算量不变,但输入特征图的访问模式从连续变为稀疏。在 Ethos-U 的 DMA 传输中,稀疏访问会导致传输效率下降 30%-50%。优化时可将空洞卷积拆分为多个子卷积(sub-pixel 分解),恢复连续访问。

经验总结:选择分割模型时,应优先考虑内存访问模式而非单纯追求精度。对于 Ethos-U 这类边缘 NPU,SegNet 的池化索引虽然节省了上采样参数,但索引的随机访问可能比 UNet 的连续拼接更耗时。实际部署前,建议使用 Vela 的 memory 报告进行预评估。