- Implement sync_models.py for preparing and uploading ONNX artifacts. - Create build_node.py for building and validating Blender scripts. - Add docs.py for building and previewing documentation with Mike or MkDocs. - Introduce model_exports.py for exporting PyTorch models to ONNX format. - Develop pack.py for packaging the project with dependencies for different platforms. - Add test_sync_models.py to validate sync_models functionality. - Add test_tool_commands.py to ensure repository tools have correct command scripts. - Initialize tools package with __init__.py.
2.2 KiB
Upscale
Upscale 从当前 Image Empty 读取单图或多帧媒体,在输入长边允许时生成 4× RGBA 结果并替换原图。
执行过程
flowchart TD
Empty["Image Empty"] --> Gate{"长边小于输入上限?"}
Gate -- "否" --> Disabled["禁用或报告错误"]
Gate -- "是" --> Prepare["准备媒体输入"]
Prepare --> Job["upscale-image Job"]
Job --> RGB["分块执行 4× RGB 推理"]
Job --> Alpha["独立缩放 Alpha"]
RGB --> Merge["合并 RGBA"]
Alpha --> Merge
Merge --> Replace["导入并替换当前 Image"]
模型只处理 RGB,Alpha 单独放大后再合并。Blender 侧在提交前检查 Maximum AI Input Size,Server 模型层也应用同一个输入上限。
节点说明
检查尺寸并准备输入
入口位于 operators/upscale.py。UpscaleImage.poll() 读取 preferences.py 中的 Maximum AI Input Size;当前 Image 长边必须严格小于该值。菜单显示的预计尺寸来自同一文件的 upscale_output_size()。
执行时,upscale.py 冻结当前模型和输入上限,并通过 common/image_data.py 准备单图、视频或序列输入。Packed Image 与内存修改结果会导出临时文件,多帧输入保留帧起点和抽帧设置。
分块放大 RGB
UpscaleImage 提交 upscale-image Job。server/jobs/upscale.py 展开媒体帧并逐帧调用模型;server/models/upscale.py 负责输入约束、RGB/Alpha 分离和结果合并,server/models/onnx_upscale.py 以 256 × 256 分块执行 4× ONNX 推理并带入相邻上下文。
server/media/resolution.py 统一解释输入长边上限。Blender 侧要求源图长边小于该值,结果长边小于该值的四倍。
合并 Alpha
server/models/upscale.py 使用 Lanczos 将 Alpha 放大到目标尺寸,再与 4× RGB 合并为 RGBA。Provider 资源不足时,Server 释放当前 Upscale Session,并返回降低输入上限或改用 CPU 的提示。
导入并替换结果
响应阶段回到 operators/upscale.py,通过 common/image_data.py 读取 upscale.* 结果序列并替换当前 Empty。
后续 Upscale 和 Depth Plane 都以当前结果 Image 为输入。