(self, input_data, mode2, expected_box, expected_area)
| 143 | class TestCreateBoxList(unittest.TestCase): |
| 144 | @parameterized.expand(TESTS) |
| 145 | def test_value(self, input_data, mode2, expected_box, expected_area): |
| 146 | expected_box = convert_data_type(expected_box, dtype=np.float32)[0] |
| 147 | boxes1 = convert_data_type(input_data["boxes"], dtype=np.float32)[0] |
| 148 | mode1 = input_data["mode"] |
| 149 | half_bool = input_data["half"] |
| 150 | spatial_size = input_data["spatial_size"] |
| 151 | |
| 152 | # test float16 |
| 153 | if half_bool: |
| 154 | boxes1 = convert_data_type(boxes1, dtype=np.float16)[0] |
| 155 | expected_box = convert_data_type(expected_box, dtype=np.float16)[0] |
| 156 | |
| 157 | # test convert_box_mode, convert_box_to_standard_mode |
| 158 | result2 = convert_box_mode(boxes=boxes1, src_mode=mode1, dst_mode=mode2) |
| 159 | assert_allclose(result2, expected_box, type_test=True, device_test=True, atol=0.0) |
| 160 | |
| 161 | result1 = convert_box_mode(boxes=result2, src_mode=mode2, dst_mode=mode1) |
| 162 | assert_allclose(result1, boxes1, type_test=True, device_test=True, atol=0.0) |
| 163 | |
| 164 | result_standard = convert_box_to_standard_mode(boxes=boxes1, mode=mode1) |
| 165 | expected_box_standard = convert_box_to_standard_mode(boxes=expected_box, mode=mode2) |
| 166 | assert_allclose(result_standard, expected_box_standard, type_test=True, device_test=True, atol=0.0) |
| 167 | |
| 168 | # test box_area, box_iou, box_giou, box_pair_giou |
| 169 | assert_allclose(box_area(result_standard), expected_area, type_test=True, device_test=True, atol=0.0) |
| 170 | iou_metrics = (box_iou, box_giou) |
| 171 | for p in iou_metrics: |
| 172 | self_iou = p(boxes1=result_standard[1:2, :], boxes2=result_standard[1:1, :]) |
| 173 | assert_allclose(self_iou, np.array([[]]), type_test=False) |
| 174 | |
| 175 | self_iou = p(boxes1=result_standard[1:2, :], boxes2=result_standard[1:2, :]) |
| 176 | assert_allclose(self_iou, np.array([[1.0]]), type_test=False) |
| 177 | |
| 178 | self_iou = box_pair_giou(boxes1=result_standard[1:1, :], boxes2=result_standard[1:1, :]) |
| 179 | assert_allclose(self_iou, np.array([]), type_test=False) |
| 180 | |
| 181 | self_iou = box_pair_giou(boxes1=result_standard[1:2, :], boxes2=result_standard[1:2, :]) |
| 182 | assert_allclose(self_iou, np.array([1.0]), type_test=False) |
| 183 | |
| 184 | # test box_centers, centers_in_boxes, boxes_center_distance |
| 185 | result_standard_center = box_centers(result_standard) |
| 186 | expected_center = convert_box_mode(boxes=boxes1, src_mode=mode1, dst_mode="cccwhd")[:, :3] |
| 187 | assert_allclose(result_standard_center, expected_center, type_test=True, device_test=True, atol=0.0) |
| 188 | |
| 189 | center = expected_center |
| 190 | center[2, :] += 10 |
| 191 | result_centers_in_boxes = centers_in_boxes(centers=center, boxes=result_standard) |
| 192 | assert_allclose(result_centers_in_boxes, np.array([False, True, False]), type_test=False) |
| 193 | |
| 194 | center_dist, _, _ = boxes_center_distance(boxes1=result_standard[1:2, :], boxes2=result_standard[1:1, :]) |
| 195 | assert_allclose(center_dist, np.array([[]]), type_test=False) |
| 196 | center_dist, _, _ = boxes_center_distance(boxes1=result_standard[1:2, :], boxes2=result_standard[1:2, :]) |
| 197 | assert_allclose(center_dist, np.array([[0.0]]), type_test=False) |
| 198 | center_dist, _, _ = boxes_center_distance(boxes1=result_standard[0:1, :], boxes2=result_standard[0:1, :]) |
| 199 | assert_allclose(center_dist, np.array([[0.0]]), type_test=False) |
| 200 | |
| 201 | # test clip_boxes_to_image |
| 202 | clipped_boxes, keep = clip_boxes_to_image(expected_box_standard, spatial_size, remove_empty=True) |
nothing calls this directly
no test coverage detected