feat: Implement upscale functionality with ONNX models

- Added upscale operator to handle image upscaling by 4x using AI models.
- Introduced new jobs for upscale processing in the server, including debug and standard upscale jobs.
- Created a new ONNX model handler for upscale operations, supporting tiled inference and resource management.
- Updated tests to cover new upscale functionality, including input validation and output verification.
- Added documentation for the upscale feature, detailing usage and model options.
This commit is contained in:
2026-08-23 20:34:35 +08:00
parent 1613bd3194
commit 0cf04a13c6
66 changed files with 2156 additions and 1088 deletions

101
uv.lock generated
View File

@@ -15,6 +15,53 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/3e/30/e900b21425a860e195f32e37657aa1f7c7f2b1bfb26f03ca209b90933c06/annotated_doc-0.0.5-py3-none-any.whl", hash = "sha256:117bac03a25ede5df5440e855b32d556049ca169ead221505badf432fed4b101", size = 5302, upload-time = "2026-07-28T13:50:57.239Z" },
]
[[package]]
name = "anyimage"
version = "0.12.15"
source = { virtual = "." }
dependencies = [
{ name = "blendjob" },
]
[package.dev-dependencies]
dev = [
{ name = "av" },
{ name = "bpy" },
{ name = "huggingface-hub" },
{ name = "numpy" },
{ name = "onnxruntime" },
{ name = "pillow" },
{ name = "pip" },
{ name = "pytest" },
{ name = "trimesh" },
]
docs = [
{ name = "mike" },
{ name = "mkdocs" },
{ name = "mkdocs-material" },
]
[package.metadata]
requires-dist = [{ name = "blendjob", specifier = "==0.1.14" }]
[package.metadata.requires-dev]
dev = [
{ name = "av", specifier = "==17.0.0" },
{ name = "bpy", specifier = "==4.5.3" },
{ name = "huggingface-hub", specifier = "==1.4.1" },
{ name = "numpy", specifier = ">=1.26,<2.0" },
{ name = "onnxruntime", specifier = "==1.24.4" },
{ name = "pillow", specifier = "==12.1.1" },
{ name = "pip", specifier = ">=25,<27" },
{ name = "pytest" },
{ name = "trimesh", specifier = "==4.11.2" },
]
docs = [
{ name = "mike", specifier = ">=2.1.3,<3" },
{ name = "mkdocs", specifier = ">=1.6.1,<2" },
{ name = "mkdocs-material", specifier = ">=9.6.16,<10" },
]
[[package]]
name = "anyio"
version = "4.14.2"
@@ -76,11 +123,10 @@ wheels = [
[[package]]
name = "blendjob"
version = "0.1.13"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/90/ff/2bf54e6e7f70f529bc6a72c7ae1e622ee360a02f7534dd2e1b77059c96a0/blendjob-0.1.13.tar.gz", hash = "sha256:a964905e36fdbf114076384751faa4818f8a2385e59900c06ae403c575f7dcef", size = 21045, upload-time = "2026-08-18T05:38:51.704Z" }
version = "0.1.14"
source = { registry = "src/anyimage/wheels" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/86/71/3762d11ec687cd35996317f1ed335b091851de4d65801ff9bddc37a486c1/blendjob-0.1.13-py3-none-any.whl", hash = "sha256:2089042bc769ddd7424cb3829eb83e129be784e5dbdba6d2c0e775833e55d20c", size = 26363, upload-time = "2026-08-18T05:38:50.838Z" },
{ path = "blendjob-0.1.14-py3-none-any.whl" },
]
[[package]]
@@ -1060,53 +1106,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" },
]
[[package]]
name = "anyimage"
version = "0.12.15"
source = { virtual = "." }
dependencies = [
{ name = "blendjob" },
]
[package.dev-dependencies]
dev = [
{ name = "av" },
{ name = "bpy" },
{ name = "huggingface-hub" },
{ name = "numpy" },
{ name = "onnxruntime" },
{ name = "pillow" },
{ name = "pip" },
{ name = "pytest" },
{ name = "trimesh" },
]
docs = [
{ name = "mike" },
{ name = "mkdocs" },
{ name = "mkdocs-material" },
]
[package.metadata]
requires-dist = [{ name = "blendjob", specifier = "==0.1.13" }]
[package.metadata.requires-dev]
dev = [
{ name = "av", specifier = "==17.0.0" },
{ name = "bpy", specifier = "==4.5.3" },
{ name = "huggingface-hub", specifier = "==1.4.1" },
{ name = "numpy", specifier = ">=1.26,<2.0" },
{ name = "onnxruntime", specifier = "==1.24.4" },
{ name = "pillow", specifier = "==12.1.1" },
{ name = "pip", specifier = ">=25,<27" },
{ name = "pytest" },
{ name = "trimesh", specifier = "==4.11.2" },
]
docs = [
{ name = "mike", specifier = ">=2.1.3,<3" },
{ name = "mkdocs", specifier = ">=1.6.1,<2" },
{ name = "mkdocs-material", specifier = ">=9.6.16,<10" },
]
[[package]]
name = "sympy"
version = "1.14.0"