From 9244e903225709c9772275337c31f494b4306d59 Mon Sep 17 00:00:00 2001 From: ftaghiyev <126179522+ftaghiyev@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:14:56 -0600 Subject: [PATCH 1/2] initial workflow + base tests implemented --- .github/workflows/ci.yml | 49 +++++++++++++++++++++++++ tests/__init__.py | 0 tests/data/example.jpg | Bin 0 -> 129644 bytes tests/test_basic.py | 11 ++++++ tests/test_gaussians.py | 73 +++++++++++++++++++++++++++++++++++++ tests/test_io.py | 69 +++++++++++++++++++++++++++++++++++ tests/test_predict.py | 75 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 277 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 tests/__init__.py create mode 100644 tests/data/example.jpg create mode 100644 tests/test_basic.py create mode 100644 tests/test_gaussians.py create mode 100644 tests/test_io.py create mode 100644 tests/test_predict.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c6b4a03 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,49 @@ +name: CI + +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.12"] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pytest + pip install -e . + pip install -r requirements.txt + + - name: Detect GPU availability + id: detect-gpu + shell: bash + run: | + HAS_GPU=$(python -c "import torch; print('true' if torch.cuda.is_available() else 'false')") + echo "has_gpu=$HAS_GPU" >> "$GITHUB_OUTPUT" + echo "GPU available: $HAS_GPU" + + - name: Pre-cache model checkpoint + if: steps.detect-gpu.outputs.has_gpu == 'true' + run: | + mkdir -p ~/.cache/torch/hub/checkpoints + if [ ! -f ~/.cache/torch/hub/checkpoints/sharp_2572gikvuh.pt ]; then + curl -L -o ~/.cache/torch/hub/checkpoints/sharp_2572gikvuh.pt https://ml-site.cdn-apple.com/models/sharp/sharp_2572gikvuh.pt + fi + + - name: Run tests + run: | + pytest diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/data/example.jpg b/tests/data/example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37179e8a2d3d1381b7274618ae621ada3e0c80e6 GIT binary patch literal 129644 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

