ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

IC-Light 图像重光照实战指南:基于 Imposing Consistent Light 的文本/背景条件重光照模型解析与部署

IC-Light 图像重光照实战指南:基于 Imposing Consistent Light 的文本/背景条件重光照模型解析与部署 人工智能计算机视觉媒体生成图像处理【免费下载链接】IC-LightMore relighting!项目地址https://gitcode.com/GitHub_Trending/ic/IC-Light点击查看免费下载IC-LightImposing Consistent Light强制一致光照是专用于图像光照操控relighting的开源项目同时提供文本条件重光照模型与背景条件重光照模型两条推理管线。本文将带你从零搭建运行环境、启动 Gradio 交互界面、逐项吃透界面参数与提示词技巧并深入源码剖析其 UNet 改造、权重合并、抠图预处理与重光照一致性导出法线贴图的底层原理让你不仅能快速上手出图还能理解这套 latent diffusion 重光照方案为何能保持高度一致的光照结果。项目速览IC-Light 是什么IC-Light 是一个对图像光照进行操控manipulate the illumination of images的项目其名字是Imposing Consistent Light的缩写。当前发布了两类重光照模型详见 README.md文本条件重光照模型text-conditioned relighting model以前景图 文本提示词为输入用户还可以通过光源偏好Lighting Preference控制光照方向背景条件重光照模型background-conditioned model以前景图 背景图为输入同时结合文本提示词将人物融入目标背景的光照环境中。两类模型都以**前景图像foreground images**作为输入。前者适合无背景纯重打光 换背景的自由创作后者适合给定目标背景、让人物与背景光线自然融合的场景如人像合成、背景替换、电商产品打光等。环境搭建与快速开始仓库根目录下包含两个 Gradio 演示入口gradio_demo.py文本条件模型与 gradio_demo_bg.py背景条件模型。按照 README 给出的步骤即可一键启动git clone https://gitcode.com/GitHub_Trending/ic/IC-Light.git cd IC-Light conda create -n iclight python3.10 conda activate iclight pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 pip install -r requirements.txt python gradio_demo.py如需启动背景条件演示python gradio_demo_bg.py几点关键说明模型自动下载README 明确Model downloading is automatic。以文本条件模型为例gradio_demo.py 会先检查./models/iclight_sd15_fc.safetensors是否存在若不存在则通过torch.hub.download_url_to_file自动下载到该路径仓库 models 目录下仅有一个model_download_here占位文件真正运行时会自动补全。依赖版本requirements.txt 固定了diffusers0.27.2、transformers4.36.2、gradio3.41.2、pillow10.2.0、protobuf3.20等版本同时依赖safetensors、opencv-python、einops、peft建议按此锁定版本以保证管线兼容。基础底模两个 demo 都以 Stable Diffusion 1.5 系列模型作为底座代码中默认使用stablediffusionapi/realistic-vision-v51注释里也给出了runwayml/stable-diffusion-v1-5作为备选加载其 tokenizer、text_encoder、vae、unet 后再叠加 IC-Light 重光照权重。硬件要求代码使用torch.device(cuda)并将 text_encoder/unet 置于float16、vae 置于bfloat16需要 NVIDIA GPU 环境运行。文本条件重光照模型界面与操作流程启动 gradio_demo.py 后界面gr.Blocks构建标题为 IC-Light (Relighting with Foreground Condition)左侧依次包含Image上传前景图人像/主体Prompt填写描述目标光照/氛围的提示词Lighting Preference (Initial Latent)光源方向偏好可选项为 None / Left Light / Right Light / Top Light / Bottom LightSubject Quick List 与 Lighting Quick List内置的人物主体与光照风格快捷提示词Relight 按钮触发重光照参数区图像尺寸、采样数量、随机种子等Advanced options步数、CFG、高低清重绘等高级参数。点击 Relight 后右侧Preprocessed Foreground显示抠图预处理结果Outputs图库展示生成结果。参数详解以下是 gradio_demo.py 中定义的界面参数及其默认值、取值范围参数作用默认值取值范围Imagesnum_samples一次生成的样本数量1112步长 1Seed随机种子控制可复现性12345整数Image Width输出宽度5122561024步长 64Image Height输出高度6402561024步长 64Steps采样步数251100CFG Scale提示词引导强度classifier-free guidance2.01.032.0步长 0.01Lowres Denoise第一轮低分辨率重绘的降噪强度0.90.11.0Highres Scale高清放大倍率1.51.03.0Highres Denoise第二轮高清重绘的降噪强度0.50.11.0Added Prompt追加的正面提示词best quality文本Negative Prompt负面提示词lowres, bad anatomy, bad hands, cropped, worst quality文本注意文本条件模型默认CFG Scale2、Steps25而背景条件模型默认CFG Scale7.0、Steps20见 gradio_demo_bg.py两者取值风格不同切换模型时建议按默认参数起手。光源偏好本质是初始潜变量README 特别强调了一个易混淆点Lighting Preference 只是初始潜变量initial latents——例如选择 Left 时初始潜变量就是一个左白右黑的渐变图。这一点在源码中体现得十分直观gradio_demo.py 的process()会根据BGSource枚举值生成方向性渐变图像作为初始隐空间条件LEFTnp.linspace(255, 0, image_width)水平方向从左白255到右黑0RIGHTnp.linspace(0, 255, image_width)从右白到左黑TOP垂直方向自上而下linspace(255, 0)BOTTOM垂直方向自下而上linspace(0, 255)。因此它并不直接约束模型必须这样打光而是通过初始化 latents 引导生成偏向某一方向的光影最终效果仍受提示词与模型理解共同决定。提示词技巧与内置快捷词文本条件模型对提示词比较敏感。README 中展示的示例提示词均采用主体 细节 光照氛围的组合例如beautiful woman, detailed face, warm atmosphere, at home, bedroombeautiful woman, detailed face, sunshine from windowbeautiful woman, detailed face, neon, Wong Kar-wai, warmbeautiful woman, detailed face, sunshine, outdoor, warm atmospherehandsome boy, detailed face, neon light, cityBuddha, detailed face, sci-fi RGB glowing, cyberpunktoy, detailed face, shadow from window/sunset over seadog, magic lit, sci-fi RGB glowing, studio lightinggradio_demo.py 内置了 14 条光照风格快捷词sunshine from window、neon light, city、sunset over sea、golden time、sci-fi RGB glowing, cyberpunk、natural lighting、warm atmosphere, at home, bedroom、magic lit、evil, gothic, Yharnam、light and shadow、shadow from window、soft studio lighting、home atmosphere, cozy bedroom illumination、neon, Wong Kar-wai, warm主体快捷词为beautiful woman, detailed face与handsome man, detailed face。点击快捷词会自动拼接进 Prompt 文本框便于快速实验。下面是一组文本条件模型的输入 → 输出示例对应 db_examples.py 中的示例配置上图是输入前景人物素材下图为同一人物在提示词beautiful woman, detailed face, sunshine, outdoor, warm atmosphere、光源偏好Right Light、512×960、seed 12345 条件下得到的输出背景条件重光照模型背景条件模型gradio_demo_bg.py无需精细的提示词工程README 指出只需使用类似 handsome man, cinematic lighting 的简单提示词即可。界面需要同时上传Foreground与Background两张图并通过Background Source选择背景来源选项含义源码实现Use Background Image使用上传的背景图原样使用gradio_demo_bg.pyUse Flipped Background Image水平翻转背景图np.fliplr(input_bg)Left Light左亮右暗的渐变背景np.linspace(224, 32, image_width)Right Light右亮左暗的渐变背景np.linspace(32, 224, image_width)Top Light上亮下暗的渐变背景垂直方向linspace(224, 32)Bottom Light下亮上暗的渐变背景垂直方向linspace(32, 224)Ambient均匀环境光背景全灰 64 像素图np.zeros(...) 64与文本条件模型不同这里的渐变范围是 224→32 而非 255→0且支持上传真实背景图。界面还提供了 15 张内置背景素材见 db_examples.py 的bg_samples位于 imgs/bgs 目录点击图库即可快速选用。背景条件模型内部将前景与背景分别 VAE 编码后拼接为 8 通道条件见 gradio_demo_bg.py因此它的 UNet 输入通道扩展为 12 通道4 通道噪声潜变量 8 通道前景/背景条件这与文本条件模型 8 通道4 4的改造不同。下图为背景条件模型的输出示例前景人物imgs/alter/i3.png暗黑皮衣妆造人像结合舞台灯光背景imgs/bgs/7.webp紫青色射灯与烟雾场景在提示词beautiful woman, cinematic lighting下合成出与舞台灯光一致的重光照结果imgs/alter/o1.png法线贴图计算按钮Compute Normal4x Slower背景条件演示界面中还有一个Compute Normal (4x Slower)按钮gradio_demo_bg.py点击后会依次用 Left / Right / Bottom / Top 四种光源对同一前景各重光照一次故耗时约 4 倍再通过 process_normal 合成法线贴图将四张重光照结果归一化到 [-1, 1]x * 2.0 - 1.0求环境光均值ambient (left right bottom top) / 4.0用安全除法safa_divide得到各方向的相对光照差进而计算u (right - left) * 0.5、v (top - bottom) * 0.5由h (1 - u² - v²)^(0.5 * σ)σ10重建法线 Z 分量归一化后结合抠图 alpha 输出法线图。注意模型本身从未用任何法线贴图数据训练过这套法线估计完全来自重光照结果的一致性。这正是Imposing Consistent Light价值的直接体现。核心原理Imposing Consistent LightREADME 用一整节阐述了模型名背后的物理直觉与训练约束这也是理解 IC-Light 的关键HDR 空间中的线性叠加性在 HDR 空间里光照illumination具有所有光传输彼此独立all light transports are independent的性质外观混合 ≡ 光源混合因此不同光源外观的混合结果等价于混合光源下的外观。README 以经典 light stage多灯环拍摄装置为例在理想 HDR 条件下appearance mixture外观混合与light source mixture光源混合两路结果在数学上等价、相互一致隐空间 MLP 一致性约束训练重光照模型时IC-Light 在隐空间latent space使用 MLP强制施加了上述一致性约束一致性带来的意外收益正因为模型是 latent diffusion、却能产生高度一致的重光照不同方向的重光照结果甚至可以被合并成法线贴图——即上述 Compute Normal 功能。README 展示的对比序列为输入 → 模型重光照输出 → 分离阴影图 → 合并法线贴图并与 GeoWizard、SwitchLight 等专用深度/法线/重光照工作的输出进行了可视化对照。简单概括用物理一致性的先验约束 latent diffusion 的重光照方向性从而让同一主体在不同方向光照下保持空间结构一致进而可像传统多光源光度立体法那样反演出法线。这是本项目区别于一般换背景 重打光扩散方案的核心创新点。源码级实现剖析模型加载与权重合并IC-Light 发布的是delta 权重offset weights而非完整模型。加载流程gradio_demo.pymodel_path ./models/iclight_sd15_fc.safetensors if not os.path.exists(model_path): download_url_to_file(url..., dstmodel_path) sd_offset sf.load_file(model_path) sd_origin unet.state_dict() sd_merged {k: sd_origin[k] sd_offset[k] for k in sd_origin.keys()} unet.load_state_dict(sd_merged, strictTrue)即先加载基础 SD1.5 的 UNet 权重再将其与下载的.safetensors偏移量逐键相加得到最终重光照 UNet。背景条件模型gradio_demo_bg.py流程一致只是权重文件为iclight_sd15_fbc.safetensors。UNet 输入通道扩展与 hooked forwardSD1.5 的 UNet 首层卷积conv_in原本只有 4 个输入通道噪声潜变量。IC-Light 的做法是gradio_demo.py用nn.Conv2d(8, ...)重建首层前 4 通道拷贝原有权重、后 4 通道清零保存原始unet.forward再以hooked_unet_forward替换从cross_attention_kwargs中取出前景条件concat_conds沿 batch 维复制对齐后与采样噪声torch.cat([sample, c_concat], dim1)拼接成 8 通道送入原 UNet。这一设计意味着前景图不通过 cross-attention 注入而是作为额外输入通道与噪声潜变量一起进入 UNet属于典型的 ControlNet 式条件注入思路。背景条件模型则改为 12 通道4 噪声 8 前景/背景条件对应代码在 gradio_demo_bg.py。采样器与 Pipeline两个 demo 均预置了三种采样器gradio_demo.pyDDIMSchedulerscaled_linearclip_sampleFalsesteps_offset1EulerAncestralDiscreteSchedulerDPMSolverMultistepScheduleralgorithm_typesde-dpmsolveruse_karras_sigmasTrue。实际推理时使用的 t2i/i2i pipeline 都挂载了DPM-Solver SDE Karras采样器gradio_demo.py并显式关闭 safety_checker。推理主循环通过cross_attention_kwargs{concat_conds: concat_conds}把前景条件传进 hooked forward并以output_typelatent输出潜变量再由 VAE 解码出像素图。前景抠图预处理BriaRMBG推理前会先对输入前景做自动抠图。process_relight调用run_rmbggradio_demo.py内部使用 briarmbg.py 实现的BRIA RMBG 1.4diffusers 版抠图网络一个基于 U²-Net 风格 RSU 模块的编码器-解码器多级 side output 输出 sigmoid alpha 图。流程为按k (256 / (H*W))**0.5缩放输入保持纵横比缩放至 64 倍数尺寸送入 RMBG 得到 alpha 图双线性插值回原分辨率执行result 127 (img - 127 sigma) * alpha的透明背景复合默认sigma0而在法线计算路径中process_normal会以sigma16抠图gradio_demo_bg.py将前景微调亮些以配合多方向重光照。预处理后的前景会与原图一起作为条件因此实际参与重光照的是抠图后的主体背景由模型根据提示词/初始潜变量重新生成。高分辨率二阶段重绘两个 demo 都内置了低分辨率生成 高清放大重绘的两阶段流程gradio_demo.py先按设定的宽高完成首轮生成文本条件模型在此阶段用初始潜变量渐变图驱动 i2i强度为lowres_denoise将结果放大到highres_scale倍数并对齐到 64 倍数重新 VAE 编码、重新抠图缩放前景条件再以highres_denoise强度做第二轮 i2i 高清重绘。这也是界面中Lowres Denoise、Highres Scale、Highres Denoise三个参数的实际作用路径。模型说明与选型README 的 Model Notes 明确了三个可用的权重文件及其定位权重文件条件输入说明iclight_sd15_fc.safetensors文本 前景默认重光照模型可通过初始潜变量影响重光照方向gradio_demo.py 使用iclight_sd15_fcon.safetensors文本 前景与 fc 相同但用 offset noise 训练README 说明在用户研究中 fc 略胜一筹这也是默认模型采用无 offset noise 版本的原因iclight_sd15_fbc.safetensors文本 前景 背景背景条件模型gradio_demo_bg.py 使用商用许可注意项目内置的 BRIA RMBG 1.4 抠图模型briarmbg.py仅限非商业用途。README 明确建议若在商业项目中使用 IC-Light请将背景抠除器替换为 BiRefNet 等其他背景移除模型。引用与相关文献若在学术工作中使用本项目README 给出了建议的引用条目Misc{iclight, author {Lvmin Zhang and Anyi Rao and Maneesh Agrawala}, title {IC-Light GitHub Page}, year {2024}, }同时 README 列出以下相关工作供延伸阅读Total Relighting面向背景替换的人像重光照、Relightful Harmonization光照感知的人像背景替换、SwitchLight物理驱动的重光照架构以及 GeoWizardREADME 中作为法线估计的参考对照工作。许可说明仓库以 Apache License 2.0 授权见 LICENSE允许自由使用、修改与再分发但请务必留意上述BRIA RMBG 1.4 非商业限制对整体项目商用落地的影响并按需替换抠图组件。赞分享人工智能计算机视觉媒体生成图像处理【免费下载链接】IC-LightMore relighting!项目地址https://gitcode.com/GitHub_Trending/ic/IC-Light点击查看免费下载相关推荐IC-Light终极指南如何实现完美图像光影重照明IC Light终极指南如何实现完美图像光影重照明 IC Light是一款强大的图像光影重照明工具能够帮助用户轻松调整图像的光照效果实现专业级别的光影重塑人工智能计算机视觉媒体生成图像处理构建专业级Web3D场景动画高效相机路径控制方案构建专业级Web3D场景动画高效相机路径控制方案 scene editor是基于vis three框架开发的全自定义Web3D场景编辑器为开发者提供了一套完告别光线烦恼IC-Light让图像重光照变得如此简单告别光线烦恼IC Light让图像重光照变得如此简单 你是否曾遇到这样的情况精心拍摄的照片因为光线不佳而效果大打折扣是否想过不用专业设备也能轻松调整图像的人工智能计算机视觉媒体生成图像处理上一篇OpenCodex安全配置指南回环绑定、Bearer Token与远程访问的正确姿势下一篇Pinpoint JDK HttpClient 插件测试应用指南基于 jdk-httpclient-plugin-testweb 的构建、运行与监控验证创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表