SiamMask中的分类分支、回归分支与Mask分支,有何本质差异?

SiamMask中的分类分支、回归分支与Mask分支,有何本质差异?

本文是"Siam 系列网络深度解析"之三,重点对比并深入剖析SiamMask在跟踪与分割任务中,分类分支、回归分支和Mask分支的不同设计思路、网络结构与训练策略。


一、引言

SiamMask以多任务学习的方式,实现了目标跟踪(Tracking)与目标分割(Segmentation)的统一框架。模型共有三条并行分支:分类分支 (Classification Head)、回归分支 (Regression Head)和Mask分支 (Mask Head)。虽然它们都基于同一个深度相关特征图 g ∈ R C × H × W g\in\mathbb R^{C\times H\times W} g∈RC×H×W,并且都执行二分类或回归操作,但在设计目标网络结构输入/输出粒度损失函数训练方式等方面均存在本质区别。

本篇文章将从以下角度展开:

  1. 分支定位与任务目标
  2. 网络结构与感受野设计
  3. 输入特征与输出形式
  4. 损失函数与监督信号
  5. 三者协同工作流程
  6. 实验对比与可视化示例

二、分支定位与任务目标

分支 任务目标 输出意义
分类分支 判断某空间位置是否为目标中心 前景概率热力图 S ∈ [ 0 , 1 ] 1 × H × W \mathbf S\in[0,1]^{1\times H\times W} S∈[0,1]1×H×W
回归分支 回归Anchor相对于真实框的偏移量 边界框偏移量 Δ = ( l , t , r , b ) ∈ R 4 × H × W \Delta=(l,t,r,b)\in\mathbb R^{4\times H\times W} Δ=(l,t,r,b)∈R4×H×W
Mask分支 对目标区域进行像素级前景/背景分割 掩膜概率图 M ^ ∈ [ 0 , 1 ] 1 × H m × W m \hat M\in[0,1]^{1\times H_m\times W_m} M^∈[0,1]1×Hm×Wm
  • 分类分支 :提供一个粗粒度的定位信号,告诉模型"目标的大致中心在哪里"。
  • 回归分支:基于分类分支给定的位置,从每个Anchor出发,用4个通道精确地回归边界框。
  • Mask分支:在回归出的目标框内部,生成高分辨率的像素级掩膜,实现精细分割。

三、网络结构与感受野设计

3.1 分类分支(Classification Head)

  • 典型实现 :1~2层 3 × 3 3\times3 3×3卷积 + Sigmoid
  • 感受野:适中,关注当前位置的上下文信息,以便区分前景/背景
  • 输出分辨率 :与输入特征等大(如 H × W = 17 × 17 H\times W=17\times17 H×W=17×17或 25 × 25 25\times25 25×25)

示例代码

python 复制代码
self.cls_conv = nn.Conv2d(C, C, kernel_size=3, padding=1)
self.cls_score = nn.Conv2d(C, 1, kernel_size=1)
# forward:
feat = F.relu(self.cls_conv(g))    # [B,C,H,W]
score = torch.sigmoid(self.cls_score(feat))  # [B,1,H,W]

3.2 回归分支(Regression Head)

  • 典型实现:同样是2~3层小卷积 + 无激活
  • 感受野:与分类相近,但关注边缘位置的特征变化以便回归准确
  • 输出分辨率 : 4 × H × W 4\times H\times W 4×H×W,对应每个位置的 l , t , r , b l,t,r,b l,t,r,b值

示例代码

python 复制代码
self.reg_conv = nn.Conv2d(C, C, kernel_size=3, padding=1)
self.reg_offset = nn.Conv2d(C, 4, kernel_size=1)
# forward:
feat = F.relu(self.reg_conv(g))   # [B,C,H,W]
offset = self.reg_offset(feat)    # [B,4,H,W]

3.3 Mask分支(Mask Head)

  • 典型实现:U-Net风格或多层卷积 + 上采样
  • 感受野:更大,需要捕捉目标内部与边界细节
  • 输出分辨率 :高于跟踪特征图,通常为 63 × 63 63\times63 63×63或更高
  • 关键组件:RoIAlign/Crop → 一系列卷积与反卷积 → Sigmoid

示例代码

python 复制代码
# RoIAlign后得到局部特征 [B,C,H,W]
x = roi_align(feature_map, boxes, output_size=(H,W))
x = F.relu(self.conv1(x))
x = F.relu(self.conv2(x))
x = F.convTranspose2d(x, ...)  # 上采样
mask = torch.sigmoid(self.conv_final(x))  # [B,1,H_m,W_m]

四、输入特征与输出形式

分支 输入特征 输出形式 下游依赖
分类分支 全局 DW-XCorr 特征 g g g 热力图 S \mathbf S S 决定回归与Mask的位置
回归分支 全局 DW-XCorr 特征 g g g 偏移量 Δ \Delta Δ 生成最终边界框
Mask分支 RoIAlign 裁剪特征 掩膜 M ^ \hat M M^ 精细分割
  • 分类分支回归分支 共享同一输入: g ∈ R C × H × W g\in\mathbb R^{C\times H\times W} g∈RC×H×W。
  • Mask分支通过RoIAlign从回归出的候选框中裁剪特征,得到局部高分辨率特征,用于掩膜预测。

五、损失函数与监督信号

5.1 分类分支损失

