StreetSceneSegmentation / tests /test_detection_utils.py
Mingze's picture
Improve detection label placement
6cc84ea
Raw
History Blame Contribute Delete
1.5 kB
from PIL import Image
import detection_utils as utils
DETECTIONS = [
{
"class_id": 0,
"class_name": "person",
"confidence": 0.9,
"x1": 1.0,
"y1": 2.0,
"x2": 10.0,
"y2": 20.0,
},
{
"class_id": 2,
"class_name": "car",
"confidence": 0.7,
"x1": 12.0,
"y1": 4.0,
"x2": 30.0,
"y2": 18.0,
},
{
"class_id": 2,
"class_name": "car",
"confidence": 0.5,
"x1": 32.0,
"y1": 5.0,
"x2": 45.0,
"y2": 17.0,
},
]
def test_detection_summary_groups_and_sorts_classes():
assert utils.build_detection_summary(DETECTIONS) == [
["car", 2, 0.6, 0.7],
["person", 1, 0.9, 0.9],
]
def test_street_indicators_are_transparent_counts():
assert utils.build_street_indicators(DETECTIONS) == {
"people": 1,
"active_mobility": 1,
"motor_vehicles": 2,
"all_transport": 2,
}
def test_detection_overlay_matches_input_size():
image = Image.new("RGB", (60, 40), "white")
rendered = utils.render_detection(image, DETECTIONS)
assert rendered.size == image.size
assert rendered.getpixel((1, 2)) != (255, 255, 255)
def test_label_boxes_avoid_existing_labels():
first = utils._label_box([20, 30, 30, 40], 20, 10, (100, 100), [])
second = utils._label_box([22, 30, 32, 40], 20, 10, (100, 100), [first])
assert not utils._boxes_overlap(first, second)