SLINVIT 算法在光度立体法三维重建任务中的光照规划实现流程
-
初始化
- 初始化策略网络 ,并设定它的参数 。
- 初始化LLM策略 ,用于提供光源位置的先验建议。
- 初始化经验回放缓冲区 ,用于存储每次训练过程中采集的经验。
-
动作生成
- 对于每个时间步 ,生成下一个光源位置 :
- LLM根据当前状态 (即当前图像表示的物体和光照下的效果)生成动作建议 ,即光源位置的建议。
- 选择策略网络 给出的概率最大的光源位置 :
- 对于每个时间步 ,生成下一个光源位置 :
-
奖励设计
- 将最后一个状态的角误差转换为相邻状态之间的角误差变化(增量角误差):
其中 是奖励塑造项的权重, 表示在时间步 的角误差。
- 将最后一个状态的角误差转换为相邻状态之间的角误差变化(增量角误差):
-
策略优化
-
通过最大化目标函数 ,来优化策略网络,使得在该策略下的累积奖励最大。目标函数包含PPO的截断项和KL散度正则化项:
其中:- 为当前策略与旧策略之间的概率比值。
- 是优势函数,表示当前动作相对于平均行为的优劣,通常使用广义优势估计(GAE)来计算。
- 是一个超参数,控制策略更新的幅度。
- 是正则化系数,控制KL散度的影响,确保策略不会偏离LLM策略过远。
- 是策略网络 与LLM策略 之间的KL散度,防止策略更新过度偏离LLM的建议。
-
策略梯度更新:
- 是PPO目标函数相对于策略网络参数 的梯度,反映了当前策略和旧策略之间的优势。
- 是策略网络和LLM策略之间的KL散度相对于 的梯度,用来防止策略的过度变化。
通过小批量(mini-batch)和多次迭代更新,优化策略网络的参数 ,从而提高光照规划任务中的三维重建效果。
-
-
环境交互
- 执行动作 ,并根据光源位置变化计算新的图像和法线。观察下一状态 和奖励 :
- 将经验 存储到经验回放缓冲区 中。
- 执行动作 ,并根据光源位置变化计算新的图像和法线。观察下一状态 和奖励 :
-
策略网络更新
- 使用从环境交互中收集的经验更新策略网络参数 和值函数网络参数 ,通过多次迭代优化策略网络,提高光源位置的选择能力,最终优化三维重建的效果。