针对最近在[27]中引入的具有挑战性的通用光度立体任务。与之前的校准和未校准任务不同,通用任务对表面几何形状、材料属性或最紧张的是照明条件没有假设。
该任务的目标是从图像 I k ∈ R H × W × 3 I_k∈R^{H×W×3} Ik∈RH×W×3中规复法线映射 N ∈ R H × W × 3 N∈R^{H×W×3} N∈RH×W×3; k ∈ 1 , . . . , K k∈1, ..., K k∈1,...,K 在 K个未 照明条件下使用正交相机捕获。可选地,可以提供对象掩码 M ∈ R H × W M ∈ R^{H×W} M∈RH×W。
颠末预处理后,我们通过沿空间和光轴的相互作用从图像中提取特征图和可选的对象掩码。遵照[27]中的基本框架,将每个图像和对象掩码毗连起来形成一个张量 O k ∈ R R × R × 4 O_k∈R^{R×R×4} Ok∈RR×R×4,然后将其输入到公共视觉主干[37-39]以提取分层特征映射 B k s ∈ R R S s × R S s × C s {B^s_k}∈R ^{ \frac{R}{S_s}×\frac{R}{ S_s}×C_s} Bks∈RSsR×SsR×Cs; s ∈ 1 、 2 、 3 、 4 s∈1、2、3、4 s∈1、2、3、4。这里, S s ∈ 4 、 8 、 16 、 32 S_s∈4、8、16、32 Ss∈4、8、16、32表示第 s s s个特征映射的比例,Cs是该尺度下的特征的维度。对于每个特征尺度,来自同一像素的不同张量的特征使用naïve Transformer[58]沿光轴相互作用。
最后,利用特征金字塔网络[63]将分层特征映射融合为 F k ∈ R R 4 × R 4 × C F F_k∈R^{\frac{R}{4} × \frac{R}{4} ×C_F} Fk∈R4R×4R×CF,其中 C F C_F CF为输出特征维数。请注意,与 [27] 不同,我们在每个层次结构尺度上使用了不同数量的 Transformer 块(即块的数量从 [1,1,1,1] 变为 [0,1,2,4]),以便更深的特征比浅层特征交互更多。
在UniPS[27]中,图像和掩码在输入到骨干网之前被下采样到规范分辨率。这种分辨率必须是恒定的和足够小(例如256x256),以防止特征提取过程中过多的内存斲丧,特殊是在处理高分辨率输入图像时。此外,使用恒定分辨率确保相同形状的张量被馈送到主干,这有助于克制由于练习和测试之间输入张量形状的巨大差别而导致的显着性能降落。因此,下采样导致输入图像中的大部分信息丢失,导致法线图规复模糊。
为了解决这个问题,我们提出了一种尺度不变的空间光特征编码器,旨在保持骨干网络的一致、小的输入分辨率,同时保留输入图像的信息。具体来说,我们发起将输入张量拆分为具有恒定、小分辨率的非重叠子张量。
更具体地说,我们将 O O O 分解为巨细为 G × G G × G G×G 的 P 2 P^2 P2 个子张量(在我们的实现中 G = 256 , P ≜ R / G G = 256,P ≜ R/G G=256,P≜R/G),方法是从每个 P × P P ×P P×P 像素中获取一个样本并将它们堆叠为子张量,如图 2 所示。 每个子张量都包罗原始张量的整个部分,但略有偏移。所有子张量都通过相同的空间光特征编码器独立处理,然后合并回巨细为 ( R 4 × R 4 × C F \frac{R}{4} × \frac{R}{4} × C_F 4R×4R×CF ) 的张量。子张量的组合特征图保留了所有输入信息,由于没有发生下采样。
然而,不同子张量之间没有交互会导致显着的块伪影,特殊是当 P 很大时。为了缓解这种情况,将从稚子缩小的图像编码的另一个特征图add(concat对效果没影响,但会导致内存斲丧)到合并的特征图中,促进子张量之间的交互。可选地,当 P 大于 4 时,我们将深度高斯滤波(即内核巨细为 P - 1)应用于特征图以进一步加强交互。最后,我们得到了每个光照条件的尺度不变空间光特征图 F k ∈ R R 4 × R 4 × C F \mathcal{F}_k∈R^{\frac{R}{4} × \frac{R}{4} × C_F} Fk∈R4R×4R×CF。
像素采样变压器的非局部交互
给定尺度不变的空间光特征图 F k F_k Fk和图像 I k I_k Ik,在沿光轴的像素级特征聚合后规复表面法线(即光通道从K缩小到1)。
在不同光照条件下的特征聚合是光度立体网络的底子步调,研究人员已经探索了多种策略,如观察图[25, 41]、最大池化[11, 12]、图卷积[66]和自注意力[26, 27]。
我们和UniPS[27]一样,在编码器中使用了带有自注意力[58]的Transformer模型。UniPS遵照其他逐像素方法[25, 26, 30],直接从逐像素聚合的特征向量预测表面法线,而没有考虑非局部交互。然而,聚合后的特征会丢失特定光照信息,自然地获得比聚合前更多与表面属性相关的光照不变表示。
在传统的基于物理的视觉任务中,常见的约束条件包括各向同性[6]、互反对称性[55]、反射率单调性[9]、希罕反射基[16]和表面可积性[47],这些约束大多在整个表面上共享,而不仅限于单个表面点。因此,在基于物理的任务中,考虑多个表面点聚合特征的非局部交互至关紧张。
在聚合特征图上应用像 CNN 这样的图像神经网络需要大量的盘算本钱,用于大输出分辨率(例如,2048 × 2048),以及侵害输出法线图细节的风险。为了解决这些问题,我们从最近关于 3D 点 [61, 70] 的 Transformer 中汲取灵感,并在输入坐标系中的随机位置(例如 m = 2048)的像素样本(例如 m = 2048)的固定数量 (m) 上应用 Transformer。我们将此称为像素采样 Transformer。与基于图像的方法不同,像素采样 Transformer 的内存斲丧每个样本集是恒定的,缩放到恣意图像尺寸。此外,通过将 Transformer 应用于随机采样的位置集,几乎完全消除了可能导致特征图过度平滑的局部交互(例如,在 CNN 中)。
具体来说,从输入坐标体系的掩码区域中随机选取m个像素 x i = 1 , . . . , m x_i=1,...,m xi=1,...,m,我们在这些像素位置插值得到特征 F 1 , . . . , K ( S ( x i ) ) F_1,... ,K(S(x_i)) F1,...,K(S(xi)),其中S是双线性插值算子。然后,与[27]雷同,将插值得到的特征与对应的原始观测值 I 1 , . . . , K ( x i ) I_1,...,K(x_i) I1,...,K(xi)毗连,并通过多头注意力池化(PMA)[33]聚合为 A ( x i ) A(x_i) A(xi)。
对于同一样本集中不同像素位置的聚合特征,我们应用另一个底子Transformer[58]来实验非局部交互。由于此过程的目标是基于物理属性考虑表面级别的交互,像素坐标信息并非必需。因此,与大多数现有的视觉Transformer模型(例如[13,38])不同,我们不对样本应用位置嵌入,使样本能够在没有位置信息的情况下流传其聚合特征。在非局部交互之后,我们使用两层MLP来预测采样位置的表面法线。
最后,将每个聚集的表面法线合并,得到输入图像分辨率下的最终表面法线图。这种像素采样Transformer方法在保持盘算效率和保留输出法线图细节的同时实现了非局部交互,使其实用于高分辨率图像的基于物理的任务。
PS-Mix数据集
在图 8 中,我们使用四个对象与来自 3D 扫描仪获得的法线贴图进行主观比力。**我们使用MeshLab的互信息配准滤波器[3]将扫描后的法线映射与图像对齐,如[53]所示。我们的方法规复了比 3D 扫描仪 (EinScan-SE) 更高的界说表面法线图,并且无论表面材料怎样都表现良好。**光度立体性能随着数码相机分辨率的增加而增加,这表明 3D 扫描仪可能难以跟上。
主干:在我们的尺度不变的空间光编码器中,每个子张量(即子图像和子掩码的串联)独立地输入到 ConvNeXt [40],这是一个现代化的 ResNet [20],就像从最近的 Vision Transformer [13, 38] 中汲取灵感的架构一样。ConvNeXt 的变体在通道数 C 和每个阶段的 ConvNeXt 块 B 的数量上有所不同。我们在这里选择了以下配置:
C o n v N e X t − T : C = ( 96 , 192 , 384 , 768 ) , B = ( 3 , 3 , 9 , 3 ) ConvNeXt-T: C = (96, 192, 384, 768), B = (3, 3, 9, 3) ConvNeXt−T:C=(96,192,384,768),B=(3,3,9,3)
ConvNeXt 块包括 7x7 深度卷积、1x1 卷积与倒置瓶颈设计(4x 隐藏维度)和 1x1 卷积以消除隐藏维度。在卷积之间,放置层归一化[64]和GeLU[21]激活。ConvNeXt的输出是(B x 96 x R/4 x R/4)的特征映射堆栈,(B x 192 x R/8 x R/8), (B x 384 x R/16 x R/16)和(B x 768 x R/32 x R/32),其中B为批巨细,R为主论文中界说的输入子张量巨细。
Transformer(沿光轴交互):给定骨干网的分层特征映射,我们对沿光轴的各个尺度的特征进行像素级应用Transformer[58],如[27]所示。我们选择隐藏层 C 中的通道数,Transformer 块 B 的数量如下。
T r a n s f o r m e r : C = ( 96 , 192 , 384 , 768 ) , B = ( 0 , 1 , 2 , 4 ) Transformer: C = (96, 192, 384, 768), B = (0, 1, 2, 4) Transformer:C=(96,192,384,768),B=(0,1,2,4)
Transformer 块将输入特征投影到与输入维度相同的查询、键和值向量。然后将它们通报给多头自注意力(头部数量为 8),具有 soft-max 和前馈网络,具有两个线性层,其输入和输出层的维度相同,但内层之一是输入的两倍。两个子层中的每一个周围的残差毗连,然后是层归一化 [64] 和 dropout (p = 0.1)。
特征金字塔网络:在使用 Transformer 逐像素交互的分层特征图之后,每个输入图像对应的不同尺度的特征图与最初为语义分割任务提出的特征金字塔网络(即 UPerNet [63])融合。我们只是在 MMSegmentation [4] 上使用实现,无需任何修改。输出特征巨细为 (B x R/4 x R/4 x 256)。