0%

论文阅读-disentanglement-Disentangling 3D Prototypical Networks For Few-Shot Concept Learning

动机

  • 人类可以从少样本中学到新概念,并用新学到的概念回答关于视觉场景的问题。

贡献

  • 提出了一种解纠缠神经网络D3DP-Nets,将RGB-D图像解纠缠为目标的形状、风格和背景图等,并探索了其在few-shot 3D目标检测和few-shot概念分类的应用。

相关工作

Few-shot concept learning

少镜头学习方法试图在测试时从一个或几个注释示例中学习新概念,但在训练时仍然需要标记的数据集,本文提出的模型通过预测视图来预训练,不需要对对象类或属性进行注释。本文的方法与部分方法有相似之处,即计算到通过对少数标记示例特征平均得到的原型的距离来分类,不同之处是在解纠缠的形状和风格编码基础上学习的概念原型取决于概念的语义而不是纠缠的2D CNN特征,且使用3D视觉特征空间的目标形状和3D旋转感知实例原型匹配,而不是一维嵌入的内积。

Learning neural scene representation

本文方法的场景编码器、解码器、视图预测目标等与Tung等人提出的几何感知神经网络相似,但本文的模型旨在学习特征表示,检测目标的姿态、比例等变化,并使它们用于概念学习,形状和风格的解纠缠则使用了AdaIN

本文的方法

如上图,D3DP-Nets包含两个主要部分:一个图像到场景的encoder-decoder,一个目标形状/风格解纠缠encoder-decoder

IMAGE-TO-SCENE ENCODER-DECODER

2D-to-3D的场景可微分编码器 \mathrm{E}^{sc} 将输入的RGB-D图像映射到3D特征图 \mathbf{M}\in\mathbb{R}^{w\times h\times d \times c} ,即每个网格点 (x,y,z) 有一个 c 通道的特征向量来描述在3D真实场景中对应的3D物理位置的语义和几何属性。对 \mathbf{M} 使用一个占用译码器 \mathrm{D}^{occ} 输出一个二进制3D占用图 \mathbf{M}^{occ}\in\{0,1\}^{w\times h \times d} ,可微分的神经渲染器 \mathrm{D}^{sc} 3D特征图 \mathbf{M} 渲染为2D图像和一个特定视角的深度图。

D3DP-Nets通过视图预测实现自监督,其预测RGB图像和查询视图的占用网格点。文章假设有一个agent,可以在静态场景中移动,并从多个视角观察目标。联合训练场景编码器和解码器进行RGB视图预测和占用率预测,并将误差端到端的反向传播到网络参数:

\mathcal{L}^{\text {view-pred }}=\left\|\mathrm{D}^{\mathrm{sc}}\left(\operatorname{rotate}\left(\mathbf{M}, v_{q}\right)\right)-I_{q}\right\|_{1}+\log \left(1+\exp \left(-O_{q} \cdot \mathrm{D}^{\text {occ }}\left(\left(\operatorname{rotate}\left(\mathbf{M}, v_{q}\right)\right), v_{q}\right)\right)\right)

其中, I_q O_q 分别为ground truthRGB图像和占用图, v_q 为查询视图, \operatorname{rotate}\left(\mathbf{M}, v_{q}\right) 是将3D特征图 \mathbf{M} 的内容旋转到视角 v_q 的三线性重采样操作,这个RGB输出用回归损失训练,占用率用logistic分类损失,占用标签通过光线投射计算。由此训练一个3D目标检测器,将场景特征图 \mathbf{M} 作为输入,预测3D轴对齐的边界框,由无类标签的真实3D边界框提供监督信息。

OBJECT SHAPE/STYLE DISENTANGLEMENT

给定3D边界框集合 \{b^o|o=1…\left|\mathcal{O}\right|\} ,其中 \mathcal{O} 是场景中的一组物体,D3DP-Nets对场景特征图 \mathbf{M} 使用3D边界框 b^o 进行裁剪得到对应的目标特征图 \mathbf{M}^o=\text{crop}(\mathbf{M},b^o) ,在训练时使用ground-truth3D边界框,在测试时使用检测的3D边界框。每个目标特征图都被调整为16×16×16的固定分辨率,并被输入到一个以目标为中心的自动编码器,该编码器的编码模块预测一个4D的形状编码 z_{shp}^o=\mathrm{E}_{shp}(\mathbf{M}^o)\in \mathbb{R}^{w\times h\times d \times c} 和一个1D的风格编码 z_{sty}^o=\mathrm{E}_{sty}(\mathbf{M}^o)\in \mathbb{R}^{c} ,解码器使用AdaIN组合这两部分编码: A I N(z, \gamma, \beta)=\gamma\left(\frac{z-\mu(z)}{\sigma(z)}\right)+\beta ,其中 z 是由 z_{shp} 经一个3D卷积得到的,而 \mu \sigma z 在通道维的均值和标准差, \beta \gamma z_{sty} 经单层感知器提取得到的。目标编码器和解码器用一个自编码损失和一个循环一致性损失进行训练,以确保在组合、解码和编码后形状和风格编码保持一致:

