修图软件里,改颜色早就是一键的事,改光却始终像个碰运气的活:你只能用文字向生成模型描述「左上方来点暖光」,然后祈祷它理解对。天津大学与快手 KlingAI 的这篇 Dior 做了一个换轨——把改光变成画画。你在照片上涂几笔,这一笔的亮度数值就是那里该有多亮,笔的颜色就是光的颜色,画完整个画面的光场随之重排。
涂鸦早就有,为什么一直不好使
用扩散模型重打光(relighting,即在不动拍摄对象和几何的前提下改光源)这几年已经能以假乱真,但控制始终卡在两头:文字条件太粗,模型自由发挥;于是有了涂鸦这条路线,比如只针对人像的 LightPainter、面向室内的 ScribbleLight。可它们的涂鸦本质上只是「这里亮、那里暗」的位置提示——画粗画细一个样,想指定光色更没门。根子在于缺少一个确定映射:涂鸦的数值到底代表什么物理量?没定义清楚,强度和色度就还是模型在猜。
关键转折:先定义「画笔上的数」是什么
Dior 的答案是造一个中间表示,叫 Lumi Map:想象把场景里所有东西——皮肤、木头、布料——全换成同一面哑光白墙,只保留光源直接照上来的那部分,拍下来就是这张图。它与原照片逐像素对齐:数值是那里直接光照的相对强度,颜色是光色,而阴影落在哪、光被什么挡住,这些几何信息原样保留。作者对比过现成候选:图像分解里的明暗层掺着材质自己的颜色;环境光贴图会混进彩色墙面之间的互反射;经典 Phong 光照模型只算光和表面朝向的夹角,不管遮挡和距离衰减。都不行。

有了定义,训练就顺理成章:先在 Blender 里渲染四千多个场景、十一万余张图,每张都带像素对齐的 Lumi Map 真值;训练时把这张稠密图随机抽稀成几笔涂鸦,逼同一个模型学会「从几笔推断整个光场」,底座是通用图像编辑大模型加少量微调参数。真实的照片没有 Lumi Map 真值,作者用了第二阶段:模型同时学「照图打光」和「看图估图」两个方向,先从真实重打光图像对的目标图里估出 Lumi Map,再照着它把源图重打光、与真图对账——合成与真实两个世界就此接上。
成没成
在三个有真值的基准(从单光源物体到复杂合成场景)上,它对比 IC-Light、ScribbleLight 和 Nano Banana、Qwen-Edit 这类多模态编辑模型全线领先;在真实照片上,用户可以逐步加笔、独立调强度和色度,连水下这种难啃的场景也能正确响应涂鸦。这是第一篇把「画多亮」从模型的主观题变成有刻度的填空题的重打光工作。
会落到哪
最近的落点是修图产品里的「补光笔刷」:人像侧脸画一道暖光、强度色度随手调,从赌运气变成作画。电商产品图可以不重拍就换成晨光或橱窗光;影视和短视频可以在开拍前于参考帧上画光位、让模型补全整个光场——KlingAI 的参与让这条路意图相当明显。再往前一步,Lumi Map 有潜力充当影像管线里的「光照层」中间格式:重打光、阴影合成、多光源规划共用同一张图。
局限与存疑
Lumi Map 只保留直接光,红墙给白衬衫镀红边这类材质互反射被刻意踢了出去,这部分全靠生成先验脑补,互反射复杂的场景可能露馅。数值是相对量而非标定的物理辐射值,「精确复现某盏灯的照度」还做不到。三个基准都是受控光源场景,野外泛化只有六十四张图的定性展示。截至 arXiv v1,论文页面提到 GitHub 与 Hugging Face demo 但正文未附链接,工程可用性有待验证。
