fix(pre_commit): 🎨 auto format pre-commit hooks
This commit is contained in:
parent
9ef697cd10
commit
bcd3e1be17
|
|
@ -1,5 +1,5 @@
|
|||
from typing import List, Optional, Tuple
|
||||
from contextlib import ExitStack as DoesNotRaise
|
||||
from typing import Optional, Tuple
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
|
@ -10,280 +10,489 @@ from supervision.detection.lmm import from_florence_2
|
|||
@pytest.mark.parametrize(
|
||||
"florence_result, resolution_wh, expected_results, exception",
|
||||
[
|
||||
( # Object detection: empty
|
||||
{"<OD>":{
|
||||
"bboxes": [],
|
||||
"labels": []
|
||||
}},
|
||||
( # Object detection: empty
|
||||
{"<OD>": {"bboxes": [], "labels": []}},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([], dtype=np.float32),
|
||||
np.array([]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
(np.array([], dtype=np.float32), np.array([]), None, None),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Object detection: two detections
|
||||
{"<OD>":{
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"labels": ["car", "door"]
|
||||
}},
|
||||
( # Object detection: two detections
|
||||
{
|
||||
"<OD>": {
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"labels": ["car", "door"],
|
||||
}
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[4, 4, 6, 6], [5, 5, 7, 7]], dtype=np.float32),
|
||||
np.array(["car", "door"]),
|
||||
None,
|
||||
None
|
||||
None,
|
||||
),
|
||||
DoesNotRaise()
|
||||
DoesNotRaise(),
|
||||
),
|
||||
|
||||
( # Caption: unsupported
|
||||
{"<CAPTION>": 'A green car parked in front of a yellow building.'},
|
||||
( # Caption: unsupported
|
||||
{"<CAPTION>": "A green car parked in front of a yellow building."},
|
||||
(10, 10),
|
||||
None,
|
||||
pytest.raises(ValueError)
|
||||
pytest.raises(ValueError),
|
||||
),
|
||||
( # Detailed Caption: unsupported
|
||||
{"<DETAILED_CAPTION>": 'The image shows a blue Volkswagen Beetle parked '
|
||||
'in front of a yellow building with two brown doors, surrounded by '
|
||||
'trees and a clear blue sky.'},
|
||||
(10, 10),
|
||||
None,
|
||||
pytest.raises(ValueError)
|
||||
),
|
||||
( # More Detailed Caption: unsupported
|
||||
( # Detailed Caption: unsupported
|
||||
{
|
||||
"<MORE_DETAILED_CAPTION>": 'The image shows a vintage Volkswagen '
|
||||
'Beetle car parked on a '
|
||||
'cobblestone street in front of a yellow building with two wooden '
|
||||
'doors. The car is painted in a bright turquoise color and has a '
|
||||
'white stripe running along the side. It has two doors on either side '
|
||||
'of the car, one on top of the other, and a small window on the '
|
||||
'front. The building appears to be old and dilapidated, with peeling '
|
||||
'paint and crumbling walls. The sky is blue and there are trees in '
|
||||
'the background.'
|
||||
"<DETAILED_CAPTION>": "The image shows a blue Volkswagen Beetle parked "
|
||||
"in front of a yellow building with two brown doors, surrounded by "
|
||||
"trees and a clear blue sky."
|
||||
},
|
||||
(10, 10),
|
||||
None,
|
||||
pytest.raises(ValueError)
|
||||
pytest.raises(ValueError),
|
||||
),
|
||||
|
||||
( # Caption to Phrase Grounding: empty
|
||||
{"<CAPTION_TO_PHRASE_GROUNDING>":{
|
||||
"bboxes": [],
|
||||
"labels": []
|
||||
}},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([], dtype=np.float32),
|
||||
np.array([]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
( # Caption to Phrase Grounding: two detections
|
||||
{"<CAPTION_TO_PHRASE_GROUNDING>":{
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"labels": ["a green car", "a yellow building"]
|
||||
}},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[4, 4, 6, 6], [5, 5, 7, 7]], dtype=np.float32),
|
||||
np.array(["a green car", "a yellow building"]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
|
||||
( # Dense Region caption: empty
|
||||
{"<DENSE_REGION_CAPTION>":{
|
||||
"bboxes": [],
|
||||
"labels": []
|
||||
}},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([], dtype=np.float32),
|
||||
np.array([]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
( # Caption to Phrase Grounding: two detections
|
||||
{"<DENSE_REGION_CAPTION>":{
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"labels": ["a green car", "a yellow building"]
|
||||
}},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[4, 4, 6, 6], [5, 5, 7, 7]], dtype=np.float32),
|
||||
np.array(["a green car", "a yellow building"]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
|
||||
( # Region proposal
|
||||
{"<REGION_PROPOSAL>":{
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"labels": ["", ""]
|
||||
}},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[4, 4, 6, 6], [5, 5, 7, 7]], dtype=np.float32),
|
||||
None,
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
|
||||
( # Referring Expression Segmentation
|
||||
{"<REFERRING_EXPRESSION_SEGMENTATION>":{
|
||||
"polygons": [[[1, 1, 2, 1, 2, 2, 1, 2]]],
|
||||
"labels": [""]
|
||||
}},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[1., 1., 2., 2.]], dtype=np.float32),
|
||||
None,
|
||||
np.array([[
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, True, True, False, False, False, False, False, False, False],
|
||||
[False, True, True, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False]
|
||||
]]),
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
|
||||
( # Referring Expression Segmentation
|
||||
{"<REFERRING_EXPRESSION_SEGMENTATION>":{
|
||||
"polygons": [[[1, 1, 2, 1, 2, 2, 1, 2]]],
|
||||
"labels": [""]
|
||||
}},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[1., 1., 2., 2.]], dtype=np.float32),
|
||||
None,
|
||||
np.array([[
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, True, True, False, False, False, False, False, False, False],
|
||||
[False, True, True, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False],
|
||||
[False, False, False, False, False, False, False, False, False, False]
|
||||
]]),
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
|
||||
( # OCR: unsupported
|
||||
{"<OCR>": 'A'},
|
||||
( # More Detailed Caption: unsupported
|
||||
{
|
||||
"<MORE_DETAILED_CAPTION>": "The image shows a vintage Volkswagen "
|
||||
"Beetle car parked on a "
|
||||
"cobblestone street in front of a yellow building with two wooden "
|
||||
"doors. The car is painted in a bright turquoise color and has a "
|
||||
"white stripe running along the side. It has two doors on either side "
|
||||
"of the car, one on top of the other, and a small window on the "
|
||||
"front. The building appears to be old and dilapidated, with peeling "
|
||||
"paint and crumbling walls. The sky is blue and there are trees in "
|
||||
"the background."
|
||||
},
|
||||
(10, 10),
|
||||
None,
|
||||
pytest.raises(ValueError)
|
||||
pytest.raises(ValueError),
|
||||
),
|
||||
|
||||
( # OCR with Region: obb boxes
|
||||
{"<OCR_WITH_REGION>":{
|
||||
"quad_boxes": [[2, 2, 6, 4, 5, 6, 1, 5], [4, 4, 5, 5, 4, 6, 3, 5]],
|
||||
"labels": ["some text", "other text"]
|
||||
}},
|
||||
( # Caption to Phrase Grounding: empty
|
||||
{"<CAPTION_TO_PHRASE_GROUNDING>": {"bboxes": [], "labels": []}},
|
||||
(10, 10),
|
||||
(np.array([], dtype=np.float32), np.array([]), None, None),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Caption to Phrase Grounding: two detections
|
||||
{
|
||||
"<CAPTION_TO_PHRASE_GROUNDING>": {
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"labels": ["a green car", "a yellow building"],
|
||||
}
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[4, 4, 6, 6], [5, 5, 7, 7]], dtype=np.float32),
|
||||
np.array(["a green car", "a yellow building"]),
|
||||
None,
|
||||
None,
|
||||
),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Dense Region caption: empty
|
||||
{"<DENSE_REGION_CAPTION>": {"bboxes": [], "labels": []}},
|
||||
(10, 10),
|
||||
(np.array([], dtype=np.float32), np.array([]), None, None),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Caption to Phrase Grounding: two detections
|
||||
{
|
||||
"<DENSE_REGION_CAPTION>": {
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"labels": ["a green car", "a yellow building"],
|
||||
}
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[4, 4, 6, 6], [5, 5, 7, 7]], dtype=np.float32),
|
||||
np.array(["a green car", "a yellow building"]),
|
||||
None,
|
||||
None,
|
||||
),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Region proposal
|
||||
{
|
||||
"<REGION_PROPOSAL>": {
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"labels": ["", ""],
|
||||
}
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[4, 4, 6, 6], [5, 5, 7, 7]], dtype=np.float32),
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Referring Expression Segmentation
|
||||
{
|
||||
"<REFERRING_EXPRESSION_SEGMENTATION>": {
|
||||
"polygons": [[[1, 1, 2, 1, 2, 2, 1, 2]]],
|
||||
"labels": [""],
|
||||
}
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[1.0, 1.0, 2.0, 2.0]], dtype=np.float32),
|
||||
None,
|
||||
np.array(
|
||||
[
|
||||
[
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
]
|
||||
]
|
||||
),
|
||||
None,
|
||||
),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Referring Expression Segmentation
|
||||
{
|
||||
"<REFERRING_EXPRESSION_SEGMENTATION>": {
|
||||
"polygons": [[[1, 1, 2, 1, 2, 2, 1, 2]]],
|
||||
"labels": [""],
|
||||
}
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[1.0, 1.0, 2.0, 2.0]], dtype=np.float32),
|
||||
None,
|
||||
np.array(
|
||||
[
|
||||
[
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
[
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
],
|
||||
]
|
||||
]
|
||||
),
|
||||
None,
|
||||
),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # OCR: unsupported
|
||||
{"<OCR>": "A"},
|
||||
(10, 10),
|
||||
None,
|
||||
pytest.raises(ValueError),
|
||||
),
|
||||
( # OCR with Region: obb boxes
|
||||
{
|
||||
"<OCR_WITH_REGION>": {
|
||||
"quad_boxes": [[2, 2, 6, 4, 5, 6, 1, 5], [4, 4, 5, 5, 4, 6, 3, 5]],
|
||||
"labels": ["some text", "other text"],
|
||||
}
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[1, 2, 6, 6], [3, 4, 5, 6]], dtype=np.float32),
|
||||
np.array(["some text", "other text"]),
|
||||
None,
|
||||
np.array([[[2, 2], [6, 4], [5, 6], [1, 5]], [[4, 4], [5, 5], [4, 6], [3, 5]]])
|
||||
np.array(
|
||||
[[[2, 2], [6, 4], [5, 6], [1, 5]], [[4, 4], [5, 5], [4, 6], [3, 5]]]
|
||||
),
|
||||
),
|
||||
DoesNotRaise()
|
||||
DoesNotRaise(),
|
||||
),
|
||||
|
||||
( # Open Vocabulary Detection
|
||||
{"<OPEN_VOCABULARY_DETECTION>":{
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"bboxes_labels": ["cat", "cat"],
|
||||
"polygon": [],
|
||||
"polygons_labels": []
|
||||
}},
|
||||
( # Open Vocabulary Detection
|
||||
{
|
||||
"<OPEN_VOCABULARY_DETECTION>": {
|
||||
"bboxes": [[4, 4, 6, 6], [5, 5, 7, 7]],
|
||||
"bboxes_labels": ["cat", "cat"],
|
||||
"polygon": [],
|
||||
"polygons_labels": [],
|
||||
}
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[4, 4, 6, 6], [5, 5, 7, 7]], dtype=np.float32),
|
||||
np.array(["cat", "cat"]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
|
||||
( # Region to Category: empty
|
||||
{'<REGION_TO_CATEGORY>': 'No object detected.'},
|
||||
(10, 10),
|
||||
(
|
||||
np.empty((0, 4), dtype=np.float32),
|
||||
np.array([]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Region to Category: detected
|
||||
{'<REGION_TO_CATEGORY>': 'some object category<loc_3><loc_4><loc_5><loc_6>'},
|
||||
( # Region to Category: empty
|
||||
{"<REGION_TO_CATEGORY>": "No object detected."},
|
||||
(10, 10),
|
||||
(np.empty((0, 4), dtype=np.float32), np.array([]), None, None),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Region to Category: detected
|
||||
{
|
||||
"<REGION_TO_CATEGORY>": "some object category<loc_3><loc_4><loc_5><loc_6>"
|
||||
},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[3, 4, 5, 6]], dtype=np.float32),
|
||||
np.array(["some object category"]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
),
|
||||
( # Region to Description: empty
|
||||
{'<REGION_TO_DESCRIPTION>': 'No object detected.'},
|
||||
(10, 10),
|
||||
(
|
||||
np.empty((0, 4), dtype=np.float32),
|
||||
np.array([]),
|
||||
None,
|
||||
None
|
||||
),
|
||||
DoesNotRaise()
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Region to Description: detected
|
||||
{'<REGION_TO_DESCRIPTION>': 'some description<loc_3><loc_4><loc_5><loc_6>'},
|
||||
( # Region to Description: empty
|
||||
{"<REGION_TO_DESCRIPTION>": "No object detected."},
|
||||
(10, 10),
|
||||
(np.empty((0, 4), dtype=np.float32), np.array([]), None, None),
|
||||
DoesNotRaise(),
|
||||
),
|
||||
( # Region to Description: detected
|
||||
{"<REGION_TO_DESCRIPTION>": "some description<loc_3><loc_4><loc_5><loc_6>"},
|
||||
(10, 10),
|
||||
(
|
||||
np.array([[3, 4, 5, 6]], dtype=np.float32),
|
||||
np.array(["some description"]),
|
||||
None,
|
||||
None
|
||||
None,
|
||||
),
|
||||
DoesNotRaise()
|
||||
)
|
||||
])
|
||||
DoesNotRaise(),
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_florence_2(
|
||||
florence_result: dict,
|
||||
resolution_wh: Tuple[int, int],
|
||||
expected_results: Tuple[np.ndarray, Optional[np.ndarray], Optional[np.ndarray], Optional[np.ndarray]],
|
||||
exception: Exception
|
||||
expected_results: Tuple[
|
||||
np.ndarray, Optional[np.ndarray], Optional[np.ndarray], Optional[np.ndarray]
|
||||
],
|
||||
exception: Exception,
|
||||
) -> None:
|
||||
with exception:
|
||||
result = from_florence_2(florence_result, resolution_wh)
|
||||
|
|
|
|||
Loading…
Reference in New Issue