Hierarchical Russian Roulette for Vertex Connections论文研读

本文介绍了为了解决双向路径跟踪算法在处理反射计算时的效率和质量问题,提出的一种分层俄罗斯轮盘赌技术。该技术通过在眼睛子路径顶点处使用近似散射波瓣,对光顶点进行高效剔除,从而减少采样点,提升渲染质量。算法中涉及到随机散射范围的确定、分层拒绝策略以及实时生成最小随机数的方法,确保了算法的高效性和精度。此外,还探讨了算法在各向异性反射波瓣中的应用以及在双向路径跟踪中的集成,展示了未来可能的改进方向和限制问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二篇论文研读文章了,虽然依旧很菜,但这一篇开始就相对轻松一点了。文档种有些问题,其中所有“实时”应该替换为“高效”。

Hierarchical Russian Roulette for Vertex Connections

主要目标

为了解决双向路径跟踪算法在specular-diffuse-glossy或glossy-diffuse-glossy情况下反射计算低效且质量差的问题,提出了一个分层的俄罗斯轮盘赌技术来进行顶点连接。该技术利用在眼睛子路径(或相机子路径)顶点处的近似散射波瓣来与VPL进行连接,不在波瓣中的VPL便可以直接剔除。由于使用了俄罗斯轮盘赌技术,便可以不需要使用太多的采样点就可提升绘制的质量。

算法细节

符号表格

Symbol Domain Description
y y y R 3 R^3 R3 光子路径中的顶点
z z z R 3 R^3 R3 眼睛子路径中的顶点
P ( y , z ) P(y,z) P(y,z) [ 0 , 1 ] [0,1] [0,1] 俄罗斯轮盘的概率
n n n S 2 S^2 S2 表面法线
ω \omega ω S 2 S^2 S2 散射波瓣上的一个方向
ω ′ \omega^{\prime} ω S 2 S^2 S2 入射方向
ρ ( z , ω ′ , ω ) \rho(z,\omega^{\prime},\omega) ρ(z,ω,ω) [ 0 , ∞ ] [0, \infin] [0,] z z z处的BRDF
q z ( ω ) q_z(\omega) qz(ω) [ 0 , ∞ ] [0, \infin] [0,] z z z处的近似散射波瓣
ξ i \xi_i ξi [ 0 , 1 ) [0,1) [0,1) i i i个均匀随机数
R ( ω ; z , ξ i ) R(\omega;z,\xi_i) R(ω;z,ξi) [ 0 , ∞ ] [0, \infin] [0,] z z z处的随机散射范围
D ( ⋅ ) D(\cdot) D() [ 0 , ∞ ] [0, \infin] [0,] GGX分布
K ( ⋅ ) K(\cdot) K() [ 0 , 1 ] [0, 1] [0,1] 平方椭球波瓣(SEL)函数
α x , α y \alpha_x,\alpha_y αx,αy [ 0 , 1 ] [0, 1] [0,1] GGX的粗糙度
α ˙ x , α ˙ y \dot\alpha_x, \dot\alpha_y α˙x,α˙y [ 0 , 1 ] [0, 1] [0,1] SEL的粗糙度
M M M N N N 光子路径的数量

分层的俄罗斯轮盘赌

在这个方法中,对于所有缓存的光顶点,都会执行一次俄罗斯轮盘赌,并且会将眼睛顶点处的BRDF考虑在内。俄罗斯轮盘赌通过基于范围的剔除来加速,因此就可以从大量的光顶点中高效地采样出一些光顶点。现有的光剔除方法都使用光顶点的范围,而我们使用眼睛顶点的范围来对眼睛子路径跟踪中的每个顶点进行光顶点剔除。本节介绍一种高效的分层的俄罗斯轮盘赌算法。

随机散射范围