二元交叉熵:
L c l s = − ∑ i , j [ y i , j log ⁡ S i , j + ( 1 − y i , j ) log ⁡ ( 1 − S i , j ) ] \mathcal L_{cls} = -\sum_{i,j}\bigl[y_{i,j}\log S_{i,j} + (1-y_{i,j})\log(1 - S_{i,j})\bigr] Lcls=−i,j∑[yi,jlogSi,j+(1−yi,j)log(1−Si,j)]

  • y i , j ∈ { 0 , 1 } y_{i,j}\in\{0,1\} yi,j∈{0,1}:某位置是否为前景Anchor
  • 监督信号稀疏,仅中心Anchor或与GT匹配的Anchor为正样本

5.2 回归分支损失

Smooth L1 Loss:
L r e g = ∑ c ∈ { l , t , r , b } ∑ i , j S m o o t h L 1 ( Δ c , i , j − Δ c , i , j ∗ ) \mathcal L_{reg} = \sum_{c\in\{l,t,r,b\}} \sum_{i,j} \mathrm{SmoothL1}(\Delta_{c,i,j} - \Delta^*_{c,i,j}) Lreg=c∈{l,t,r,b}∑i,j∑SmoothL1(Δc,i,j−Δc,i,j∗)

  • Δ ∗ \Delta^* Δ∗:Ground-Truth边界框与Anchor的真实偏移

5.3 Mask分支损失

像素级二元交叉熵:
L m a s k = − 1 H m W m ∑ u , v [ M u , v ∗ log ⁡ M ^ u , v + ( 1 − M u , v ∗ ) log ⁡ ( 1 − M ^ u , v ) ] \mathcal L_{mask} = -\frac{1}{H_mW_m}\sum_{u,v}\bigl[M^*{u,v}\log\hat M{u,v} + (1-M^*{u,v})\log(1-\hat M{u,v})\bigr] Lmask=−HmWm1u,v∑[Mu,v∗logM^u,v+(1−Mu,v∗)log(1−M^u,v)]

  • M u , v ∗ ∈ { 0 , 1 } M^*_{u,v}\in\{0,1\} Mu,v∗∈{0,1}:像素级前景/背景标签

5.4 总损失

多任务加权:
L t o t a l = λ c l s L c l s + λ r e g L r e g + λ m a s k L m a s k \mathcal L_{total} = \lambda_{cls}\mathcal L_{cls} + \lambda_{reg}\mathcal L_{reg} + \lambda_{mask}\mathcal L_{mask} Ltotal=λclsLcls+λregLreg+λmaskLmask

常见设定: λ c l s = 1 , λ r e g = 1.2 , λ m a s k = 32 \lambda_{cls}=1,\lambda_{reg}=1.2,\lambda_{mask}=32 λcls=1,λreg=1.2,λmask=32。


六、三者协同工作流程

  1. 特征提取:模板与搜索图通过Backbone、FPN提取多尺度特征。
  2. DW-XCorr :得到全局匹配特征图 g g g。
  3. 分类分支 :生成热力图 S \mathbf S S,选取得分最高的位置作为候选Anchor。
  4. 回归分支:对候选Anchor回归偏移,得到精确边界框。
  5. Mask分支:对每个候选框进行RoIAlign裁剪,预测高分辨率掩膜。

七、实验对比与可视化示例

下面对比三者输出:

  • 分类热力图:低分辨率,但清晰标出目标中心
  • 回归框:粗略定位目标范围
  • Mask掩膜:高分辨率,精确描绘目标轮廓
text 复制代码
+----------------------+----------------------+----------------------+
|    Classification    |     BBox Regression  |        Mask          |
+----------------------+----------------------+----------------------+
|    17×17 heatmap     |    4×17×17 offsets   |     63×63 mask       |
+----------------------+----------------------+----------------------+

(此处可插入示意图:热力图、边框图、掩膜图)


八、小结与展望

  • 分类分支聚焦"哪个位置是目标",为后续模块提供定位基准;
  • 回归分支细化Anchor到精确框,实现尺度与位移回归;
  • Mask分支在局部框内做细粒度分割,获得目标轮廓。

三者分工明确、协同高效,共同构成了SiamMask的跟踪+分割能力。

下篇我们将撰写:

《分类分支 vs Mask分支:为什么不能一个分支包办所有任务?》

敬请期待!

相关推荐
Funny_AI_LAB2 小时前
大模型图像编辑那家强?
图像处理·计算机视觉·ai·语言模型
新知图书2 小时前
OpenCV彩色图像分割
人工智能·opencv·计算机视觉
多巴胺与内啡肽.2 小时前
OpenCV进阶操作:图像金字塔
人工智能·opencv·计算机视觉
知新_ROL3 小时前
基础的贝叶斯神经网络(BNN)回归
人工智能·神经网络·回归
硅谷秋水4 小时前
π0.5:带开放世界泛化的视觉-语言-动作模型
人工智能·机器学习·计算机视觉·语言模型
龙萱坤诺7 小时前
图像生成新势力:GPT-Image-1 与 GPT-4o 在智创聚合 API 的较量
人工智能·深度学习·计算机视觉
白熊1887 小时前
【计算机视觉】CV实战项目- Four-Flower:基于TensorFlow的花朵分类实战指南
计算机视觉·分类·tensorflow
子燕若水8 小时前
How do I install OpenCV with gpu support
人工智能·opencv·计算机视觉
机器学习之心9 小时前
Transformer四模型回归打包(内含NRBO-Transformer-GRU、Transformer-GRU、Transformer、GRU模型)
回归·gru·transformer·transformer-gru