Add new functionality for image rectification and depth metadata handling
- Implemented a preview tool for rectifying images with interactive aspect controls in `preview.py`. - Added tests for depth metadata loading to ensure consistent schema usage in `test_depth_metadata.py`. - Developed comprehensive tests for cutout calibration processes in `test_cutout_calibration.py`, including stability checks and depth calibration. - Created tests for frame compositing operations in `test_frame_compositing.py`, ensuring correct handling of depth and transparency. - Introduced material slot inheritance functionality in `material_slots.py` to manage geometry material assignments. - Built shared shader nodes for material processing in `shader.py`, including roughness and bump mapping setups.
This commit is contained in:
@@ -13,19 +13,14 @@ from tests.anyimage.server.support import FakeJobContext
|
||||
|
||||
|
||||
@pytest.mark.parametrize("key", model_catalog.BACKGROUND_MODELS)
|
||||
@pytest.mark.parametrize("kind", ["foreground", "frames", "alpha"])
|
||||
def test_models_dispatch_keep_alpha_and_reuse_sessions(tmp_path, key, kind):
|
||||
@pytest.mark.parametrize("kind", ["foreground", "alpha"])
|
||||
def test_models_dispatch_keep_alpha(tmp_path, key, kind):
|
||||
source = tmp_path / "source.png"
|
||||
Image.new("RGBA", (7, 5), (60, 120, 180, 128)).save(source)
|
||||
if kind == "frames":
|
||||
source = tmp_path / "frames"
|
||||
source.mkdir()
|
||||
for index in (1, 2):
|
||||
Image.new("RGBA", (7, 5), (60, 120, 180, 128)).save(source / f"{index}.png")
|
||||
manager = ModelManager(tmp_path / "models")
|
||||
context = FakeJobContext(tmp_path / "job", "remove-background", manager)
|
||||
adapter = background.model_adapter(manager.directory(key))
|
||||
parameters = {"input": str(source), "model": key, "device": "directml", "video_frames": 2}
|
||||
parameters = {"input": str(source), "model": key, "device": "directml"}
|
||||
if kind == "alpha":
|
||||
parameters["output_kind"] = kind
|
||||
with patch.object(adapter, "create_session", return_value=object()) as create, patch.object(
|
||||
@@ -33,7 +28,7 @@ def test_models_dispatch_keep_alpha_and_reuse_sessions(tmp_path, key, kind):
|
||||
) as infer:
|
||||
remove_background.run(context, parameters)
|
||||
create.assert_called_once_with(manager.directory(key), "cpu" if key == "BIREFNET_HR_MATTING" else "directml")
|
||||
assert infer.call_count == (2 if kind == "frames" else 1)
|
||||
infer.assert_called_once()
|
||||
if kind == "alpha":
|
||||
np.testing.assert_allclose(np.load(context.directory / "alpha.npy"), .4)
|
||||
else:
|
||||
@@ -63,13 +58,3 @@ def test_readiness_checks_model_and_license_corruption(tmp_path, key):
|
||||
assert manager.ready(key)
|
||||
(directory / "LICENSE.txt").write_bytes(b"damaged!")
|
||||
assert not manager.ready(key)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("key", ["PISA_SR", "SAFMN_REAL_X4", "MOGE2_VITL_NORMAL"])
|
||||
def test_retired_job_keys_fail_before_loading(key):
|
||||
from server.models import upscale
|
||||
|
||||
with pytest.raises(ValueError, match="Unknown upscale model"):
|
||||
upscale.infer_one(None, {"model": key}, "unused.png")
|
||||
with pytest.raises(ValueError, match="Unknown background removal model"):
|
||||
remove_background.run(None, {"model": key})
|
||||
|
||||
Reference in New Issue
Block a user