V+FCWuckr(Y;<&OdVDW~M^BU^kSljmjnI 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 Ks6r!>fB)I{`EL9G literal 0 HcmV?d00001 diff --git a/tests/test_basic.py b/tests/test_basic.py new file mode 100644 index 0000000..18ace9a --- /dev/null +++ b/tests/test_basic.py @@ -0,0 +1,11 @@ +def test_import(): + """Test that the package can be imported.""" + import sharp + assert sharp is not None + + +def test_cli_import(): + """Test that CLI modules can be imported.""" + from sharp import cli + assert cli is not None + diff --git a/tests/test_gaussians.py b/tests/test_gaussians.py new file mode 100644 index 0000000..ce97e8a --- /dev/null +++ b/tests/test_gaussians.py @@ -0,0 +1,73 @@ +import tempfile +from pathlib import Path + +import numpy as np +import torch + +from sharp.utils.gaussians import Gaussians3D, SceneMetaData, save_ply + + +def test_gaussians3d_creation(): + """Test creating a Gaussians3D object.""" + num_gaussians = 100 + gaussians = Gaussians3D( + mean_vectors=torch.randn(1, num_gaussians, 3), + singular_values=torch.rand(1, num_gaussians, 3), + quaternions=torch.randn(1, num_gaussians, 4), + colors=torch.rand(1, num_gaussians, 3), + opacities=torch.rand(1, num_gaussians), + ) + + assert gaussians.mean_vectors.shape == (1, num_gaussians, 3) + assert gaussians.singular_values.shape == (1, num_gaussians, 3) + assert gaussians.quaternions.shape == (1, num_gaussians, 4) + assert gaussians.colors.shape == (1, num_gaussians, 3) + assert gaussians.opacities.shape == (1, num_gaussians) + + +def test_gaussians3d_to_device(): + """Test moving Gaussians3D to a device.""" + num_gaussians = 50 + gaussians = Gaussians3D( + mean_vectors=torch.randn(1, num_gaussians, 3), + singular_values=torch.rand(1, num_gaussians, 3), + quaternions=torch.randn(1, num_gaussians, 4), + colors=torch.rand(1, num_gaussians, 3), + opacities=torch.rand(1, num_gaussians), + ) + + gaussians_cpu = gaussians.to(torch.device("cpu")) + assert gaussians_cpu.mean_vectors.device.type == "cpu" + assert gaussians_cpu.singular_values.device.type == "cpu" + + +def test_scene_metadata(): + """Test creating SceneMetaData.""" + metadata = SceneMetaData( + focal_length_px=1000.0, + resolution_px=(1920, 1080), + color_space="linearRGB", + ) + + assert metadata.focal_length_px == 1000.0 + assert metadata.resolution_px == (1920, 1080) + assert metadata.color_space == "linearRGB" + + +def test_save_ply(tmp_path): + """Test saving Gaussians to PLY file.""" + num_gaussians = 10 + gaussians = Gaussians3D( + mean_vectors=torch.randn(1, num_gaussians, 3), + singular_values=torch.rand(1, num_gaussians, 3), + quaternions=torch.randn(1, num_gaussians, 4), + colors=torch.rand(1, num_gaussians, 3), + opacities=torch.rand(1, num_gaussians), + ) + + output_path = tmp_path / "test_gaussians.ply" + save_ply(gaussians, f_px=1000.0, image_shape=(1920, 1080), path=output_path) + + assert output_path.exists() + assert output_path.stat().st_size > 0 + diff --git a/tests/test_io.py b/tests/test_io.py new file mode 100644 index 0000000..1b14f54 --- /dev/null +++ b/tests/test_io.py @@ -0,0 +1,69 @@ +import tempfile +from pathlib import Path + +import numpy as np +import pytest +from PIL import Image + +from sharp.utils import io + + +def test_load_rgb(tmp_path): + """Test loading an RGB image.""" + test_image_path = tmp_path / "test.jpg" + img_array = np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8) + img = Image.fromarray(img_array) + img.save(test_image_path) + + image, icc_profile, f_px = io.load_rgb(test_image_path) + + assert image.shape == (100, 100, 3) + assert image.dtype == np.uint8 + assert f_px > 0 + assert isinstance(icc_profile, (list, type(None))) + + +def test_get_supported_image_extensions(): + """Test getting supported image extensions.""" + extensions = io.get_supported_image_extensions() + assert isinstance(extensions, list) + assert len(extensions) > 0 + assert ".jpg" in extensions or ".JPG" in extensions + assert ".png" in extensions or ".PNG" in extensions + + +def test_get_supported_video_extensions(): + """Test getting supported video extensions.""" + extensions = io.get_supported_video_extensions() + assert isinstance(extensions, list) + assert ".mp4" in extensions or ".MP4" in extensions + + +def test_save_image(tmp_path): + """Test saving an image.""" + test_image_path = tmp_path / "test_output.jpg" + img_array = np.random.randint(0, 255, (50, 50, 3), dtype=np.uint8) + + io.save_image(img_array, test_image_path) + + assert test_image_path.exists() + loaded_image, _, _ = io.load_rgb(test_image_path) + assert loaded_image.shape == (50, 50, 3) + + +def test_convert_focallength(): + """Test focal length conversion.""" + f_px = io.convert_focallength(1920, 1080, 30.0) + assert f_px > 0 + assert isinstance(f_px, float) + + +def test_load_example_image(): + """Test loading the example image from tests/data directory.""" + example_path = Path(__file__).parent / "data" / "example.jpg" + if example_path.exists(): + image, _, f_px = io.load_rgb(example_path) + assert image.ndim == 3 + assert image.shape[2] == 3 + assert f_px > 0 + diff --git a/tests/test_predict.py b/tests/test_predict.py new file mode 100644 index 0000000..236410b --- /dev/null +++ b/tests/test_predict.py @@ -0,0 +1,75 @@ +import numpy as np +import pytest +import torch +from pathlib import Path + +from sharp.cli.predict import predict_image +from sharp.models import PredictorParams, create_predictor +from sharp.utils.gaussians import Gaussians3D + + +@pytest.mark.skipif( + not torch.cuda.is_available() and not torch.mps.is_available(), + reason="Requires CUDA or MPS for model inference", +) +def test_predict_image_with_model(tmp_path): + """Test predict_image function with a real model checkpoint.""" + example_path = Path(__file__).parent / "data" / "example.jpg" + if not example_path.exists(): + pytest.skip("Test image not found") + + from sharp.utils import io + + image, _, f_px = io.load_rgb(example_path) + + device = torch.device("cuda" if torch.cuda.is_available() else "mps" if torch.mps.is_available() else "cpu") + + # Use the pre-cached model checkpoint + checkpoint_path = Path.home() / ".cache" / "torch" / "hub" / "checkpoints" / "sharp_2572gikvuh.pt" + if not checkpoint_path.exists(): + pytest.skip("Model checkpoint not found in cache") + + try: + predictor = create_predictor(PredictorParams(checkpoint_path=str(checkpoint_path))) + predictor.eval() + predictor.to(device) + + gaussians = predict_image(predictor, image, f_px, device) + + assert isinstance(gaussians, Gaussians3D) + assert gaussians.mean_vectors.shape[0] == 1 + assert gaussians.mean_vectors.shape[2] == 3 + assert gaussians.colors.shape[2] == 3 + assert gaussians.opacities.shape[1] > 0 + except Exception as e: + pytest.skip(f"Model inference failed (likely missing checkpoint): {e}") + + +def test_predict_image_signature(): + """Test that predict_image function has correct signature.""" + import inspect + + sig = inspect.signature(predict_image) + params = sig.parameters + + assert "predictor" in params + assert "image" in params + assert "f_px" in params + assert "device" in params + + +def test_create_predictor(): + """Test creating a predictor model.""" + params = PredictorParams() + predictor = create_predictor(params) + + assert predictor is not None + assert hasattr(predictor, "eval") + assert hasattr(predictor, "to") + + +def test_predictor_params(): + """Test PredictorParams creation.""" + params = PredictorParams() + assert params is not None + From 4fb1494b00566a17c761247d958e557b976a1bd2 Mon Sep 17 00:00:00 2001 From: ftaghiyev <126179522+ftaghiyev@users.noreply.github.com> Date: Tue, 23 Dec 2025 14:34:02 -0600 Subject: [PATCH 2/2] added workflow dispatch for manual runs --- .github/workflows/ci.yml | 1 + .gitignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c6b4a03..851be7a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,7 @@ name: CI on: + workflow_dispatch: push: branches: [main, master] pull_request: diff --git a/.gitignore b/.gitignore index 49aa19b..8f1c51f 100644 --- a/.gitignore +++ b/.gitignore @@ -164,3 +164,4 @@ cython_debug/ .DS_STORE *.pt .aider* +.vscode/