mirror of
https://github.com/SikongJueluo/Mini-Nav.git
synced 2026-07-12 20:15:31 +08:00
refactor(pipeline): integrate SAM segmentation and modularize model loading
This commit is contained in:
@@ -97,9 +97,21 @@ class TestSAMSegmentation:
|
||||
from utils.sam import segment_image
|
||||
|
||||
# Create masks with known areas (unordered)
|
||||
mask1 = {"segment": np.ones((5, 5), dtype=bool), "area": 25, "bbox": [0, 0, 5, 5]}
|
||||
mask2 = {"segment": np.ones((10, 10), dtype=bool), "area": 100, "bbox": [0, 0, 10, 10]}
|
||||
mask3 = {"segment": np.ones((3, 3), dtype=bool), "area": 9, "bbox": [0, 0, 3, 3]}
|
||||
mask1 = {
|
||||
"segment": np.ones((5, 5), dtype=bool),
|
||||
"area": 25,
|
||||
"bbox": [0, 0, 5, 5],
|
||||
}
|
||||
mask2 = {
|
||||
"segment": np.ones((10, 10), dtype=bool),
|
||||
"area": 100,
|
||||
"bbox": [0, 0, 10, 10],
|
||||
}
|
||||
mask3 = {
|
||||
"segment": np.ones((3, 3), dtype=bool),
|
||||
"area": 9,
|
||||
"bbox": [0, 0, 3, 3],
|
||||
}
|
||||
|
||||
mock_generator = Mock()
|
||||
mock_generator.generate.return_value = [mask1, mask2, mask3]
|
||||
@@ -117,6 +129,31 @@ class TestSAMSegmentation:
|
||||
assert result[2]["area"] == 9
|
||||
|
||||
|
||||
class TestSAMLoading:
|
||||
@patch("utils.sam.pipeline")
|
||||
def test_load_sam_model_uses_transformers_pipeline(self, mock_pipeline):
|
||||
from utils.sam import Sam2MaskGenerator, load_sam_model
|
||||
|
||||
mock_pipe_obj = Mock()
|
||||
mock_pipe_obj.model = Mock()
|
||||
mock_pipeline.return_value = mock_pipe_obj
|
||||
|
||||
sam_model, mask_generator = load_sam_model(
|
||||
model_name="facebook/sam2.1-hiera-large",
|
||||
device="cpu",
|
||||
points_per_batch=16,
|
||||
)
|
||||
|
||||
assert sam_model is mock_pipe_obj.model
|
||||
assert isinstance(mask_generator, Sam2MaskGenerator)
|
||||
assert mask_generator.points_per_batch == 16
|
||||
|
||||
_, kwargs = mock_pipeline.call_args
|
||||
assert kwargs["task"] == "mask-generation"
|
||||
assert kwargs["model"] == "facebook/sam2.1-hiera-large"
|
||||
assert kwargs["device"] == -1
|
||||
|
||||
|
||||
class TestExtractMaskedRegion:
|
||||
"""Test suite for extracting masked regions from images."""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user