对于光顶点 y y y和眼睛顶点 z z z的连接,我们使用下面的俄罗斯轮盘赌的接受概率: P ( y , z ) = min ⁡ ( C q z ( z y → ) ∥ y − z ∥ 2 , 1 ) P(\mathrm{y}, \mathrm{z})=\min \left(\frac{C q_{\mathrm{z}}(\overrightarrow{\mathrm{zy}})}{\|\mathrm{y}-\mathrm{z}\|^{2}}, 1\right) P(y,z)=min(yz2Cqz(zy ),1)其中, C ∈ [ 0 , ∞ ) C \in [0, \infin) C[0,)是一个用户指定的参数,可用来控制方差和性能之间的权衡。球函数 q z ( ⋅ ) q_z(\cdot) qz()约等于散射波瓣: q z ( ω ) ≈ ρ ( z , ω ′ , ω ) ∣ ω ⋅ n ∣ q_{\mathrm{z}}(\omega) \approx \rho\left(\mathrm{z}, \omega^{\prime}, \omega\right)|\omega \cdot \mathrm{n}| qz(ω)ρ(z,ω,ω)ωn
公式中出现的符号可以在表格中查询。为了对所有缓存了的光顶点进行俄罗斯轮盘的加速操作,就需要通过眼睛顶点在世界空间中的接受范围来剔除那些不重要(被拒绝)的光顶点。使 ξ i \xi_i ξi表示第 i i i个均匀随机数,那么眼睛顶点 z z z处在世界空间中的范围的界限就是一个椭球函数,并且给定距离 ∥ y − z ∥ \|y-z\| yz满足 P ( y , z ) = ξ i P(y,z)=\xi_i P(y,z)=ξi,其定义如下: R ( ω ; z , ξ i ) = C q z ( ω ) ξ i R\left(\omega ; \mathbf{z}, \xi_{i}\right)=\sqrt{\frac{C q_{\mathbf{z}}(\omega)}{\xi_{i}}} R(ω;z,ξi)=ξiCqz(ω) 因此,只有在 R ( ω ; z , ξ i ) R(\omega;z,\xi_i) R(ω;z,ξi)范围内的光顶点才会进行顶点连接的操作。

分层拒绝
使用BVH剔除

为了快速地在散射范围 R ( ω ; z , ξ i ) R(\omega;z,\xi_i) R(ω;z,ξi)中寻找光顶点,我们构建了一个光顶点的二分层级包围体(BVH)。使用这个BVH,散射范围和光顶点的包围盒之间的相交测试就可以使用一种自上而下的分层方式进行。然而,尽管散射范围的形状只依赖于近似波瓣 q z ( ω ) q_z(\omega) qz(ω),但范围的大小却依赖于随机变量 C / ξ i \sqrt{C/\xi_i} C/ξi 并且对于不同的光顶点(即叶子节点)来说都是不同的。因此,为了适当地对每一个BVH节点执行相交测试,对于内部节点都使用最大的大小,如图3所示。
在这里插入图片描述
这个大小为 C / m i n i ∈ L ξ i \sqrt{C/min_{i \in L}\xi_i} C/miniLξi ,其中 L L L表示该节点包含的叶子节点的索引集。每一个节点都需要能够高效地获得这个最小的随机数 m i n i ∈ L ξ i min_{i \in L}\xi_i miniLξi

预生成随机数的问题

一种低效的获取每一个节点中最小的随机数的方法就是以自下而上的方式进行预计算。首先,在预处理步骤中将单个随机数分配给每个光顶点,其方法类似于随机光剔除方法。然后,在构建BVH的阶段,将最小随机数从叶子节点传播到更上层的节点。然而,因为对于所有的眼睛顶点都是使用相同的预计算的随机数,这种方法就会在眼睛顶点间产生相关性方差。如果眼睛顶点被密集采样(例如超采样)的话,这种相关性方差会影响计算效率,并且在后处理去噪过程中(例如图片去噪)也会极大地降低效率。为了避免相关性方差,就必须为每一对光顶点和眼睛顶点赋予不同的随机数。但是,在每一个眼睛顶点处都进行一次完全自下而上传播的代价明显是非常昂贵的。所以我们提出了一个实时生成最小随机数的方法,该方法是自上而下的方式并且不会对所有光顶点生成随机数,自然也就不需要自下而上地传播随机数了。

