mirror of https://github.com/alibaba/EasyCV.git
parent
915bb73f5d
commit
db33ced143
|
@ -467,8 +467,8 @@ class COCOeval:
|
||||||
fps = np.logical_and(
|
fps = np.logical_and(
|
||||||
np.logical_not(dtm), np.logical_not(dtIg))
|
np.logical_not(dtm), np.logical_not(dtIg))
|
||||||
|
|
||||||
tp_sum = np.cumsum(tps, axis=1).astype(dtype=np.float)
|
tp_sum = np.cumsum(tps, axis=1).astype(dtype=np.float32)
|
||||||
fp_sum = np.cumsum(fps, axis=1).astype(dtype=np.float)
|
fp_sum = np.cumsum(fps, axis=1).astype(dtype=np.float32)
|
||||||
for t, (tp, fp) in enumerate(zip(tp_sum, fp_sum)):
|
for t, (tp, fp) in enumerate(zip(tp_sum, fp_sum)):
|
||||||
tp = np.array(tp)
|
tp = np.array(tp)
|
||||||
fp = np.array(fp)
|
fp = np.array(fp)
|
||||||
|
|
|
@ -252,7 +252,7 @@ class FaceKeypointsDataAugumentation:
|
||||||
skin_factor_list = [0.6, 0.8, 1.0, 1.2, 1.4]
|
skin_factor_list = [0.6, 0.8, 1.0, 1.2, 1.4]
|
||||||
skin_factor = np.random.choice(skin_factor_list)
|
skin_factor = np.random.choice(skin_factor_list)
|
||||||
img_ycrcb_raw[:, :, 0:1] = np.clip(
|
img_ycrcb_raw[:, :, 0:1] = np.clip(
|
||||||
img_ycrcb_raw[:, :, 0:1].astype(np.float) * skin_factor, 0,
|
img_ycrcb_raw[:, :, 0:1].astype(np.float32) * skin_factor, 0,
|
||||||
255).astype(np.uint8)
|
255).astype(np.uint8)
|
||||||
img = cv2.cvtColor(img_ycrcb_raw, cv2.COLOR_YCR_CB2BGR)
|
img = cv2.cvtColor(img_ycrcb_raw, cv2.COLOR_YCR_CB2BGR)
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ def get_1d_sincos_pos_embed_from_grid(embed_dim, pos):
|
||||||
out: (M, D)
|
out: (M, D)
|
||||||
"""
|
"""
|
||||||
assert embed_dim % 2 == 0
|
assert embed_dim % 2 == 0
|
||||||
omega = np.arange(embed_dim // 2, dtype=np.float)
|
omega = np.arange(embed_dim // 2, dtype=np.float32)
|
||||||
omega /= embed_dim / 2.
|
omega /= embed_dim / 2.
|
||||||
omega = 1. / 10000**omega # (D/2,)
|
omega = 1. / 10000**omega # (D/2,)
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ class STrack(BaseTrack):
|
||||||
def __init__(self, tlwh, score):
|
def __init__(self, tlwh, score):
|
||||||
|
|
||||||
# wait activate
|
# wait activate
|
||||||
self._tlwh = np.asarray(tlwh, dtype=np.float)
|
self._tlwh = np.asarray(tlwh, dtype=np.float32)
|
||||||
self.kalman_filter = None
|
self.kalman_filter = None
|
||||||
self.mean, self.covariance = None, None
|
self.mean, self.covariance = None, None
|
||||||
self.is_activated = False
|
self.is_activated = False
|
||||||
|
|
|
@ -86,15 +86,15 @@ def ious(atlbrs, btlbrs):
|
||||||
|
|
||||||
:rtype ious np.ndarray
|
:rtype ious np.ndarray
|
||||||
"""
|
"""
|
||||||
ious = np.zeros((len(atlbrs), len(btlbrs)), dtype=np.float)
|
ious = np.zeros((len(atlbrs), len(btlbrs)), dtype=np.float32)
|
||||||
if ious.size == 0:
|
if ious.size == 0:
|
||||||
return ious
|
return ious
|
||||||
|
|
||||||
from cython_bbox import bbox_overlaps as bbox_ious
|
from cython_bbox import bbox_overlaps as bbox_ious
|
||||||
|
|
||||||
ious = bbox_ious(
|
ious = bbox_ious(
|
||||||
np.ascontiguousarray(atlbrs, dtype=np.float),
|
np.ascontiguousarray(atlbrs, dtype=np.float32),
|
||||||
np.ascontiguousarray(btlbrs, dtype=np.float))
|
np.ascontiguousarray(btlbrs, dtype=np.float32))
|
||||||
|
|
||||||
return ious
|
return ious
|
||||||
|
|
||||||
|
@ -151,15 +151,15 @@ def embedding_distance(tracks, detections, metric='cosine'):
|
||||||
:return: cost_matrix np.ndarray
|
:return: cost_matrix np.ndarray
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cost_matrix = np.zeros((len(tracks), len(detections)), dtype=np.float)
|
cost_matrix = np.zeros((len(tracks), len(detections)), dtype=np.float32)
|
||||||
if cost_matrix.size == 0:
|
if cost_matrix.size == 0:
|
||||||
return cost_matrix
|
return cost_matrix
|
||||||
det_features = np.asarray([track.curr_feat for track in detections],
|
det_features = np.asarray([track.curr_feat for track in detections],
|
||||||
dtype=np.float)
|
dtype=np.float32)
|
||||||
#for i, track in enumerate(tracks):
|
#for i, track in enumerate(tracks):
|
||||||
#cost_matrix[i, :] = np.maximum(0.0, cdist(track.smooth_feat.reshape(1,-1), det_features, metric))
|
#cost_matrix[i, :] = np.maximum(0.0, cdist(track.smooth_feat.reshape(1,-1), det_features, metric))
|
||||||
track_features = np.asarray([track.smooth_feat for track in tracks],
|
track_features = np.asarray([track.smooth_feat for track in tracks],
|
||||||
dtype=np.float)
|
dtype=np.float32)
|
||||||
cost_matrix = np.maximum(0.0, cdist(track_features, det_features,
|
cost_matrix = np.maximum(0.0, cdist(track_features, det_features,
|
||||||
metric)) # Nomalized features
|
metric)) # Nomalized features
|
||||||
return cost_matrix
|
return cost_matrix
|
||||||
|
|
|
@ -2,5 +2,5 @@
|
||||||
# GENERATED VERSION FILE
|
# GENERATED VERSION FILE
|
||||||
# TIME: Thu Nov 5 14:17:50 2020
|
# TIME: Thu Nov 5 14:17:50 2020
|
||||||
|
|
||||||
__version__ = '0.11.3'
|
__version__ = '0.11.4'
|
||||||
short_version = '0.11.3'
|
short_version = '0.11.4'
|
||||||
|
|
|
@ -89,8 +89,8 @@ class CocoToolsTest(unittest.TestCase):
|
||||||
def testExportGroundtruthToCOCO(self):
|
def testExportGroundtruthToCOCO(self):
|
||||||
image_ids = ['first', 'second']
|
image_ids = ['first', 'second']
|
||||||
groundtruth_boxes = [
|
groundtruth_boxes = [
|
||||||
np.array([[100, 100, 200, 200]], np.float),
|
np.array([[100, 100, 200, 200]], np.float32),
|
||||||
np.array([[50, 50, 100, 100]], np.float)
|
np.array([[50, 50, 100, 100]], np.float32)
|
||||||
]
|
]
|
||||||
groundtruth_classes = [
|
groundtruth_classes = [
|
||||||
np.array([1], np.int32),
|
np.array([1], np.int32),
|
||||||
|
@ -126,12 +126,12 @@ class CocoToolsTest(unittest.TestCase):
|
||||||
def testExportDetectionsToCOCO(self):
|
def testExportDetectionsToCOCO(self):
|
||||||
image_ids = ['first', 'second']
|
image_ids = ['first', 'second']
|
||||||
detections_boxes = [
|
detections_boxes = [
|
||||||
np.array([[100, 100, 200, 200]], np.float),
|
np.array([[100, 100, 200, 200]], np.float32),
|
||||||
np.array([[50, 50, 100, 100]], np.float)
|
np.array([[50, 50, 100, 100]], np.float32)
|
||||||
]
|
]
|
||||||
detections_scores = [
|
detections_scores = [
|
||||||
np.array([.8], np.float),
|
np.array([.8], np.float32),
|
||||||
np.array([.7], np.float)
|
np.array([.7], np.float32)
|
||||||
]
|
]
|
||||||
detections_classes = [np.array([1], np.int32), np.array([1], np.int32)]
|
detections_classes = [np.array([1], np.int32), np.array([1], np.int32)]
|
||||||
categories = [{
|
categories = [{
|
||||||
|
@ -152,7 +152,17 @@ class CocoToolsTest(unittest.TestCase):
|
||||||
detections_classes,
|
detections_classes,
|
||||||
categories,
|
categories,
|
||||||
output_path=output_path)
|
output_path=output_path)
|
||||||
self.assertListEqual(result, self._detections_list)
|
|
||||||
|
self.assertEqual(len(result), len(detections_boxes))
|
||||||
|
self.assertEqual(len(detections_boxes), len(detections_boxes))
|
||||||
|
|
||||||
|
score_list = []
|
||||||
|
for i in range(len(detections_boxes)):
|
||||||
|
score = self._detections_list[i].pop('score')
|
||||||
|
score_list.append(score)
|
||||||
|
self.assertAlmostEqual(result[i].pop('score'), score)
|
||||||
|
self.assertDictEqual(result[i], self._detections_list[i])
|
||||||
|
|
||||||
with io.open(output_path, 'r') as f:
|
with io.open(output_path, 'r') as f:
|
||||||
written_result = f.read()
|
written_result = f.read()
|
||||||
# The json output should have floats written to 4 digits of precision.
|
# The json output should have floats written to 4 digits of precision.
|
||||||
|
@ -160,7 +170,10 @@ class CocoToolsTest(unittest.TestCase):
|
||||||
re.MULTILINE)
|
re.MULTILINE)
|
||||||
self.assertTrue(matcher.findall(written_result))
|
self.assertTrue(matcher.findall(written_result))
|
||||||
written_result = json.loads(written_result)
|
written_result = json.loads(written_result)
|
||||||
self.assertAlmostEqual(result, written_result)
|
for i in range(len(result)):
|
||||||
|
self.assertAlmostEqual(written_result[i].pop('score'),
|
||||||
|
score_list[i])
|
||||||
|
self.assertDictEqual(result[i], written_result[i])
|
||||||
|
|
||||||
def testExportSegmentsToCOCO(self):
|
def testExportSegmentsToCOCO(self):
|
||||||
image_ids = ['first', 'second']
|
image_ids = ['first', 'second']
|
||||||
|
@ -176,7 +189,10 @@ class CocoToolsTest(unittest.TestCase):
|
||||||
for i, detection_mask in enumerate(detection_masks):
|
for i, detection_mask in enumerate(detection_masks):
|
||||||
detection_masks[i] = detection_mask[:, :, :, None]
|
detection_masks[i] = detection_mask[:, :, :, None]
|
||||||
|
|
||||||
detection_scores = [np.array([.8], np.float), np.array([.7], np.float)]
|
detection_scores = [
|
||||||
|
np.array([.8], np.float32),
|
||||||
|
np.array([.7], np.float32)
|
||||||
|
]
|
||||||
detection_classes = [np.array([1], np.int32), np.array([1], np.int32)]
|
detection_classes = [np.array([1], np.int32), np.array([1], np.int32)]
|
||||||
|
|
||||||
categories = [{
|
categories = [{
|
||||||
|
@ -202,7 +218,12 @@ class CocoToolsTest(unittest.TestCase):
|
||||||
written_result = json.loads(written_result)
|
written_result = json.loads(written_result)
|
||||||
mask_load = mask.decode([written_result[0]['segmentation']])
|
mask_load = mask.decode([written_result[0]['segmentation']])
|
||||||
self.assertTrue(np.allclose(mask_load, detection_masks[0]))
|
self.assertTrue(np.allclose(mask_load, detection_masks[0]))
|
||||||
self.assertAlmostEqual(result, written_result)
|
self.assertEqual(len(result), len(detection_masks))
|
||||||
|
self.assertEqual(len(written_result), len(detection_masks))
|
||||||
|
for i in range(len(detection_masks)):
|
||||||
|
self.assertAlmostEqual(result[i].pop('score'),
|
||||||
|
written_result[i].pop('score'))
|
||||||
|
self.assertDictEqual(result[i], written_result[i])
|
||||||
|
|
||||||
def testExportKeypointsToCOCO(self):
|
def testExportKeypointsToCOCO(self):
|
||||||
image_ids = ['first', 'second']
|
image_ids = ['first', 'second']
|
||||||
|
@ -216,8 +237,8 @@ class CocoToolsTest(unittest.TestCase):
|
||||||
]
|
]
|
||||||
|
|
||||||
detection_scores = [
|
detection_scores = [
|
||||||
np.array([.8, 0.2], np.float),
|
np.array([.8, 0.2], np.float32),
|
||||||
np.array([.7, 0.3], np.float)
|
np.array([.7, 0.3], np.float32)
|
||||||
]
|
]
|
||||||
detection_classes = [
|
detection_classes = [
|
||||||
np.array([1, 1], np.int32),
|
np.array([1, 1], np.int32),
|
||||||
|
@ -248,7 +269,12 @@ class CocoToolsTest(unittest.TestCase):
|
||||||
with io.open(output_path, 'r') as f:
|
with io.open(output_path, 'r') as f:
|
||||||
written_result = f.read()
|
written_result = f.read()
|
||||||
written_result = json.loads(written_result)
|
written_result = json.loads(written_result)
|
||||||
self.assertAlmostEqual(result, written_result)
|
self.assertEqual(len(result), 4)
|
||||||
|
self.assertEqual(len(written_result), 4)
|
||||||
|
for i in range(4):
|
||||||
|
self.assertAlmostEqual(result[i].pop('score'),
|
||||||
|
written_result[i].pop('score'))
|
||||||
|
self.assertDictEqual(result[i], written_result[i])
|
||||||
|
|
||||||
def testSingleImageDetectionBoxesExport(self):
|
def testSingleImageDetectionBoxesExport(self):
|
||||||
boxes = np.array([[0, 0, 1, 1], [0, 0, .5, .5], [.5, .5, 1, 1]],
|
boxes = np.array([[0, 0, 1, 1], [0, 0, .5, .5], [.5, .5, 1, 1]],
|
||||||
|
|
|
@ -40,9 +40,9 @@ class YOLOXTest(unittest.TestCase):
|
||||||
}
|
}
|
||||||
output = model(imgs, mode='train', **kwargs)
|
output = model(imgs, mode='train', **kwargs)
|
||||||
self.assertEqual(output['img_h'].cpu().numpy(),
|
self.assertEqual(output['img_h'].cpu().numpy(),
|
||||||
np.array(640, dtype=np.float))
|
np.array(640, dtype=np.float32))
|
||||||
self.assertEqual(output['img_w'].cpu().numpy(),
|
self.assertEqual(output['img_w'].cpu().numpy(),
|
||||||
np.array(640, dtype=np.float))
|
np.array(640, dtype=np.float32))
|
||||||
self.assertEqual(output['total_loss'].shape, torch.Size([]))
|
self.assertEqual(output['total_loss'].shape, torch.Size([]))
|
||||||
self.assertEqual(output['iou_l'].shape, torch.Size([]))
|
self.assertEqual(output['iou_l'].shape, torch.Size([]))
|
||||||
self.assertEqual(output['conf_l'].shape, torch.Size([]))
|
self.assertEqual(output['conf_l'].shape, torch.Size([]))
|
||||||
|
|
|
@ -45,9 +45,9 @@ class YOLOXEDGETest(unittest.TestCase):
|
||||||
}
|
}
|
||||||
output = model(imgs, mode='train', **kwargs)
|
output = model(imgs, mode='train', **kwargs)
|
||||||
self.assertEqual(output['img_h'].cpu().numpy(),
|
self.assertEqual(output['img_h'].cpu().numpy(),
|
||||||
np.array(640, dtype=np.float))
|
np.array(640, dtype=np.float32))
|
||||||
self.assertEqual(output['img_w'].cpu().numpy(),
|
self.assertEqual(output['img_w'].cpu().numpy(),
|
||||||
np.array(640, dtype=np.float))
|
np.array(640, dtype=np.float32))
|
||||||
self.assertEqual(output['total_loss'].shape, torch.Size([]))
|
self.assertEqual(output['total_loss'].shape, torch.Size([]))
|
||||||
self.assertEqual(output['iou_l'].shape, torch.Size([]))
|
self.assertEqual(output['iou_l'].shape, torch.Size([]))
|
||||||
self.assertEqual(output['conf_l'].shape, torch.Size([]))
|
self.assertEqual(output['conf_l'].shape, torch.Size([]))
|
||||||
|
|
|
@ -8,13 +8,11 @@ from modelscope.outputs import OutputKeys
|
||||||
from modelscope.pipelines import pipeline
|
from modelscope.pipelines import pipeline
|
||||||
from modelscope.utils.constant import Tasks
|
from modelscope.utils.constant import Tasks
|
||||||
from modelscope.utils.cv.image_utils import panoptic_seg_masks_to_image
|
from modelscope.utils.cv.image_utils import panoptic_seg_masks_to_image
|
||||||
from modelscope.utils.demo_utils import DemoCompatibilityCheck
|
|
||||||
from modelscope.utils.test_utils import test_level
|
from modelscope.utils.test_utils import test_level
|
||||||
from tests.ut_config import BASE_LOCAL_PATH
|
from tests.ut_config import BASE_LOCAL_PATH
|
||||||
|
|
||||||
|
|
||||||
class EasyCVPanopticSegmentationPipelineTest(unittest.TestCase,
|
class EasyCVPanopticSegmentationPipelineTest(unittest.TestCase):
|
||||||
DemoCompatibilityCheck):
|
|
||||||
img_path = os.path.join(
|
img_path = os.path.join(
|
||||||
BASE_LOCAL_PATH, 'data/test_images/image_semantic_segmentation.jpg')
|
BASE_LOCAL_PATH, 'data/test_images/image_semantic_segmentation.jpg')
|
||||||
|
|
||||||
|
@ -32,10 +30,6 @@ class EasyCVPanopticSegmentationPipelineTest(unittest.TestCase,
|
||||||
cv2.imwrite(tmp_save_path, draw_img)
|
cv2.imwrite(tmp_save_path, draw_img)
|
||||||
print('print ' + self.model_id + ' success')
|
print('print ' + self.model_id + ' success')
|
||||||
|
|
||||||
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
|
|
||||||
def test_demo_compatibility(self):
|
|
||||||
self.compatibility_check()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -9,14 +9,12 @@ from modelscope.outputs import OutputKeys
|
||||||
from modelscope.pipelines import pipeline
|
from modelscope.pipelines import pipeline
|
||||||
from modelscope.utils.constant import Tasks
|
from modelscope.utils.constant import Tasks
|
||||||
from modelscope.utils.cv.image_utils import semantic_seg_masks_to_image
|
from modelscope.utils.cv.image_utils import semantic_seg_masks_to_image
|
||||||
from modelscope.utils.demo_utils import DemoCompatibilityCheck
|
|
||||||
from modelscope.utils.test_utils import test_level
|
from modelscope.utils.test_utils import test_level
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from tests.ut_config import BASE_LOCAL_PATH
|
from tests.ut_config import BASE_LOCAL_PATH
|
||||||
|
|
||||||
|
|
||||||
class EasyCVSegmentationPipelineTest(unittest.TestCase,
|
class EasyCVSegmentationPipelineTest(unittest.TestCase):
|
||||||
DemoCompatibilityCheck):
|
|
||||||
img_path = os.path.join(BASE_LOCAL_PATH,
|
img_path = os.path.join(BASE_LOCAL_PATH,
|
||||||
'data/test_images/image_segmentation.jpg')
|
'data/test_images/image_segmentation.jpg')
|
||||||
|
|
||||||
|
@ -82,10 +80,6 @@ class EasyCVSegmentationPipelineTest(unittest.TestCase,
|
||||||
model_id = 'damo/cv_segformer-b5_image_semantic-segmentation_coco-stuff164k'
|
model_id = 'damo/cv_segformer-b5_image_semantic-segmentation_coco-stuff164k'
|
||||||
self._internal_test_(model_id)
|
self._internal_test_(model_id)
|
||||||
|
|
||||||
@unittest.skipUnless(test_level() >= 0, 'skip test in current test level')
|
|
||||||
def test_demo_compatibility(self):
|
|
||||||
self.compatibility_check()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue