Lecture 03 学习讲义
正文
工具
按问题查找
区域、像素与实例多个区域怎样复用同一份视觉计算?

把重复卷积移到共享的整图特征

解释、算例与证据

P29 · 许多重叠区域,为什么要重复卷积?

同一个 CNN 权重处理多个裁剪,仍可能重复计算共同像素。整图共享改变的是一次推理的计算组织,与预训练参数迁移分开。共享之后每个区域仍需要自己的坐标和读出;计算重排并不保证与原来的裁剪路线数学等价。

Lecture 03 课堂图解 P29先裁区域:重叠内容反复编码CNNCNN先算全图:再按区域读取预训练复用的是过去学到的参数;这里复用的是当前图片已经算出的特征。

左侧两个重叠红杯候选分别经过 CNN;右侧同一全图一次编码后读取两份区域特征。

  • 先裁区域:重叠内容反复编码
  • CNN
  • CNN
  • 先算全图:再按区域读取
  • 预训练复用的是过去学到的参数;这里复用的是当前图片已经算出的特征。
左侧两个重叠红杯候选分别经过 CNN;右侧同一全图一次编码后读取两份区域特征。 查看对应图解状态
查看完整图解

课堂讲述

看两个相邻候选,它们覆盖的大部分像素相同。如果每个区域分别跑一次卷积,很多共同内容就被反复计算。 于是可以调换组织顺序:先对整张图计算特征,再按区域从特征图中提取表示。这样我们复用的不仅是训练得到的参数,也复用了同一张图的计算结果。 这两种复用不要混在一起。预训练回答“过去学到的知识能否帮助新任务”;共享特征回答“这一张图中哪些计算不必重复”。两个问题合在一起,才能把检测做成可用系统。换顺序后又有新要求:大小不同的区域,怎样得到后续预测器可以处理的表示?

参数复用与一次前向结果的复用

独立阅读

两张重叠裁剪都使用同一个 CNN,已经共享了参数,但仍分别执行卷积。假如它们都包含杯沿和桌面,这些像素会参与两次运算。SPP-net 和 Fast R-CNN 的路线把较重的卷积移到整图:先计算 F=fθ(I)F=f_\theta(I),每个候选再用自己的框 bib_i 读取 ri=R(F,bi)r_i=R(F,b_i)。

这里有两种复用。预训练让新的任务借用过去学到的参数;整图共享则让同一次推理中的多个区域借用已算出的中间结果。前者减少从头学习的需要,后者减少重复工作,不能用同一个“迁移”概念含糊带过。

若有 N 个候选,逐区域成本近似为 N 次卷积加区域预测;共享方式近似为一次整图卷积加 N 次轻量读取与预测。这是计算组织的估算,不是实测加速倍数,因为整图与裁剪的分辨率不同,内存、候选产生和预测头也占时间。

先裁再编码与先编码再读取不严格相等:前者改变对象尺度并裁去上下文;后者的感受野可能跨出 RoI。方法的贡献是在这样的取舍下找到能训练、有效率的共享接口。

沿着图解追问

以下是备课用的模拟师生对话,不是课堂实录。

学生:两个框共用同一 CNN,不是已经共享了吗?

教师:已经共享参数,仍可能分别计算。此页进一步复用同一张图已经得到的特征结果,这两种共享发生在不同层面。

沿这个问题继续

沿 CLS07 的公式定位疑问,再选 LAB09 解析练习或 LAB10 完整训练。

图示条件与公式约定

先裁图再编码与先编码再读区域不严格等价:上下文与几何变换不同。此处比较计算组织,不提供未测加速倍数。

这条线索的展开与后续阅读