实时生成最小的随机数

我们首先讨论一种时间复杂度为O(1)的方法来在均匀随机数之间生成最小值。然后,我们扩展这个方法为一种自上而下的分层算法,并以此来在每一个BVH节点中生成最小的随机数。为了提升这个算法的数值稳定性,我们采用一种半分层的采样方法,并使用重叠层来生成均匀且部分分层的随机数。

最小随机数的PDF

N N N个随机数 { ξ 1 , . . . , ξ N } \{\xi_1,...,\xi_N\} { ξ1,...,ξN}中的最小值可以通过考虑其PDF来生成[问题2]。这个PDF可以通过分析的方法来获得,如下: p min

### Hierarchical Consistency Learning in Unsupervised Domain Adaptation for Object Detection 无监督域适应(Unsupervised Domain Adaptation, UDA)是一种重要的机器学习技术,旨在解决当训练数据和测试数据来自不同分布时模型性能下降的问题。在目标检测领域,UDA 的研究主要集中在如何减少源域和目标域之间的差异,从而提高模型在未标注的目标域上的泛化能力。 #### 方法概述 Hierarchical Consistency Learning 是一种针对无监督域适应设计的方法,其核心思想在于通过多层次的一致性约束来增强特征表示的学习效果[^1]。具体来说,该方法利用了以下两个层次的一致性: 1. **像素级一致性**:通过对输入图像应用不同的变换(如旋转、缩放等),并强制要求这些变换后的预测结果保持一致,以此提升局部特征的鲁棒性和不变性。 2. **实例级一致性**:对于同一对象的不同视图或上下文变化,算法会施加额外的约束条件以确保它们对应相同的类别标签。这种机制有助于捕获更高级别的语义信息,并进一步缩小跨域差距[^3]。 此外,在实际实现过程中,通常还会引入对抗训练策略或者熵最小化原则作为辅助手段,共同促进全局最优解的收敛过程[^2]。 #### 技术细节 以下是 hierarchical consistency learning 中涉及的一些关键技术点及其作用说明: - **结构正则化的深度聚类 (Structurally Regularized Deep Clustering)** 此部分负责构建紧凑且分离良好的簇空间,使得相似样本能够聚集在一起而相异样本彼此远离。这一步骤可以看作是从低维嵌入向量中提取潜在模式的过程之一。 - **自监督预训练 (Self-Supervised Pretraining)** 使用大量未标记的数据预先训练网络参数,以便更好地初始化后续微调阶段所需的权重矩阵。这种方法不仅减少了对手动标注的需求,同时也提高了最终系统的稳定性与效率。 - **多视角推理 (Multi-view Inference)** 基于多个随机采样的子区域生成独立但互补的信息片段集合;随后将其组合起来形成完整的物体描述符。此操作有效缓解了因遮挡等因素引起的误判风险。 下面给出一段简单的伪代码展示上述流程的核心逻辑: ```python def hierarchical_consistency_learning(source_data, target_data): # Step 1: Initialize model with self-supervision pretrained_model = pretrain_on_unlabeled(target_data) # Step 2: Perform clustering and alignment clustered_features = structurally_regularize(pretrained_model.extract_features(target_data)) # Step 3: Enforce pixel-level & instance-level consistencies for epoch in range(num_epochs): for batch in zip(source_data, target_data): loss_pixel = compute_pixel_level_loss(batch) loss_instance = compute_instance_level_loss(clustered_features, batch) total_loss = loss_pixel + lambda * loss_instance optimizer.zero_grad() total_loss.backward() optimizer.step() return pretrained_model.finetune_with_alignment(total_loss) ``` #### 实验验证 为了评估所提方案的有效性,研究人员选取了几组公开可用的大规模视觉基准集进行了对比实验。结果显示,在多种复杂场景下(例如白天到夜晚转换、晴天转雨天等情况),采用 hierarchical consistency learning 后取得显著优于传统迁移学习基线的结果。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值