You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mitsuba 3.6.4中可微分环境图反向传播失败问题求助

Mitsuba 3.6.4中可微分环境图反向传播失败问题求助

我最近在Mitsuba 3里尝试做环境图参数(emitter.data)的优化,参考官方的焦散优化思路,再加上Mitsuba 2里确实有过完全相同的实现,本来以为这事不难搞定。

我已经确认手动修改环境图的bitmap(也就是emitter.data)时,渲染出的画面会跟着正确变化,但一到反向传播环节就报错,说损失函数根本不依赖这个参数,实在搞不懂哪里出问题了。


最小复现示例

下面是一段能复现问题的简短脚本,逻辑很简单:生成一张小尺寸的均匀环境图,加载一个基础场景,先做一次渲染,然后用渲染结果和自身计算一个 dummy 损失(纯粹就是为了测试梯度能不能正常流动)。

import mitsuba as mi
import drjit as dr
import numpy as np

mi.set_variant('llvm_ad_rgb')  # 我也试过'cuda_ad_rgb',结果完全一样

# 创建一张均匀环境图
env_width, env_height = 256, 128
env_data = mi.Bitmap(np.full((env_height, env_width, 3), 0.5, dtype=np.float32))

# 定义使用上述环境图的极简场景
scene_dict = {
    "type": "scene",
    "emitter": {
        "type": "envmap",
        "bitmap": env_data,    # 出问题的参数
        "scale": 1.0
    },
    "integrator": {
        "type": "path",
        "max_depth": 4
    },
    "sensor": {
        "type": "perspective",
        "fov": 45,
        "to_world": mi.ScalarTransform4f().look_at(
            origin=[0, 0, 5],
            target=[0, 0, 0],
            up=[0, 1, 0]
        ),
        "film": {
            "type": "hdrfilm",
            "width": 256,
            "height": 256
        },
        "sampler": {
            "type": "independent",
            "sample_count": 16
        }
    },
}

scene = mi.load_dict(scene_dict)

# 获取并启用环境图数据的梯度追踪
params = mi.traverse(scene)
params.keep(['emitter.data'])
dr.enable_grad(params['emitter.data'])

# 前向渲染
image = mi.render(scene, spp=16)

# 创建和渲染图尺寸相同的dummy参考图
dummy_reference = mi.Bitmap(np.full((256, 256, 3), 0.5, dtype=np.float32))

# 计算用于测试反向传播的dummy损失
loss = dr.mean(dr.square(image - dummy_reference))

# 尝试反向传播——理论上应该能正确追踪到输入变量的梯度
dr.backward(loss)

错误信息

RuntimeError: drjit.backward_from(): the argument does not depend on the input variable(s) being differentiated...

我的观察

  • 前向渲染绝对是依赖emitter.data的:比如我在渲染前把它乘以0.1,整个场景就会明显变暗。
  • 但反向传播时,系统却坚称最终损失和emitter.data没有任何依赖关系。

想请教的问题

  • 有没有人在Mitsuba 3里做环境图微分的时候遇到过同样的问题?
  • 是我哪里操作漏了,还是这本身就是个bug?

多谢各位!


备注:内容来源于stack exchange,提问作者Anson Savage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:13:13