\mathcal{L}^{d i s}=\frac{1}{|\mathcal{O}|} \sum_{o=1}^{|\mathcal{O}|}(\underbrace{\left\|\mathbf{M}^{o}-\mathrm{D}\left(\mathrm{E}_{s h p}\left(\mathbf{M}^{o}\right), \mathrm{E}_{s t y}\left(\mathbf{M}^{o}\right)\right)\right\|_{2}}_{\text {autoencoding loss }}+ \\ \underbrace{\sum_{i \in \mathcal{O} \backslash o} \mathcal{L}^{c-s h p}\left(\mathbf{M}^{o}, \mathbf{M}^{i}\right)+\mathcal{L}^{c-s t y}\left(\mathbf{M}^{o}, \mathbf{M}^{i}\right)}_{\text {cycle-consistency loss }})

其中, \mathcal{L}^{c-s h p}\left(\mathbf{M}^{o}, \mathbf{M}^{i}\right)=\left|\mathrm{E}_{s h p}\left(\mathbf{M}^{o}\right)-\mathrm{E}_{s h p}\left(\mathrm{D}\left(\mathrm{E}_{s h p}\left(\mathbf{M}^{o}\right), \mathrm{E}_{s t y}\left(\mathbf{M}^{i}\right)\right)\right)\right|_{2} 为形状一致性损失, \mathcal{L}^{c-s t y}\left(\mathbf{M}^{o}, \mathbf{M}^{i}\right)=\left|\mathrm{E}_{s t y}\left(\mathbf{M}^{o}\right)-\mathrm{E}_{s t y}\left(\mathrm{D}\left(\mathrm{E}_{s h p}\left(\mathbf{M}^{i}\right), \mathrm{E}_{s t y}\left(\mathbf{M}^{o}\right)\right)\right)\right|_{2} 为风格一致性损失。

进一步,在合成的场景特征图 \bar{\mathbf{M}} 上加入了一个视图预测损失,该损失为将每个目标特征图 \mathbf{M}^o 替换为其重新合成的版本 \mathrm{D}(z_{shp}^o,z_{sty}^o) ,并调整到原目标的大小。即视图预测损失为: \mathcal{L}^{view-pred-synth}=\left|\mathrm{D}^{\mathrm{sc}}\left(\operatorname{rotate}\left(\bar{\mathbf{M}}, v^{t+1}\right)\right)-I_{t+1}\right|_{1} ,则总损失为:

\mathcal{L}^{uns}=\mathcal{L}^{view-pred}+\mathcal{L}^{view-pred-synth}+\mathcal{L}^{dis}

3D DISENTANGLED PROTOTYPE LEARNIN

给定一组以目标属性(形状、颜色、材质、大小)标签形式的人工标注,模型计算出每个概念的原型,只使用相关的特征嵌入,如目标类别原型只在形状编码的基础上学习,材料和颜色原型在风格编码的基础上学习。对一个新的目标实例分类,则用D3DP-Nets推断出的形状和风格嵌入与原型字典中的原型计算最近邻来检测。

为了计算嵌入 x 和原型 y 之间的距离,定义以下旋转感知距离度量:

\langle x, y\rangle_{R}=\left\{\begin{array}{ll} \langle x, y\rangle & \text { if } x, y \text { are } 1 \mathrm{D} \\ \max _{r \in \mathcal{R}}\langle\operatorname{Rotate}(x, r), y\rangle & \text { if } x, y \text { are } 4 \mathrm{D} \end{array}\right.

其中, \operatorname{Rotate}(x,r) 通过三线性插值以角度 r 旋转3D特征图 x 中的内容,考虑沿垂直轴 10^{\circ} 的增量对于 \mathcal{R} 进行详尽的搜索。

模型通过平均标记示例的特征来初始化概念原型,如对于红色等,对风格编码通过颜色全连接层的输出求平均,对于对象类别,找到每个形状嵌入的对齐 r ,用于计算 \langle z_0, z_i\rangle ,并对对齐的嵌入求平均。

当为概念提供注释时,可以使用交叉熵损失来共同调整原型和神经网络(以及D3DP-Nets的权值),交叉熵损失的对数是神经嵌入和原型之间的内积,如 P\left(o_{a}=c\right)=\frac{\exp \left(\left\langle f_{a}\left(z^{o}\right), p_{c}\right\rangle_{R}\right)}{\sum_{d \in \mathcal{C}_{a}} \exp \left(\left\langle f_{a}\left(z^{o}\right), p_{d}\right\rangle_{R}\right)} ,其中 \langle ·, ·\rangle_R 表示旋转感知距离度量, f_a 是属性 a 的神经网络, C_a 是属性 a 的概念集合, o_a 是目标 o 的属性 a 的值, p_c 是概念 c 对应的原型,故用于训练原型的损失为:

\mathcal{L}^{\text {prototype }}=-\frac{1}{|\mathcal{O}|} \sum_{o \in \mathcal{O}} \sum_{a \in \mathcal{A}} \sum_{c \in \mathcal{C}_{a}} \mathbb{1}_{o_{a}=c} \log P\left(o_{a}=c\right)+\mathbb{1}_{o_{a} \neq c} \log P\left(o_{a} \neq c\right)

其中, \mathcal{A} 是属性的集合。

部分实验结果

few-shot目标形状和风格类别学习

few-shot视觉回答

视图预测

文本语言的3D场景生成