|
@@ -14,8 +14,10 @@ from super_gradients.training.dataloaders.dataloaders import (
|
|
cityscapes_stdc_seg50_val,
|
|
cityscapes_stdc_seg50_val,
|
|
cityscapes_stdc_seg75_val,
|
|
cityscapes_stdc_seg75_val,
|
|
segmentation_test_dataloader,
|
|
segmentation_test_dataloader,
|
|
|
|
+ coco2017_val_ppyoloe,
|
|
)
|
|
)
|
|
-from super_gradients.training.utils.detection_utils import CrowdDetectionCollateFN
|
|
|
|
|
|
+from super_gradients.training.models.detection_models.pp_yolo_e import PPYoloEPostPredictionCallback
|
|
|
|
+from super_gradients.training.utils.detection_utils import CrowdDetectionCollateFN, CrowdDetectionPPYoloECollateFN
|
|
|
|
|
|
from super_gradients.training.metrics import Accuracy, IoU
|
|
from super_gradients.training.metrics import Accuracy, IoU
|
|
import os
|
|
import os
|
|
@@ -97,6 +99,9 @@ class PretrainedModelsTest(unittest.TestCase):
|
|
|
|
|
|
self.coco_dataset = {
|
|
self.coco_dataset = {
|
|
"yolox": coco2017_val_yolox(dataloader_params={"collate_fn": CrowdDetectionCollateFN()}, dataset_params={"with_crowd": True}),
|
|
"yolox": coco2017_val_yolox(dataloader_params={"collate_fn": CrowdDetectionCollateFN()}, dataset_params={"with_crowd": True}),
|
|
|
|
+ "ppyoloe": coco2017_val_ppyoloe(
|
|
|
|
+ dataloader_params={"collate_fn": CrowdDetectionPPYoloECollateFN(), "batch_size": 1}, dataset_params={"with_crowd": True}
|
|
|
|
+ ),
|
|
"ssd_mobilenet": coco2017_val_ssd_lite_mobilenet_v2(
|
|
"ssd_mobilenet": coco2017_val_ssd_lite_mobilenet_v2(
|
|
dataloader_params={"collate_fn": CrowdDetectionCollateFN()}, dataset_params={"with_crowd": True}
|
|
dataloader_params={"collate_fn": CrowdDetectionCollateFN()}, dataset_params={"with_crowd": True}
|
|
),
|
|
),
|
|
@@ -110,6 +115,8 @@ class PretrainedModelsTest(unittest.TestCase):
|
|
Models.YOLOX_L: 0.4925,
|
|
Models.YOLOX_L: 0.4925,
|
|
Models.YOLOX_N: 0.2677,
|
|
Models.YOLOX_N: 0.2677,
|
|
Models.YOLOX_T: 0.3718,
|
|
Models.YOLOX_T: 0.3718,
|
|
|
|
+ Models.PP_YOLOE_S: 0.4252,
|
|
|
|
+ Models.PP_YOLOE_M: 0.4711,
|
|
}
|
|
}
|
|
|
|
|
|
self.transfer_detection_dataset = detection_test_dataloader()
|
|
self.transfer_detection_dataset = detection_test_dataloader()
|
|
@@ -573,6 +580,44 @@ class PretrainedModelsTest(unittest.TestCase):
|
|
)[2]
|
|
)[2]
|
|
self.assertAlmostEqual(res, self.coco_pretrained_maps[Models.YOLOX_T], delta=0.001)
|
|
self.assertAlmostEqual(res, self.coco_pretrained_maps[Models.YOLOX_T], delta=0.001)
|
|
|
|
|
|
|
|
+ def test_pretrained_ppyoloe_s_coco(self):
|
|
|
|
+ trainer = Trainer(Models.PP_YOLOE_S)
|
|
|
|
+
|
|
|
|
+ model = models.get(Models.PP_YOLOE_S, **self.coco_pretrained_ckpt_params)
|
|
|
|
+ res = trainer.test(
|
|
|
|
+ model=model,
|
|
|
|
+ test_loader=self.coco_dataset["ppyoloe"],
|
|
|
|
+ test_metrics_list=[
|
|
|
|
+ DetectionMetrics(
|
|
|
|
+ score_thres=0.1,
|
|
|
|
+ top_k_predictions=300,
|
|
|
|
+ num_cls=80,
|
|
|
|
+ normalize_targets=True,
|
|
|
|
+ post_prediction_callback=PPYoloEPostPredictionCallback(score_threshold=0.01, nms_top_k=1000, max_predictions=300, nms_threshold=0.7),
|
|
|
|
+ )
|
|
|
|
+ ],
|
|
|
|
+ )[2]
|
|
|
|
+ self.assertAlmostEqual(res, self.coco_pretrained_maps[Models.PP_YOLOE_S], delta=0.001)
|
|
|
|
+
|
|
|
|
+ def test_pretrained_ppyoloe_m_coco(self):
|
|
|
|
+ trainer = Trainer(Models.PP_YOLOE_M)
|
|
|
|
+
|
|
|
|
+ model = models.get(Models.PP_YOLOE_M, **self.coco_pretrained_ckpt_params)
|
|
|
|
+ res = trainer.test(
|
|
|
|
+ model=model,
|
|
|
|
+ test_loader=self.coco_dataset["ppyoloe"],
|
|
|
|
+ test_metrics_list=[
|
|
|
|
+ DetectionMetrics(
|
|
|
|
+ score_thres=0.1,
|
|
|
|
+ top_k_predictions=300,
|
|
|
|
+ num_cls=80,
|
|
|
|
+ normalize_targets=True,
|
|
|
|
+ post_prediction_callback=PPYoloEPostPredictionCallback(score_threshold=0.01, nms_top_k=1000, max_predictions=300, nms_threshold=0.7),
|
|
|
|
+ )
|
|
|
|
+ ],
|
|
|
|
+ )[2]
|
|
|
|
+ self.assertAlmostEqual(res, self.coco_pretrained_maps[Models.PP_YOLOE_M], delta=0.001)
|
|
|
|
+
|
|
def test_transfer_learning_yolox_n_coco(self):
|
|
def test_transfer_learning_yolox_n_coco(self):
|
|
trainer = Trainer("test_transfer_learning_yolox_n_coco")
|
|
trainer = Trainer("test_transfer_learning_yolox_n_coco")
|
|
model = models.get(Models.YOLOX_N, **self.coco_pretrained_ckpt_params, num_classes=5)
|
|
model = models.get(Models.YOLOX_N, **self.coco_pretrained_ckpt_params, num_classes=5)
|