摘要
视觉任务之间是否有关系,或者它们是否无关?例如,曲面法线(surface normals)可以简化估算图像的深度吗?直觉积极回答这些问题,暗示在视觉任务中存在某种结构。了解这种结构具有显著的价值;它是迁移学习的基本概念,并提供了一种识别任务冗余的方法,以便例如在相关任务之间无缝地重用监督或在一个系统中解决许多任务而不会增加复杂性。我们提出了一种完全计算的方法来构建视觉任务空间的结构。这是通过在潜在空间中的二十六个2D,2.5D,3D和语义任务的字典中查找(一阶和更高阶)迁移学习依赖性来完成的。该产品是用于任务迁移学习的计算分类地图。我们研究了这种结构的后果,例如:非平凡的关系,并利用它们来减少对标签数据的需求。例如,我们表明,解决一组10个任务所需的标记数据点总数可以减少大约 2 3 \frac 23 32(与独立训练相比),同时保持性能几乎相同。我们提供了一套用于计算和探测这种分类结构的工具,包括用户可以用来为其用例设计有效监督策略的求解器。
文章目录
符号说明
- 目标任务: T = { t 1 , ⋯   , t n } \mathcal{T}=\{ t_1,\cdots,t_n \} T={t1,⋯,tn}.我们希望最大化它的整体性能.
- 源域任务: S \mathcal{S} S
- 监督预算: γ \gamma γ : 多少任务我们愿意从零开始学习,经济、计算力、时间等方面的限制.
- 对任务 t t t,函数 f t f_t ft是指将图片 I I I映射到 f t ( I ) f_t(I) ft(I),是ground truth.
- 数据集 D \mathcal{D} D:包含每个任务的训练对 ( I , f t ( I ) ) (I,f_t(I)) (I,ft(I)),e.g.(image,depth)
感兴趣与否 | 是否能从零开始学习 | |
---|---|---|
T \ S \mathcal{T} \backslash \mathcal{S} T\S | 感兴趣 | 不能从零开始学习 |
S \ T \mathcal{S} \backslash \mathcal{T} S\T | 不感兴趣 | 能从零开始学习 |
T ∩ S \mathcal{T} \cap \mathcal{S} T∩S | 感兴趣 | 能从零开始学习 |
S − T ∩ S \mathcal{S}-\mathcal{T} \cap \mathcal{S} S−T∩S | 不能直接解决但是可以被选择提高目标域的性能 | |
T − T ∩ S \mathcal{T}-\mathcal{T} \cap \mathcal{S} T−T∩S | 我们想解决但是不能训练的 |
任务字典Task Dictionary
- Autoencoding:降维表示.
- Colorization:给定一张灰度图像,预测它原来的颜色.
- Context Encoding:
- Content Prediction (Jigsaw)
- Curvature Estimation
- Denoising
- Depth Estimation, Euclidean
- Depth Estimation, Z-Buffer
- Edge Detection (2D)
- Edge Detection (3D)
- Keypoint Detection (2D)
- Keypoint Detection (3D)
- Point Matching
- Relative Camera Pose Estimation, Non-Fixated
- Relative Camera Pose Estimation, Fixated
- Relative Camera Pose Estimation, Triplets (Egomotion)
- Reshading
- Room Layout Estimation
- Segmentation, Unsupervised (2D))
- Segmentation, Unsupervised (2.5D))
- Surface Normal Estimation
- Vanishing Point Estimation
- Semantic Learning through Knowledge distillation
数据集 Dataset
约600座建筑物的400万幅室内场景图像数据集; 每个图像都有一个每个任务的注释.
方法
一、 Task-Specific Modeling
对源域中每一个任务都训练一个全监督的Task-Specific 网络。
- Encoder: 对每个任务都有一个 ResNet-50架构。去掉平均池化层,将卷积层最后一层的步长改为1.再加一个3X3的卷积层,最终输出一个16x16x8的representation.
- Decoder: 根据任务的不同而不同。
A. 对pixels-to-pixels预测,we used a 15-layer fully convolutional decoder: 5 convolutional layers, and then alternating convolution and convolution transpose layers.
B. 低维任务(e.g. Vanishing Points):our decoder was two or three fully-connected layers with dropout applied after all but the last one.
二、Transfer Modeling
迁移网络:
如上图所示,对于一个起始任务
s
∈
S
s\in\mathcal{S}
s∈S 和一个目标任务
t
∈
T
t\in\mathcal{T}
t∈T ,它们的数据集是一样的。然后我们将以
s
s
s 的representation作为输入来学习
t
t
t 。我们将freeze任务
s
s
s 的 encoder 参数,并基于encoder的输出 (representations) 学习一个浅层神经网络 read out function。严谨来讲,如果我们用
E
s
E_s
Es 表示
s
s
s 的encoder,
f
t
f_t
ft 表示
t
t
t 的标注,
L
t
L_t
Lt 表示
t
t
t 的loss函数,
I
∈
D
I\in \mathcal{D}
I∈D 来表示图片和迁移训练集,
D
s
↔
t
D_{s \leftrightarrow t}
Ds↔t 表示要迁移学习的浅层神经网络,
θ
s
↔
t
\theta_{s \leftrightarrow t}
θs↔t表示网络参数,学习目标为:
D
s
↔
t
:
=
a
r
g
min
θ
E
I
∈
D
[
L
t
(
D
θ
(
E
s
(
I
)
)
,
f
t
(
I
)
)
]
D_{s \leftrightarrow t}:=arg\min_{\theta} \mathbb{E}_{I \in \mathcal{D}} \bigg[L_t \bigg(D_{\theta}(E_s(I)),f_t(I) \bigg )\bigg]
Ds↔t:=argθminEI∈D[Lt(Dθ(Es(I)),ft(I))]这里目标域的数据是由标签的,因为这里只是为了计算两个任务的关联性.
D
s
↔
t
D_{s \leftrightarrow t}
Ds↔t是为了计算关联矩阵的.
Accessibility(可达性)
为了迁移成功,源域的隐含表示(representation)必须包含:1. 能解决目标问题的信息 ;2. 可达到的信息.所以为了 一高度可达到性为条件来衡量迁移效果,需要用浅层网络.
Higher-Order Transfer(高阶迁移)
上述迁移代表了任务之间一对一的关联,我们称其为一阶关联。几个任务之间可能具有互补性,结合几个起始任务的representations会对解决目标任务起到帮助。因此,我们也研究了任务之间多对一的关联,我们称其为高阶关联。在这种情况下,我们将几个起始任务的representation结合起来当作目标任务的输入,其余细节跟上段类似。
因为高阶的任务组合数量太大,我们基于一阶表现选择了一部分的组合进行迁移学习。对于小于五阶的高阶,我们根据一阶的表现,将前五的所有组合作为输入。对于n>5阶,我们选择结合一阶表现前n的起始任务作为输入。多个源域任务能包含对目标任务有用的互补信息。所以文章采用高阶迁移。它和一阶迁移类似,但是输入时包含多种表示(representation).
迁移函数
D
:
P
(
S
)
→
T
D: \mathscr{P}(\mathcal{S}) \rightarrow \mathcal{T}
D:P(S)→T ,其中
P
\mathscr{P}
P是幂集算子.
k
k
k阶迁移有
∣
T
∣
×
(
∣
S
∣
k
)
\vert \mathcal{T} \vert \times \begin{pmatrix} \vert \mathcal{S} \vert \\ k \end{pmatrix}
∣T∣×(∣S∣k) 个迁移任务要计算。太多了所以这里采用beam search(集束搜索算法).
针对一个目标域,计算阶数
≤
5
\le 5
≤5的迁移任务,我们选择5个最好的源域,并且包含它们所有的
k
k
k阶迁移联合。对于
k
≥
5
k \ge 5
k≥5,令 beam size=1,然后计算top k 源域。
- 高阶迁移
三、Ordinal Normalization(层次分析法)
这一步的目标为用一个 affinity matrix 量化任务之间的关联。虽然从上步习得的迁移网络中我们获得了许多的loss值 L s → t L_{s\rightarrow t} Ls→t,但因这些loss值来自于不同的loss 函数,它们的值域有很大差别。如果我们把这些loss值直接放入一个矩阵(上图左,纵轴为目标任务、横轴为起始任务),那么这个矩阵内的值及其不均匀,并不能有效反应任务之间的关联。同时,简单的线性规范化也并不能解决问题,因为任务的loss值和表现并不构成线性关系(0.01的 l 2 l_2 l2 loss并不代表其表现两倍好于0.02的loss)。由此,我们采用Ordinal Normalization(基于序数的规范化)来将loss值转换为关联度。该方法基于运筹学中的 AHP (Analytic Hierarchy Process)。概括来讲,affinity matrix中的第 ( i , j ) (i,j) (i,j) 个值为利用第 i i i 个起始任务迁移后,其网络有多大的几率表现好于用第 j j j 个网络(我们在下文称其为 i i i对于 j j j的胜率)。
对于每个目标任务
t
t
t ,我们构建pairwise tournament 矩阵
W
t
W_t
Wt ,其纵轴和横轴均对应所有的起始任务及我们计算过的高阶组合。给定一个测试集
D
t
e
s
t
D_{test}
Dtest ,
W
t
W_t
Wt 的
(
i
,
j
)
(i,j)
(i,j) 项为
s
i
s_i
si 在
D
t
e
s
t
D_{test}
Dtest 的所有图片输入中有多大的几率表现好于
s
j
s_j
sj (有几成
I
∈
D
t
e
s
t
I \in D_{test}
I∈Dtest 会使
L
t
(
D
s
i
→
t
(
I
)
)
<
L
t
(
D
s
j
→
t
(
I
)
)
L_t(D_{s_i \rightarrow t}(I)) < L_t(D_{s_j \rightarrow t}(I))
Lt(Dsi→t(I))<Lt(Dsj→t(I)) )。在将
W
t
W_t
Wt的值clip到
[
0.001
,
0.999
]
[0.001,0.999]
[0.001,0.999],计算
W
t
′
=
W
t
/
W
t
T
W'_t = W_t / W_t^T
Wt′=Wt/WtT ,
W
t
′
W'_t
Wt′ 的
(
i
,
j
)
(i,j)
(i,j) 项
w
i
,
j
′
w'_{i,j}
wi,j′ 现在代表着
s
i
s_i
si 表现好于
s
j
s_j
sj 几倍。这样:
w
i
,
j
′
=
E
I
∈
D
t
e
s
t
[
D
s
i
→
t
(
I
)
>
D
s
j
→
t
(
I
)
]
E
I
∈
D
t
e
s
t
[
D
s
i
→
t
(
I
)
<
D
s
j
→
t
(
I
)
]
w_{i,j}'=\frac{\mathbb{E}_{I\in \mathcal{D}_{test}}[D_{s_i \rightarrow t}(I)>D_{s_j \rightarrow t}(I)]}{\mathbb{E}_{I\in \mathcal{D}_{test}}[D_{s_i \rightarrow t}(I)<D_{s_j \rightarrow t}(I)]}
wi,j′=EI∈Dtest[Dsi→t(I)<Dsj→t(I)]EI∈Dtest[Dsi→t(I)>Dsj→t(I)]
计算
W
t
′
W_t'
Wt′的第
i
i
i个特征向量作为
s
i
s_i
si到
t
t
t的传递性.我们将所有的
W
t
′
W_t'
Wt′的特征向量堆到一起,则构成了最终的关联矩阵
P
P
P,其中
∀
t
∈
T
\forall t \in \mathcal{T}
∀t∈T.
四、 Computing the Global Taxonomy(计算全局任务分类)
这一阶段我们要发明一种全局策略使得它能够最大化所有任务集体的性能,并且最小化所使用的监督信息.这里任务被表示为节点,迁移被表示为边。我们将使用BIP( Boolean Integer Programming)找到最优的子图,即点和边,使它满足源域的节点不超过监督预算.
- 相关概念:
- 超图:
- 第 i i i条边: ( { s 1 i , ⋯   , s m i i } , t i ) (\{ s_1^i,\cdots ,s^i_{m_i} \},t^i) ({s1i,⋯,smii},ti)
- 算子 s o u r c e s sources sources从边中取出属于源域的点: ( { s 1 i , ⋯   , s m i i } , t i ) → s o u r c e s { s 1 i , ⋯   , s m i i } (\{ s_1^i,\cdots ,s^i_{m_i} \},t^i) \xrightarrow{sources} \{ s_1^i,\cdots ,s^i_{m_i} \} ({s1i,⋯,smii},ti)sources{s1i,⋯,smii}.
- 算子 t a r g e t target target从边中取出属于源域的点: ( { s 1 i , ⋯   , s m i i } , t i ) → t a r g e t t i (\{ s_1^i,\cdots ,s^i_{m_i} \},t^i) \xrightarrow{target} t^i ({s1i,⋯,smii},ti)targetti.
- 通过全监督 ( { t } , t ) (\{t\},t) ({t},t)解决任务 t t t.
- 监督预算 γ \gamma γ.
- i i i代表一条边.
- j j j代表一个目标任务.
- r j r_j rj:每个目标任务的相对重要性.
- l i l_i li:每个任务所需标记的相对花费.
- 目标任务性能的好坏,从 p i p_i pi每个迁移 ( p i ) (p_i) (pi)