fix(pre_commit): 🎨 auto format pre-commit hooks

This commit is contained in:
pre-commit-ci[bot] 2024-06-21 13:59:39 +00:00
parent 9ef697cd10
commit bcd3e1be17
1 changed files with 432 additions and 223 deletions

View File

@ -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)