diff --git a/focoos/data/catalog/catalog.py b/focoos/data/catalog/catalog.py index 52891af3..1b8b6fe7 100644 --- a/focoos/data/catalog/catalog.py +++ b/focoos/data/catalog/catalog.py @@ -85,6 +85,19 @@ class CatalogDataset: filter_empty=False, ), ), + CatalogDataset( + name="coco_2017_cls", + task=Task.CLASSIFICATION, + train_split=CatalogSplit( + image_root="coco/train2017", + json_file="coco/annotations/instances_train2017.json", + ), + val_split=CatalogSplit( + image_root="coco/val2017", + json_file="coco/annotations/instances_val2017.json", + filter_empty=False, + ), + ), CatalogDataset( name="coco_2017_instance", task=Task.INSTANCE_SEGMENTATION, @@ -131,6 +144,7 @@ def _load_dataset_split( split_name: str, split: CatalogSplit, task: Task, + split_type: DatasetSplitType, root=DATASETS_DIR, ) -> DictDataset: """ @@ -152,7 +166,7 @@ def get_path(root, path): task=task, ) - if task in [Task.DETECTION, Task.INSTANCE_SEGMENTATION, Task.KEYPOINT]: + if task in [Task.DETECTION, Task.INSTANCE_SEGMENTATION, Task.KEYPOINT, Task.CLASSIFICATION]: dataset_dict = load_coco_json(json_file_path, image_root_path, metadata, task=task) if split.filter_empty: dataset_dict = filter_images_with_only_crowd_annotations(dataset_dicts=dataset_dict) @@ -171,7 +185,7 @@ def get_path(root, path): raise ValueError(f"Unknown task {task}") metadata.count = len(dataset_dict) - return DictDataset(dataset_dict, task=task, metadata=metadata) + return DictDataset(dataset_dict, task=task, metadata=metadata, split_type=split_type) def get_dataset_split(name: str, split: DatasetSplitType, datasets_root=DATASETS_DIR) -> DictDataset: @@ -192,4 +206,4 @@ def get_dataset_split(name: str, split: DatasetSplitType, datasets_root=DATASETS else: raise ValueError(f"Unknown split {split}") - return _load_dataset_split(split_name, entry, ds.task, datasets_root) + return _load_dataset_split(split_name=split_name, split=entry, task=ds.task, split_type=split, root=datasets_root) diff --git a/focoos/infer/runtimes/torchscript.py b/focoos/infer/runtimes/torchscript.py index ac0c5c15..619e0da5 100644 --- a/focoos/infer/runtimes/torchscript.py +++ b/focoos/infer/runtimes/torchscript.py @@ -49,7 +49,9 @@ def __init__( if self.opts.warmup_iter > 0: size = ( - self.model_info.im_size if self.model_info.task == Task.DETECTION and self.model_info.im_size else 640 + self.model_info.im_size + if self.model_info.task in [Task.DETECTION, Task.CLASSIFICATION] and self.model_info.im_size + else 640 ) logger.info(f"⏱️ Warming up model {self.model_info.name} on {self.device}, size: {size}x{size}..") with torch.no_grad(): diff --git a/focoos/model_registry/fai-cls-m-coco.json b/focoos/model_registry/fai-cls-m-coco.json index 40b6f3a8..87ff813a 100644 --- a/focoos/model_registry/fai-cls-m-coco.json +++ b/focoos/model_registry/fai-cls-m-coco.json @@ -89,23 +89,16 @@ "num_classes": 80, "backbone_config": { "use_pretrained": false, + "backbone_url": "https://public.focoos.ai/pretrained_models/backbones/stdc_small.pth", "model_type": "stdc", "in_chans": 3, - "base": 64, - "layers": [ - 4, - 5, - 3 - ], "out_features": [ "res2", "res3", "res4", "res5" ], - "block_num": 4, - "block_type": "cat", - "size": "large", + "size": "small", "use_conv_last": false }, "resolution": 224, @@ -138,252 +131,283 @@ "weights_uri": "https://public.focoos.ai/pretrained_models/fai-cls-m-coco/model_final.pth", "val_dataset": "coco_2017_det", "val_metrics": { - "classification/F1": 66.983, - "classification/F1-airplane": 92.3913, - "classification/F1-apple": 54.2636, - "classification/F1-backpack": 42.4691, - "classification/F1-banana": 65.1429, - "classification/F1-baseball bat": 76.4706, - "classification/F1-baseball glove": 84.3602, - "classification/F1-bear": 87.7551, - "classification/F1-bed": 76.3636, - "classification/F1-bench": 54.6392, - "classification/F1-bicycle": 62.3482, - "classification/F1-bird": 63.7168, - "classification/F1-boat": 77.9343, - "classification/F1-book": 54.5918, - "classification/F1-bottle": 54.7368, - "classification/F1-bowl": 56.8421, - "classification/F1-broccoli": 74.6667, - "classification/F1-bus": 79.5322, - "classification/F1-cake": 65.6085, - "classification/F1-car": 68.8822, - "classification/F1-carrot": 60.274, - "classification/F1-cat": 81.1321, - "classification/F1-cell phone": 41.0714, - "classification/F1-chair": 64.7737, - "classification/F1-clock": 68.3908, - "classification/F1-couch": 73.8916, - "classification/F1-cow": 62.3188, - "classification/F1-cup": 56.2414, - "classification/F1-dining table": 67.8243, - "classification/F1-dog": 73.8854, - "classification/F1-donut": 62.2951, - "classification/F1-elephant": 93.8547, - "classification/F1-fire hydrant": 70.7483, - "classification/F1-fork": 48.4375, - "classification/F1-frisbee": 68.5083, - "classification/F1-giraffe": 96.5174, + "classification/F1": 61.9222, + "classification/F1-airplane": 81.7734, + "classification/F1-apple": 45.8015, + "classification/F1-backpack": 35.1807, + "classification/F1-banana": 57.5916, + "classification/F1-baseball bat": 71.2042, + "classification/F1-baseball glove": 81.4815, + "classification/F1-bear": 83.5165, + "classification/F1-bed": 63.9405, + "classification/F1-bench": 45.4545, + "classification/F1-bicycle": 54.918, + "classification/F1-bird": 57.5221, + "classification/F1-boat": 74.1071, + "classification/F1-book": 48.2916, + "classification/F1-bottle": 44.6178, + "classification/F1-bowl": 50.8287, + "classification/F1-broccoli": 77.027, + "classification/F1-bus": 69.4362, + "classification/F1-cake": 53.2609, + "classification/F1-car": 66.3616, + "classification/F1-carrot": 45.5172, + "classification/F1-cat": 78.481, + "classification/F1-cell phone": 44.6927, + "classification/F1-chair": 60.4496, + "classification/F1-clock": 67.8161, + "classification/F1-couch": 65.9898, + "classification/F1-cow": 60.4651, + "classification/F1-cup": 50.2674, + "classification/F1-dining table": 65.7229, + "classification/F1-dog": 63.5762, + "classification/F1-donut": 52.9412, + "classification/F1-elephant": 91.6201, + "classification/F1-fire hydrant": 67.1429, + "classification/F1-fork": 37.2093, + "classification/F1-frisbee": 71.8954, + "classification/F1-giraffe": 93.9394, "classification/F1-hair drier": 0.0, - "classification/F1-handbag": 47.8326, - "classification/F1-horse": 81.4815, - "classification/F1-hot dog": 34.9206, - "classification/F1-keyboard": 73.4043, - "classification/F1-kite": 88.5057, - "classification/F1-knife": 42.5532, - "classification/F1-laptop": 76.0563, - "classification/F1-microwave": 52.4272, - "classification/F1-motorcycle": 79.2982, - "classification/F1-mouse": 72.7273, - "classification/F1-orange": 61.8705, - "classification/F1-oven": 71.5517, - "classification/F1-parking meter": 56.6038, - "classification/F1-person": 92.0178, - "classification/F1-pizza": 74.6154, - "classification/F1-potted plant": 45.977, - "classification/F1-refrigerator": 62.0, - "classification/F1-remote": 56.7164, - "classification/F1-sandwich": 51.8519, - "classification/F1-scissors": 58.5366, - "classification/F1-sheep": 70.5882, - "classification/F1-sink": 79.5455, - "classification/F1-skateboard": 86.3436, - "classification/F1-skis": 81.4815, - "classification/F1-snowboard": 61.9048, - "classification/F1-spoon": 32.4786, - "classification/F1-sports ball": 53.9474, - "classification/F1-stop sign": 55.0336, - "classification/F1-suitcase": 55.7576, - "classification/F1-surfboard": 85.2564, - "classification/F1-teddy bear": 77.1084, - "classification/F1-tennis racket": 94.2598, - "classification/F1-tie": 72.4138, - "classification/F1-toaster": 0.0, - "classification/F1-toilet": 88.0734, - "classification/F1-toothbrush": 32.7273, - "classification/F1-traffic light": 61.0169, - "classification/F1-train": 87.0662, - "classification/F1-truck": 57.7006, - "classification/F1-tv": 72.7273, - "classification/F1-umbrella": 70.6294, - "classification/F1-vase": 62.2951, - "classification/F1-wine glass": 55.615, - "classification/F1-zebra": 96.9697, - "classification/Precision": 72.9971, - "classification/Precision-airplane": 97.7011, - "classification/Precision-apple": 66.0377, - "classification/Precision-backpack": 48.5876, - "classification/Precision-banana": 79.1667, - "classification/Precision-baseball bat": 72.8972, - "classification/Precision-baseball glove": 80.1802, - "classification/Precision-bear": 87.7551, - "classification/Precision-bed": 83.3333, - "classification/Precision-bench": 69.281, - "classification/Precision-bicycle": 78.5714, - "classification/Precision-bird": 71.2871, - "classification/Precision-boat": 90.2174, - "classification/Precision-book": 66.0494, - "classification/Precision-bottle": 63.6364, - "classification/Precision-bowl": 63.2812, - "classification/Precision-broccoli": 70.8861, - "classification/Precision-bus": 88.8889, - "classification/Precision-cake": 95.3846, - "classification/Precision-car": 57.7947, - "classification/Precision-carrot": 67.6923, - "classification/Precision-cat": 96.2687, - "classification/Precision-cell phone": 56.5574, - "classification/Precision-chair": 66.7276, - "classification/Precision-clock": 82.6389, - "classification/Precision-couch": 71.09, - "classification/Precision-cow": 84.3137, - "classification/Precision-cup": 60.472, - "classification/Precision-dining table": 69.4561, - "classification/Precision-dog": 84.6715, - "classification/Precision-donut": 63.3333, - "classification/Precision-elephant": 93.3333, - "classification/Precision-fire hydrant": 85.2459, - "classification/Precision-fork": 61.3861, - "classification/Precision-frisbee": 63.9175, - "classification/Precision-giraffe": 97.0, + "classification/F1-handbag": 46.9027, + "classification/F1-horse": 74.4589, + "classification/F1-hot dog": 36.1111, + "classification/F1-keyboard": 72.0812, + "classification/F1-kite": 79.2899, + "classification/F1-knife": 46.1538, + "classification/F1-laptop": 69.1489, + "classification/F1-microwave": 40.4255, + "classification/F1-motorcycle": 72.2022, + "classification/F1-mouse": 71.5909, + "classification/F1-orange": 55.7143, + "classification/F1-oven": 63.964, + "classification/F1-parking meter": 46.1538, + "classification/F1-person": 90.5063, + "classification/F1-pizza": 73.8462, + "classification/F1-potted plant": 46.2633, + "classification/F1-refrigerator": 59.5745, + "classification/F1-remote": 48.3333, + "classification/F1-sandwich": 48.0769, + "classification/F1-scissors": 32.4324, + "classification/F1-sheep": 73.6, + "classification/F1-sink": 72.381, + "classification/F1-skateboard": 79.452, + "classification/F1-skis": 79.0909, + "classification/F1-snowboard": 62.5, + "classification/F1-spoon": 32.2034, + "classification/F1-sports ball": 41.5584, + "classification/F1-stop sign": 61.194, + "classification/F1-suitcase": 45.7831, + "classification/F1-surfboard": 84.2105, + "classification/F1-teddy bear": 67.1233, + "classification/F1-tennis racket": 91.018, + "classification/F1-tie": 67.5, + "classification/F1-toaster": 15.3846, + "classification/F1-toilet": 84.7682, + "classification/F1-toothbrush": 22.7273, + "classification/F1-traffic light": 57.8313, + "classification/F1-train": 81.7568, + "classification/F1-truck": 53.9554, + "classification/F1-tv": 65.3595, + "classification/F1-umbrella": 65.5052, + "classification/F1-vase": 52.7607, + "classification/F1-wine glass": 43.3735, + "classification/F1-zebra": 95.858, + "classification/Precision": 68.6875, + "classification/Precision-airplane": 78.3019, + "classification/Precision-apple": 54.5455, + "classification/Precision-backpack": 39.0374, + "classification/Precision-banana": 62.5, + "classification/Precision-baseball bat": 72.3404, + "classification/Precision-baseball glove": 75.8621, + "classification/Precision-bear": 90.4762, + "classification/Precision-bed": 71.6667, + "classification/Precision-bench": 55.9006, + "classification/Precision-bicycle": 70.5263, + "classification/Precision-bird": 64.3564, + "classification/Precision-boat": 80.5825, + "classification/Precision-book": 50.7177, + "classification/Precision-bottle": 54.5802, + "classification/Precision-bowl": 60.262, + "classification/Precision-broccoli": 74.026, + "classification/Precision-bus": 79.0541, + "classification/Precision-cake": 81.6667, + "classification/Precision-car": 56.0567, + "classification/Precision-carrot": 51.5625, + "classification/Precision-cat": 93.9394, + "classification/Precision-cell phone": 55.5556, + "classification/Precision-chair": 58.4541, + "classification/Precision-clock": 81.9444, + "classification/Precision-couch": 65.3266, + "classification/Precision-cow": 92.8571, + "classification/Precision-cup": 52.514, + "classification/Precision-dining table": 66.5984, + "classification/Precision-dog": 76.8, + "classification/Precision-donut": 67.5, + "classification/Precision-elephant": 91.1111, + "classification/Precision-fire hydrant": 87.037, + "classification/Precision-fork": 46.6019, + "classification/Precision-frisbee": 79.7101, + "classification/Precision-giraffe": 95.8763, "classification/Precision-hair drier": 0.0, - "classification/Precision-handbag": 42.4403, - "classification/Precision-horse": 86.087, - "classification/Precision-hot dog": 91.6667, - "classification/Precision-keyboard": 84.1463, - "classification/Precision-kite": 92.7711, - "classification/Precision-knife": 47.2973, - "classification/Precision-laptop": 78.4884, - "classification/Precision-microwave": 55.102, - "classification/Precision-motorcycle": 89.6825, - "classification/Precision-mouse": 77.9221, - "classification/Precision-orange": 79.6296, - "classification/Precision-oven": 70.9402, - "classification/Precision-parking meter": 93.75, - "classification/Precision-person": 88.2674, - "classification/Precision-pizza": 90.6542, - "classification/Precision-potted plant": 67.4157, - "classification/Precision-refrigerator": 62.6263, - "classification/Precision-remote": 61.7886, - "classification/Precision-sandwich": 47.4576, - "classification/Precision-scissors": 92.3077, - "classification/Precision-sheep": 77.7778, - "classification/Precision-sink": 84.8485, - "classification/Precision-skateboard": 98.0, - "classification/Precision-skis": 91.6667, - "classification/Precision-snowboard": 50.6493, - "classification/Precision-spoon": 46.9136, - "classification/Precision-sports ball": 60.7407, - "classification/Precision-stop sign": 51.25, - "classification/Precision-suitcase": 76.6667, - "classification/Precision-surfboard": 81.5951, - "classification/Precision-teddy bear": 88.8889, - "classification/Precision-tennis racket": 95.1219, - "classification/Precision-tie": 96.5517, - "classification/Precision-toaster": 0.0, - "classification/Precision-toilet": 80.8989, - "classification/Precision-toothbrush": 42.8571, - "classification/Precision-traffic light": 47.6471, - "classification/Precision-train": 86.25, - "classification/Precision-truck": 63.0332, - "classification/Precision-tv": 68.6695, - "classification/Precision-umbrella": 90.1786, - "classification/Precision-vase": 56.5476, - "classification/Precision-wine glass": 67.5325, - "classification/Precision-zebra": 100.0, - "classification/Recall": 61.8844, - "classification/Recall-airplane": 87.6289, - "classification/Recall-apple": 46.0526, - "classification/Recall-backpack": 37.7193, - "classification/Recall-banana": 55.3398, - "classification/Recall-baseball bat": 80.4124, - "classification/Recall-baseball glove": 89.0, - "classification/Recall-bear": 87.7551, - "classification/Recall-bed": 70.4698, - "classification/Recall-bench": 45.1064, - "classification/Recall-bicycle": 51.6779, - "classification/Recall-bird": 57.6, + "classification/Precision-handbag": 41.1917, + "classification/Precision-horse": 83.4951, + "classification/Precision-hot dog": 61.9048, + "classification/Precision-keyboard": 78.022, + "classification/Precision-kite": 85.8974, + "classification/Precision-knife": 45.9016, + "classification/Precision-laptop": 67.3575, + "classification/Precision-microwave": 47.5, + "classification/Precision-motorcycle": 84.7458, + "classification/Precision-mouse": 71.5909, + "classification/Precision-orange": 70.9091, + "classification/Precision-oven": 66.3551, + "classification/Precision-parking meter": 80.0, + "classification/Precision-person": 85.9432, + "classification/Precision-pizza": 89.7196, + "classification/Precision-potted plant": 59.633, + "classification/Precision-refrigerator": 64.3678, + "classification/Precision-remote": 61.0526, + "classification/Precision-sandwich": 45.4545, + "classification/Precision-scissors": 66.6667, + "classification/Precision-sheep": 76.6667, + "classification/Precision-sink": 89.0625, + "classification/Precision-skateboard": 94.5652, + "classification/Precision-skis": 87.0, + "classification/Precision-snowboard": 55.5556, + "classification/Precision-spoon": 45.7831, + "classification/Precision-sports ball": 77.4194, + "classification/Precision-stop sign": 63.0769, + "classification/Precision-suitcase": 62.2951, + "classification/Precision-surfboard": 88.2353, + "classification/Precision-teddy bear": 94.2308, + "classification/Precision-tennis racket": 91.018, + "classification/Precision-tie": 85.2632, + "classification/Precision-toaster": 20.0, + "classification/Precision-toilet": 83.6601, + "classification/Precision-toothbrush": 50.0, + "classification/Precision-traffic light": 46.9055, + "classification/Precision-train": 87.0504, + "classification/Precision-truck": 54.7325, + "classification/Precision-tv": 59.5238, + "classification/Precision-umbrella": 83.1858, + "classification/Precision-vase": 45.5026, + "classification/Precision-wine glass": 64.2857, + "classification/Precision-zebra": 96.4286, + "classification/Recall": 56.3701, + "classification/Recall-airplane": 85.567, + "classification/Recall-apple": 39.4737, + "classification/Recall-backpack": 32.0175, + "classification/Recall-banana": 53.3981, + "classification/Recall-baseball bat": 70.1031, + "classification/Recall-baseball glove": 88.0, + "classification/Recall-bear": 77.551, + "classification/Recall-bed": 57.7181, + "classification/Recall-bench": 38.2979, + "classification/Recall-bicycle": 44.9664, + "classification/Recall-bird": 52.0, "classification/Recall-boat": 68.595, - "classification/Recall-book": 46.5217, - "classification/Recall-bottle": 48.0211, - "classification/Recall-bowl": 51.5924, - "classification/Recall-broccoli": 78.8732, - "classification/Recall-bus": 71.9577, - "classification/Recall-cake": 50.0, - "classification/Recall-car": 85.2336, - "classification/Recall-carrot": 54.321, - "classification/Recall-cat": 70.1087, - "classification/Recall-cell phone": 32.243, - "classification/Recall-chair": 62.931, - "classification/Recall-clock": 58.3333, - "classification/Recall-couch": 76.9231, - "classification/Recall-cow": 49.4253, - "classification/Recall-cup": 52.5641, - "classification/Recall-dining table": 66.2675, - "classification/Recall-dog": 65.5367, - "classification/Recall-donut": 61.2903, - "classification/Recall-elephant": 94.382, - "classification/Recall-fire hydrant": 60.4651, - "classification/Recall-fork": 40.0, - "classification/Recall-frisbee": 73.8095, - "classification/Recall-giraffe": 96.0396, + "classification/Recall-book": 46.087, + "classification/Recall-bottle": 37.7309, + "classification/Recall-bowl": 43.949, + "classification/Recall-broccoli": 80.2817, + "classification/Recall-bus": 61.9048, + "classification/Recall-cake": 39.5161, + "classification/Recall-car": 81.3084, + "classification/Recall-carrot": 40.7407, + "classification/Recall-cat": 67.3913, + "classification/Recall-cell phone": 37.3832, + "classification/Recall-chair": 62.5862, + "classification/Recall-clock": 57.8431, + "classification/Recall-couch": 66.6667, + "classification/Recall-cow": 44.8276, + "classification/Recall-cup": 48.2051, + "classification/Recall-dining table": 64.8703, + "classification/Recall-dog": 54.2373, + "classification/Recall-donut": 43.5484, + "classification/Recall-elephant": 92.1348, + "classification/Recall-fire hydrant": 54.6512, + "classification/Recall-fork": 30.9677, + "classification/Recall-frisbee": 65.4762, + "classification/Recall-giraffe": 92.0792, "classification/Recall-hair drier": 0.0, - "classification/Recall-handbag": 54.7945, - "classification/Recall-horse": 77.3438, - "classification/Recall-hot dog": 21.5686, - "classification/Recall-keyboard": 65.0943, - "classification/Recall-kite": 84.6154, - "classification/Recall-knife": 38.674, - "classification/Recall-laptop": 73.7705, - "classification/Recall-microwave": 50.0, - "classification/Recall-motorcycle": 71.0692, - "classification/Recall-mouse": 68.1818, - "classification/Recall-orange": 50.5882, - "classification/Recall-oven": 72.1739, - "classification/Recall-parking meter": 40.5405, - "classification/Recall-person": 96.101, - "classification/Recall-pizza": 63.3987, - "classification/Recall-potted plant": 34.8837, - "classification/Recall-refrigerator": 61.3861, - "classification/Recall-remote": 52.4138, - "classification/Recall-sandwich": 57.1429, - "classification/Recall-scissors": 42.8571, - "classification/Recall-sheep": 64.6154, - "classification/Recall-sink": 74.8663, - "classification/Recall-skateboard": 77.1654, - "classification/Recall-skis": 73.3333, - "classification/Recall-snowboard": 79.5918, + "classification/Recall-handbag": 54.4521, + "classification/Recall-horse": 67.1875, + "classification/Recall-hot dog": 25.4902, + "classification/Recall-keyboard": 66.9811, + "classification/Recall-kite": 73.6264, + "classification/Recall-knife": 46.4088, + "classification/Recall-laptop": 71.0383, + "classification/Recall-microwave": 35.1852, + "classification/Recall-motorcycle": 62.8931, + "classification/Recall-mouse": 71.5909, + "classification/Recall-orange": 45.8824, + "classification/Recall-oven": 61.7391, + "classification/Recall-parking meter": 32.4324, + "classification/Recall-person": 95.5811, + "classification/Recall-pizza": 62.7451, + "classification/Recall-potted plant": 37.7907, + "classification/Recall-refrigerator": 55.4455, + "classification/Recall-remote": 40.0, + "classification/Recall-sandwich": 51.0204, + "classification/Recall-scissors": 21.4286, + "classification/Recall-sheep": 70.7692, + "classification/Recall-sink": 60.9626, + "classification/Recall-skateboard": 68.5039, + "classification/Recall-skis": 72.5, + "classification/Recall-snowboard": 71.4286, "classification/Recall-spoon": 24.8366, - "classification/Recall-sports ball": 48.5207, + "classification/Recall-sports ball": 28.4024, "classification/Recall-stop sign": 59.4203, - "classification/Recall-suitcase": 43.8095, - "classification/Recall-surfboard": 89.2617, - "classification/Recall-teddy bear": 68.0851, - "classification/Recall-tennis racket": 93.4132, - "classification/Recall-tie": 57.931, - "classification/Recall-toaster": 0.0, - "classification/Recall-toilet": 96.6443, - "classification/Recall-toothbrush": 26.4706, - "classification/Recall-traffic light": 84.8168, - "classification/Recall-train": 87.8981, + "classification/Recall-suitcase": 36.1905, + "classification/Recall-surfboard": 80.5369, + "classification/Recall-teddy bear": 52.1277, + "classification/Recall-tennis racket": 91.018, + "classification/Recall-tie": 55.8621, + "classification/Recall-toaster": 12.5, + "classification/Recall-toilet": 85.906, + "classification/Recall-toothbrush": 14.7059, + "classification/Recall-traffic light": 75.3927, + "classification/Recall-train": 77.0701, "classification/Recall-truck": 53.2, - "classification/Recall-tv": 77.2947, - "classification/Recall-umbrella": 58.046, - "classification/Recall-vase": 69.3431, - "classification/Recall-wine glass": 47.2727, - "classification/Recall-zebra": 94.1176 + "classification/Recall-tv": 72.4638, + "classification/Recall-umbrella": 54.023, + "classification/Recall-vase": 62.7737, + "classification/Recall-wine glass": 32.7273, + "classification/Recall-zebra": 95.2941 }, - "focoos_version": "0.19.1", - "latency": [], + "focoos_version": "0.20.2", + "latency": [ + { + "fps": 588, + "engine": "torchscript", + "min": 1.568, + "max": 2.098, + "mean": 1.699, + "std": 0.096, + "im_size": 224, + "device": "Tesla T4" + }, + { + "fps": 568, + "engine": "onnx.CUDAExecutionProvider", + "min": 1.733, + "max": 1.834, + "mean": 1.76, + "std": 0.021, + "im_size": 224, + "device": "Tesla T4" + }, + { + "fps": 1332, + "engine": "onnx.TensorrtExecutionProvider", + "min": 0.739, + "max": 0.784, + "mean": 0.75, + "std": 0.01, + "im_size": 224, + "device": "Tesla T4" + } + ], "training_info": null, "updated_at": null } diff --git a/focoos/model_registry/fai-cls-n-coco.json b/focoos/model_registry/fai-cls-n-coco.json index c3b1abd1..8faa5a5f 100644 --- a/focoos/model_registry/fai-cls-n-coco.json +++ b/focoos/model_registry/fai-cls-n-coco.json @@ -91,21 +91,14 @@ "use_pretrained": false, "model_type": "stdc", "in_chans": 3, - "base": 64, - "layers": [ - 4, - 5, - 3 - ], "out_features": [ "res2", "res3", "res4", "res5" ], - "block_num": 4, "block_type": "cat", - "size": "small", + "size": "nano", "use_conv_last": false }, "resolution": 224, @@ -133,257 +126,278 @@ "ref": null, "focoos_model": "fai-cls-n-coco", "status": "TRAINING_COMPLETED", - "description": "A classification model", + "description": "Very tiny classification model optimized for Arduino Nicla Vision", "train_args": null, "weights_uri": "https://public.focoos.ai/pretrained_models/fai-cls-n-coco/model_final.pth", - "val_dataset": "coco_2017_det", "val_metrics": { - "classification/F1": 48.6569, - "classification/F1-airplane": 75.5102, - "classification/F1-apple": 35.9375, - "classification/F1-backpack": 25.3602, - "classification/F1-banana": 29.2135, - "classification/F1-baseball bat": 65.7143, - "classification/F1-baseball glove": 81.3726, - "classification/F1-bear": 61.6822, - "classification/F1-bed": 52.3438, - "classification/F1-bench": 24.8485, - "classification/F1-bicycle": 30.3922, - "classification/F1-bird": 42.2018, - "classification/F1-boat": 60.3774, - "classification/F1-book": 39.3782, - "classification/F1-bottle": 39.3027, - "classification/F1-bowl": 51.2397, - "classification/F1-broccoli": 63.6943, - "classification/F1-bus": 58.4615, - "classification/F1-cake": 22.3684, - "classification/F1-car": 62.2185, - "classification/F1-carrot": 31.5068, - "classification/F1-cat": 59.8007, - "classification/F1-cell phone": 24.026, - "classification/F1-chair": 51.4233, - "classification/F1-clock": 57.8313, - "classification/F1-couch": 52.2796, - "classification/F1-cow": 24.5283, - "classification/F1-cup": 46.7316, - "classification/F1-dining table": 59.4843, - "classification/F1-dog": 19.5122, - "classification/F1-donut": 25.8065, - "classification/F1-elephant": 64.9573, - "classification/F1-fire hydrant": 33.0275, - "classification/F1-fork": 24.0343, - "classification/F1-frisbee": 49.6454, - "classification/F1-giraffe": 92.0635, + "classification/F1": 51.26315689086914, + "classification/F1-airplane": 76.02339172363281, + "classification/F1-apple": 21.5053768157959, + "classification/F1-backpack": 10.9375, + "classification/F1-banana": 30.534351348876953, + "classification/F1-baseball bat": 64.0884017944336, + "classification/F1-baseball glove": 82.12560272216797, + "classification/F1-bear": 69.13580322265625, + "classification/F1-bed": 56.704978942871094, + "classification/F1-bench": 19.858156204223633, + "classification/F1-bicycle": 34.55497360229492, + "classification/F1-bird": 37.2670783996582, + "classification/F1-boat": 59.330142974853516, + "classification/F1-book": 40.70351791381836, + "classification/F1-bottle": 38.27751541137695, + "classification/F1-bowl": 49.50495147705078, + "classification/F1-broccoli": 66.66667175292969, + "classification/F1-bus": 67.85713958740234, + "classification/F1-cake": 29.67742156982422, + "classification/F1-car": 65.16854095458984, + "classification/F1-carrot": 24.77876091003418, + "classification/F1-cat": 61.875003814697266, + "classification/F1-cell phone": 10.833333015441895, + "classification/F1-chair": 53.427066802978516, + "classification/F1-clock": 57.142860412597656, + "classification/F1-couch": 52.887542724609375, + "classification/F1-cow": 45.390071868896484, + "classification/F1-cup": 46.44295120239258, + "classification/F1-dining table": 60.168697357177734, + "classification/F1-dog": 38.427947998046875, + "classification/F1-donut": 25.97402572631836, + "classification/F1-elephant": 84.61538696289062, + "classification/F1-fire hydrant": 40.6779670715332, + "classification/F1-fork": 40.74074172973633, + "classification/F1-frisbee": 53.23741149902344, + "classification/F1-giraffe": 92.6315689086914, "classification/F1-hair drier": 0.0, - "classification/F1-handbag": 38.6087, - "classification/F1-horse": 42.5287, - "classification/F1-hot dog": 14.2857, - "classification/F1-keyboard": 66.6667, - "classification/F1-kite": 63.0137, - "classification/F1-knife": 29.8932, - "classification/F1-laptop": 54.0984, - "classification/F1-microwave": 25.3165, - "classification/F1-motorcycle": 63.4538, - "classification/F1-mouse": 63.75, - "classification/F1-orange": 46.1538, - "classification/F1-oven": 51.0417, - "classification/F1-parking meter": 0.0, - "classification/F1-person": 89.2766, - "classification/F1-pizza": 66.1417, - "classification/F1-potted plant": 30.9734, - "classification/F1-refrigerator": 51.6854, - "classification/F1-remote": 27.1739, - "classification/F1-sandwich": 34.6369, + "classification/F1-handbag": 31.421445846557617, + "classification/F1-horse": 56.7164192199707, + "classification/F1-hot dog": 10.169490814208984, + "classification/F1-keyboard": 62.14689254760742, + "classification/F1-kite": 71.5231704711914, + "classification/F1-knife": 41.54302978515625, + "classification/F1-laptop": 47.01492691040039, + "classification/F1-microwave": 38.55421829223633, + "classification/F1-motorcycle": 63.565895080566406, + "classification/F1-mouse": 61.03895950317383, + "classification/F1-orange": 37.7358512878418, + "classification/F1-oven": 57.53424835205078, + "classification/F1-parking meter": 5.263157844543457, + "classification/F1-person": 88.253173828125, + "classification/F1-pizza": 71.37254333496094, + "classification/F1-potted plant": 38.55421829223633, + "classification/F1-refrigerator": 51.53374481201172, + "classification/F1-remote": 26.73796844482422, + "classification/F1-sandwich": 38.509315490722656, "classification/F1-scissors": 0.0, - "classification/F1-sheep": 47.4227, - "classification/F1-sink": 63.4615, - "classification/F1-skateboard": 56.9893, - "classification/F1-skis": 72.0379, - "classification/F1-snowboard": 49.6241, - "classification/F1-spoon": 26.0504, - "classification/F1-sports ball": 35.2941, - "classification/F1-stop sign": 58.3333, - "classification/F1-suitcase": 12.5, - "classification/F1-surfboard": 75.3333, - "classification/F1-teddy bear": 46.6165, - "classification/F1-tennis racket": 80.0, - "classification/F1-tie": 47.0588, + "classification/F1-sheep": 54.90196228027344, + "classification/F1-sink": 67.18749237060547, + "classification/F1-skateboard": 70.27027130126953, + "classification/F1-skis": 77.11863708496094, + "classification/F1-snowboard": 50.5747184753418, + "classification/F1-spoon": 31.372547149658203, + "classification/F1-sports ball": 51.12359619140625, + "classification/F1-stop sign": 60.0, + "classification/F1-suitcase": 5.504587650299072, + "classification/F1-surfboard": 75.73529052734375, + "classification/F1-teddy bear": 43.54838943481445, + "classification/F1-tennis racket": 83.60128784179688, + "classification/F1-tie": 49.760765075683594, "classification/F1-toaster": 0.0, - "classification/F1-toilet": 75.0809, - "classification/F1-toothbrush": 0.0, - "classification/F1-traffic light": 54.7414, - "classification/F1-train": 79.0541, - "classification/F1-truck": 48.6922, - "classification/F1-tv": 56.621, - "classification/F1-umbrella": 27.23, - "classification/F1-vase": 47.678, - "classification/F1-wine glass": 23.1293, - "classification/F1-zebra": 92.8571, - "classification/Precision": 58.4791, - "classification/Precision-airplane": 74.7475, - "classification/Precision-apple": 44.2308, - "classification/Precision-backpack": 36.9748, - "classification/Precision-banana": 34.6667, - "classification/Precision-baseball bat": 61.0619, - "classification/Precision-baseball glove": 79.8077, - "classification/Precision-bear": 56.8966, - "classification/Precision-bed": 62.6168, - "classification/Precision-bench": 43.1579, - "classification/Precision-bicycle": 56.3636, - "classification/Precision-bird": 49.4624, - "classification/Precision-boat": 70.3297, - "classification/Precision-book": 48.7179, - "classification/Precision-bottle": 49.2063, - "classification/Precision-bowl": 53.2646, - "classification/Precision-broccoli": 58.1395, - "classification/Precision-bus": 69.8529, - "classification/Precision-cake": 60.7143, - "classification/Precision-car": 56.1747, - "classification/Precision-carrot": 35.3846, - "classification/Precision-cat": 76.9231, - "classification/Precision-cell phone": 39.3617, - "classification/Precision-chair": 55.0098, - "classification/Precision-clock": 75.0, - "classification/Precision-couch": 64.1791, - "classification/Precision-cow": 68.4211, - "classification/Precision-cup": 51.0638, - "classification/Precision-dining table": 55.2137, - "classification/Precision-dog": 71.4286, - "classification/Precision-donut": 38.7097, - "classification/Precision-elephant": 52.4138, - "classification/Precision-fire hydrant": 78.2609, - "classification/Precision-fork": 35.8974, - "classification/Precision-frisbee": 61.4035, - "classification/Precision-giraffe": 98.8636, + "classification/F1-toilet": 77.62237548828125, + "classification/F1-toothbrush": 24.390243530273438, + "classification/F1-traffic light": 55.17241287231445, + "classification/F1-train": 78.22877502441406, + "classification/F1-truck": 48.29059600830078, + "classification/F1-tv": 54.787235260009766, + "classification/F1-umbrella": 46.963565826416016, + "classification/F1-vase": 46.69603729248047, + "classification/F1-wine glass": 24.203821182250977, + "classification/F1-zebra": 93.97590637207031, + "classification/Precision": 66.83930969238281, + "classification/Precision-airplane": 87.83783721923828, + "classification/Precision-apple": 58.82352828979492, + "classification/Precision-backpack": 50.0, + "classification/Precision-banana": 71.42857360839844, + "classification/Precision-baseball bat": 69.04762268066406, + "classification/Precision-baseball glove": 79.43925476074219, + "classification/Precision-bear": 87.5, + "classification/Precision-bed": 66.07142639160156, + "classification/Precision-bench": 59.574466705322266, + "classification/Precision-bicycle": 78.57142639160156, + "classification/Precision-bird": 83.33333587646484, + "classification/Precision-boat": 70.45454406738281, + "classification/Precision-book": 48.21428680419922, + "classification/Precision-bottle": 48.3870964050293, + "classification/Precision-bowl": 51.3698616027832, + "classification/Precision-broccoli": 74.13793182373047, + "classification/Precision-bus": 77.55101776123047, + "classification/Precision-cake": 74.19355010986328, + "classification/Precision-car": 65.29080963134766, + "classification/Precision-carrot": 43.75, + "classification/Precision-cat": 72.79412078857422, + "classification/Precision-cell phone": 50.0, + "classification/Precision-chair": 54.48028564453125, + "classification/Precision-clock": 84.61538696289062, + "classification/Precision-couch": 64.92537689208984, + "classification/Precision-cow": 59.25925827026367, + "classification/Precision-cup": 48.73239517211914, + "classification/Precision-dining table": 56.71377944946289, + "classification/Precision-dog": 84.61538696289062, + "classification/Precision-donut": 66.66666412353516, + "classification/Precision-elephant": 98.50746154785156, + "classification/Precision-fire hydrant": 75.0, + "classification/Precision-fork": 39.053253173828125, + "classification/Precision-frisbee": 67.2727279663086, + "classification/Precision-giraffe": 98.87640380859375, "classification/Precision-hair drier": 0.0, - "classification/Precision-handbag": 39.2226, - "classification/Precision-horse": 80.4348, - "classification/Precision-hot dog": 80.0, - "classification/Precision-keyboard": 74.4186, - "classification/Precision-kite": 83.6364, - "classification/Precision-knife": 42.0, - "classification/Precision-laptop": 54.0984, - "classification/Precision-microwave": 40.0, - "classification/Precision-motorcycle": 87.7778, - "classification/Precision-mouse": 70.8333, - "classification/Precision-orange": 46.4286, - "classification/Precision-oven": 63.6364, - "classification/Precision-parking meter": 0.0, - "classification/Precision-person": 87.4333, - "classification/Precision-pizza": 83.1683, - "classification/Precision-potted plant": 64.8148, - "classification/Precision-refrigerator": 59.7403, - "classification/Precision-remote": 64.1026, - "classification/Precision-sandwich": 38.2716, + "classification/Precision-handbag": 57.79816436767578, + "classification/Precision-horse": 78.08219146728516, + "classification/Precision-hot dog": 37.5, + "classification/Precision-keyboard": 77.46479034423828, + "classification/Precision-kite": 90.0, + "classification/Precision-knife": 44.871795654296875, + "classification/Precision-laptop": 74.11764526367188, + "classification/Precision-microwave": 55.17241287231445, + "classification/Precision-motorcycle": 82.82828521728516, + "classification/Precision-mouse": 71.21212005615234, + "classification/Precision-orange": 95.23809814453125, + "classification/Precision-oven": 60.57692337036133, + "classification/Precision-parking meter": 100.0, + "classification/Precision-person": 85.10344696044922, + "classification/Precision-pizza": 89.21568298339844, + "classification/Precision-potted plant": 62.33766174316406, + "classification/Precision-refrigerator": 67.74193572998047, + "classification/Precision-remote": 59.52381134033203, + "classification/Precision-sandwich": 49.20634841918945, "classification/Precision-scissors": 0.0, - "classification/Precision-sheep": 71.875, - "classification/Precision-sink": 79.2, - "classification/Precision-skateboard": 89.8305, - "classification/Precision-skis": 83.5165, - "classification/Precision-snowboard": 39.2857, - "classification/Precision-spoon": 36.4706, - "classification/Precision-sports ball": 60.8696, - "classification/Precision-stop sign": 68.6274, - "classification/Precision-suitcase": 100.0, - "classification/Precision-surfboard": 74.8344, - "classification/Precision-teddy bear": 79.4872, - "classification/Precision-tennis racket": 94.3089, - "classification/Precision-tie": 54.5455, + "classification/Precision-sheep": 75.67567443847656, + "classification/Precision-sink": 65.48223114013672, + "classification/Precision-skateboard": 82.10526275634766, + "classification/Precision-skis": 78.44827270507812, + "classification/Precision-snowboard": 57.894737243652344, + "classification/Precision-spoon": 39.2156867980957, + "classification/Precision-sports ball": 48.66310119628906, + "classification/Precision-stop sign": 80.48780822753906, + "classification/Precision-suitcase": 75.0, + "classification/Precision-surfboard": 83.73983764648438, + "classification/Precision-teddy bear": 90.0, + "classification/Precision-tennis racket": 90.27777862548828, + "classification/Precision-tie": 81.25, "classification/Precision-toaster": 0.0, - "classification/Precision-toilet": 72.5, - "classification/Precision-toothbrush": 0.0, - "classification/Precision-traffic light": 46.5201, - "classification/Precision-train": 84.1727, - "classification/Precision-truck": 48.9879, - "classification/Precision-tv": 53.6797, - "classification/Precision-umbrella": 74.359, - "classification/Precision-vase": 41.3979, - "classification/Precision-wine glass": 45.9459, - "classification/Precision-zebra": 93.9759, - "classification/Recall": 41.6596, - "classification/Recall-airplane": 76.2887, - "classification/Recall-apple": 30.2632, - "classification/Recall-backpack": 19.2982, - "classification/Recall-banana": 25.2427, - "classification/Recall-baseball bat": 71.134, - "classification/Recall-baseball glove": 83.0, - "classification/Recall-bear": 67.3469, - "classification/Recall-bed": 44.9664, - "classification/Recall-bench": 17.4468, - "classification/Recall-bicycle": 20.8054, - "classification/Recall-bird": 36.8, - "classification/Recall-boat": 52.8926, - "classification/Recall-book": 33.0435, - "classification/Recall-bottle": 32.7177, - "classification/Recall-bowl": 49.3631, - "classification/Recall-broccoli": 70.4225, - "classification/Recall-bus": 50.2645, - "classification/Recall-cake": 13.7097, - "classification/Recall-car": 69.7196, - "classification/Recall-carrot": 28.3951, - "classification/Recall-cat": 48.913, - "classification/Recall-cell phone": 17.2897, - "classification/Recall-chair": 48.2759, - "classification/Recall-clock": 47.0588, - "classification/Recall-couch": 44.1026, - "classification/Recall-cow": 14.9425, - "classification/Recall-cup": 43.0769, - "classification/Recall-dining table": 64.4711, - "classification/Recall-dog": 11.2994, - "classification/Recall-donut": 19.3548, - "classification/Recall-elephant": 85.3933, - "classification/Recall-fire hydrant": 20.9302, - "classification/Recall-fork": 18.0645, - "classification/Recall-frisbee": 41.6667, - "classification/Recall-giraffe": 86.1386, + "classification/Precision-toilet": 81.02189636230469, + "classification/Precision-toothbrush": 71.42857360839844, + "classification/Precision-traffic light": 61.1464958190918, + "classification/Precision-train": 92.98245239257812, + "classification/Precision-truck": 51.834861755371094, + "classification/Precision-tv": 60.946746826171875, + "classification/Precision-umbrella": 79.45205688476562, + "classification/Precision-vase": 58.88888931274414, + "classification/Precision-wine glass": 40.425533294677734, + "classification/Precision-zebra": 96.29629516601562, + "classification/Recall": 41.574649810791016, + "classification/Recall-airplane": 67.01030731201172, + "classification/Recall-apple": 13.1578950881958, + "classification/Recall-backpack": 6.140350818634033, + "classification/Recall-banana": 19.417476654052734, + "classification/Recall-baseball bat": 59.79381561279297, + "classification/Recall-baseball glove": 85.0, + "classification/Recall-bear": 57.14285659790039, + "classification/Recall-bed": 49.6644287109375, + "classification/Recall-bench": 11.91489315032959, + "classification/Recall-bicycle": 22.14765167236328, + "classification/Recall-bird": 24.0, + "classification/Recall-boat": 51.23966979980469, + "classification/Recall-book": 35.21739196777344, + "classification/Recall-bottle": 31.662269592285156, + "classification/Recall-bowl": 47.77070236206055, + "classification/Recall-broccoli": 60.56338119506836, + "classification/Recall-bus": 60.31745910644531, + "classification/Recall-cake": 18.54838752746582, + "classification/Recall-car": 65.0467300415039, + "classification/Recall-carrot": 17.283950805664062, + "classification/Recall-cat": 53.80434799194336, + "classification/Recall-cell phone": 6.074766159057617, + "classification/Recall-chair": 52.41379165649414, + "classification/Recall-clock": 43.13725662231445, + "classification/Recall-couch": 44.61538314819336, + "classification/Recall-cow": 36.78160858154297, + "classification/Recall-cup": 44.35897445678711, + "classification/Recall-dining table": 64.07185363769531, + "classification/Recall-dog": 24.85875701904297, + "classification/Recall-donut": 16.129032135009766, + "classification/Recall-elephant": 74.15730285644531, + "classification/Recall-fire hydrant": 27.9069766998291, + "classification/Recall-fork": 42.58064651489258, + "classification/Recall-frisbee": 44.0476188659668, + "classification/Recall-giraffe": 87.12871551513672, "classification/Recall-hair drier": 0.0, - "classification/Recall-handbag": 38.0137, - "classification/Recall-horse": 28.9062, - "classification/Recall-hot dog": 7.8431, - "classification/Recall-keyboard": 60.3774, - "classification/Recall-kite": 50.5494, - "classification/Recall-knife": 23.2044, - "classification/Recall-laptop": 54.0984, - "classification/Recall-microwave": 18.5185, - "classification/Recall-motorcycle": 49.6855, - "classification/Recall-mouse": 57.9545, - "classification/Recall-orange": 45.8824, - "classification/Recall-oven": 42.6087, - "classification/Recall-parking meter": 0.0, - "classification/Recall-person": 91.1994, - "classification/Recall-pizza": 54.902, - "classification/Recall-potted plant": 20.3488, - "classification/Recall-refrigerator": 45.5446, - "classification/Recall-remote": 17.2414, - "classification/Recall-sandwich": 31.6327, + "classification/Recall-handbag": 21.575342178344727, + "classification/Recall-horse": 44.53125, + "classification/Recall-hot dog": 5.882352828979492, + "classification/Recall-keyboard": 51.88679122924805, + "classification/Recall-kite": 59.340660095214844, + "classification/Recall-knife": 38.674034118652344, + "classification/Recall-laptop": 34.426231384277344, + "classification/Recall-microwave": 29.629629135131836, + "classification/Recall-motorcycle": 51.57232666015625, + "classification/Recall-mouse": 53.40909194946289, + "classification/Recall-orange": 23.52941131591797, + "classification/Recall-oven": 54.78260803222656, + "classification/Recall-parking meter": 2.702702760696411, + "classification/Recall-person": 91.64500427246094, + "classification/Recall-pizza": 59.47712326049805, + "classification/Recall-potted plant": 27.9069766998291, + "classification/Recall-refrigerator": 41.58415985107422, + "classification/Recall-remote": 17.241378784179688, + "classification/Recall-sandwich": 31.632652282714844, "classification/Recall-scissors": 0.0, - "classification/Recall-sheep": 35.3846, - "classification/Recall-sink": 52.9412, - "classification/Recall-skateboard": 41.7323, - "classification/Recall-skis": 63.3333, - "classification/Recall-snowboard": 67.3469, - "classification/Recall-spoon": 20.2614, - "classification/Recall-sports ball": 24.8521, - "classification/Recall-stop sign": 50.7246, - "classification/Recall-suitcase": 6.6667, - "classification/Recall-surfboard": 75.8389, - "classification/Recall-teddy bear": 32.9787, - "classification/Recall-tennis racket": 69.4611, - "classification/Recall-tie": 41.3793, + "classification/Recall-sheep": 43.07692337036133, + "classification/Recall-sink": 68.98395538330078, + "classification/Recall-skateboard": 61.41732406616211, + "classification/Recall-skis": 75.83333587646484, + "classification/Recall-snowboard": 44.8979606628418, + "classification/Recall-spoon": 26.14379119873047, + "classification/Recall-sports ball": 53.846153259277344, + "classification/Recall-stop sign": 47.826087951660156, + "classification/Recall-suitcase": 2.857142925262451, + "classification/Recall-surfboard": 69.12751770019531, + "classification/Recall-teddy bear": 28.723403930664062, + "classification/Recall-tennis racket": 77.84431457519531, + "classification/Recall-tie": 35.86206817626953, "classification/Recall-toaster": 0.0, - "classification/Recall-toilet": 77.8523, - "classification/Recall-toothbrush": 0.0, - "classification/Recall-traffic light": 66.4921, - "classification/Recall-train": 74.5223, - "classification/Recall-truck": 48.4, - "classification/Recall-tv": 59.9034, - "classification/Recall-umbrella": 16.6667, - "classification/Recall-vase": 56.2044, - "classification/Recall-wine glass": 15.4545, - "classification/Recall-zebra": 91.7647 + "classification/Recall-toilet": 74.49664306640625, + "classification/Recall-toothbrush": 14.70588207244873, + "classification/Recall-traffic light": 50.26177978515625, + "classification/Recall-train": 67.51592254638672, + "classification/Recall-truck": 45.20000076293945, + "classification/Recall-tv": 49.758453369140625, + "classification/Recall-umbrella": 33.33333206176758, + "classification/Recall-vase": 38.68613052368164, + "classification/Recall-wine glass": 17.272727966308594, + "classification/Recall-zebra": 91.76470947265625 }, - "focoos_version": "0.19.1", - "latency": [], + "focoos_version": "0.20.2", + "latency": [ + { + "fps": 851, + "engine": "torchscript", + "min": 1.051, + "max": 1.824, + "mean": 1.175, + "std": 0.146, + "im_size": 224, + "device": "Tesla T4" + }, + { + "fps": 1225, + "engine": "onnx.CUDAExecutionProvider", + "min": 0.789, + "max": 1.072, + "mean": 0.816, + "std": 0.044, + "im_size": 224, + "device": "Tesla T4" + }, + {"fps": 2170, "engine": "onnx.TensorrtExecutionProvider", "min": 0.444, "max": 0.627, "mean": 0.461, "std": 0.029, "im_size": 224, "device": "Tesla T4"} + ], "training_info": null, "updated_at": null } diff --git a/focoos/model_registry/fai-cls-s-coco.json b/focoos/model_registry/fai-cls-s-coco.json index 17f64a40..5d59d8bb 100644 --- a/focoos/model_registry/fai-cls-s-coco.json +++ b/focoos/model_registry/fai-cls-s-coco.json @@ -89,23 +89,14 @@ "num_classes": 80, "backbone_config": { "use_pretrained": false, - "backbone_url": "https://public.focoos.ai/pretrained_models/backbones/stdc_small.pth", "model_type": "stdc", "in_chans": 3, - "base": 64, - "layers": [ - 4, - 5, - 3 - ], "out_features": [ "res2", "res3", "res4", "res5" ], - "block_num": 4, - "block_type": "cat", "size": "small", "use_conv_last": false }, @@ -122,7 +113,7 @@ ], "hidden_dim": 512, "dropout_rate": 0.2, - "features": "res5", + "features": "res4", "num_layers": 1, "dense_prediction": false, "use_focal_loss": false, @@ -139,252 +130,283 @@ "weights_uri": "https://public.focoos.ai/pretrained_models/fai-cls-s-coco/model_final.pth", "val_dataset": "coco_2017_det", "val_metrics": { - "classification/F1": 61.9222, - "classification/F1-airplane": 81.7734, - "classification/F1-apple": 45.8015, - "classification/F1-backpack": 35.1807, - "classification/F1-banana": 57.5916, - "classification/F1-baseball bat": 71.2042, - "classification/F1-baseball glove": 81.4815, - "classification/F1-bear": 83.5165, - "classification/F1-bed": 63.9405, - "classification/F1-bench": 45.4545, - "classification/F1-bicycle": 54.918, - "classification/F1-bird": 57.5221, - "classification/F1-boat": 74.1071, - "classification/F1-book": 48.2916, - "classification/F1-bottle": 44.6178, - "classification/F1-bowl": 50.8287, - "classification/F1-broccoli": 77.027, - "classification/F1-bus": 69.4362, - "classification/F1-cake": 53.2609, - "classification/F1-car": 66.3616, - "classification/F1-carrot": 45.5172, - "classification/F1-cat": 78.481, - "classification/F1-cell phone": 44.6927, - "classification/F1-chair": 60.4496, - "classification/F1-clock": 67.8161, - "classification/F1-couch": 65.9898, - "classification/F1-cow": 60.4651, - "classification/F1-cup": 50.2674, - "classification/F1-dining table": 65.7229, - "classification/F1-dog": 63.5762, - "classification/F1-donut": 52.9412, - "classification/F1-elephant": 91.6201, - "classification/F1-fire hydrant": 67.1429, - "classification/F1-fork": 37.2093, - "classification/F1-frisbee": 71.8954, - "classification/F1-giraffe": 93.9394, + "classification/F1": 48.6569, + "classification/F1-airplane": 75.5102, + "classification/F1-apple": 35.9375, + "classification/F1-backpack": 25.3602, + "classification/F1-banana": 29.2135, + "classification/F1-baseball bat": 65.7143, + "classification/F1-baseball glove": 81.3726, + "classification/F1-bear": 61.6822, + "classification/F1-bed": 52.3438, + "classification/F1-bench": 24.8485, + "classification/F1-bicycle": 30.3922, + "classification/F1-bird": 42.2018, + "classification/F1-boat": 60.3774, + "classification/F1-book": 39.3782, + "classification/F1-bottle": 39.3027, + "classification/F1-bowl": 51.2397, + "classification/F1-broccoli": 63.6943, + "classification/F1-bus": 58.4615, + "classification/F1-cake": 22.3684, + "classification/F1-car": 62.2185, + "classification/F1-carrot": 31.5068, + "classification/F1-cat": 59.8007, + "classification/F1-cell phone": 24.026, + "classification/F1-chair": 51.4233, + "classification/F1-clock": 57.8313, + "classification/F1-couch": 52.2796, + "classification/F1-cow": 24.5283, + "classification/F1-cup": 46.7316, + "classification/F1-dining table": 59.4843, + "classification/F1-dog": 19.5122, + "classification/F1-donut": 25.8065, + "classification/F1-elephant": 64.9573, + "classification/F1-fire hydrant": 33.0275, + "classification/F1-fork": 24.0343, + "classification/F1-frisbee": 49.6454, + "classification/F1-giraffe": 92.0635, "classification/F1-hair drier": 0.0, - "classification/F1-handbag": 46.9027, - "classification/F1-horse": 74.4589, - "classification/F1-hot dog": 36.1111, - "classification/F1-keyboard": 72.0812, - "classification/F1-kite": 79.2899, - "classification/F1-knife": 46.1538, - "classification/F1-laptop": 69.1489, - "classification/F1-microwave": 40.4255, - "classification/F1-motorcycle": 72.2022, - "classification/F1-mouse": 71.5909, - "classification/F1-orange": 55.7143, - "classification/F1-oven": 63.964, - "classification/F1-parking meter": 46.1538, - "classification/F1-person": 90.5063, - "classification/F1-pizza": 73.8462, - "classification/F1-potted plant": 46.2633, - "classification/F1-refrigerator": 59.5745, - "classification/F1-remote": 48.3333, - "classification/F1-sandwich": 48.0769, - "classification/F1-scissors": 32.4324, - "classification/F1-sheep": 73.6, - "classification/F1-sink": 72.381, - "classification/F1-skateboard": 79.452, - "classification/F1-skis": 79.0909, - "classification/F1-snowboard": 62.5, - "classification/F1-spoon": 32.2034, - "classification/F1-sports ball": 41.5584, - "classification/F1-stop sign": 61.194, - "classification/F1-suitcase": 45.7831, - "classification/F1-surfboard": 84.2105, - "classification/F1-teddy bear": 67.1233, - "classification/F1-tennis racket": 91.018, - "classification/F1-tie": 67.5, - "classification/F1-toaster": 15.3846, - "classification/F1-toilet": 84.7682, - "classification/F1-toothbrush": 22.7273, - "classification/F1-traffic light": 57.8313, - "classification/F1-train": 81.7568, - "classification/F1-truck": 53.9554, - "classification/F1-tv": 65.3595, - "classification/F1-umbrella": 65.5052, - "classification/F1-vase": 52.7607, - "classification/F1-wine glass": 43.3735, - "classification/F1-zebra": 95.858, - "classification/Precision": 68.6875, - "classification/Precision-airplane": 78.3019, - "classification/Precision-apple": 54.5455, - "classification/Precision-backpack": 39.0374, - "classification/Precision-banana": 62.5, - "classification/Precision-baseball bat": 72.3404, - "classification/Precision-baseball glove": 75.8621, - "classification/Precision-bear": 90.4762, - "classification/Precision-bed": 71.6667, - "classification/Precision-bench": 55.9006, - "classification/Precision-bicycle": 70.5263, - "classification/Precision-bird": 64.3564, - "classification/Precision-boat": 80.5825, - "classification/Precision-book": 50.7177, - "classification/Precision-bottle": 54.5802, - "classification/Precision-bowl": 60.262, - "classification/Precision-broccoli": 74.026, - "classification/Precision-bus": 79.0541, - "classification/Precision-cake": 81.6667, - "classification/Precision-car": 56.0567, - "classification/Precision-carrot": 51.5625, - "classification/Precision-cat": 93.9394, - "classification/Precision-cell phone": 55.5556, - "classification/Precision-chair": 58.4541, - "classification/Precision-clock": 81.9444, - "classification/Precision-couch": 65.3266, - "classification/Precision-cow": 92.8571, - "classification/Precision-cup": 52.514, - "classification/Precision-dining table": 66.5984, - "classification/Precision-dog": 76.8, - "classification/Precision-donut": 67.5, - "classification/Precision-elephant": 91.1111, - "classification/Precision-fire hydrant": 87.037, - "classification/Precision-fork": 46.6019, - "classification/Precision-frisbee": 79.7101, - "classification/Precision-giraffe": 95.8763, + "classification/F1-handbag": 38.6087, + "classification/F1-horse": 42.5287, + "classification/F1-hot dog": 14.2857, + "classification/F1-keyboard": 66.6667, + "classification/F1-kite": 63.0137, + "classification/F1-knife": 29.8932, + "classification/F1-laptop": 54.0984, + "classification/F1-microwave": 25.3165, + "classification/F1-motorcycle": 63.4538, + "classification/F1-mouse": 63.75, + "classification/F1-orange": 46.1538, + "classification/F1-oven": 51.0417, + "classification/F1-parking meter": 0.0, + "classification/F1-person": 89.2766, + "classification/F1-pizza": 66.1417, + "classification/F1-potted plant": 30.9734, + "classification/F1-refrigerator": 51.6854, + "classification/F1-remote": 27.1739, + "classification/F1-sandwich": 34.6369, + "classification/F1-scissors": 0.0, + "classification/F1-sheep": 47.4227, + "classification/F1-sink": 63.4615, + "classification/F1-skateboard": 56.9893, + "classification/F1-skis": 72.0379, + "classification/F1-snowboard": 49.6241, + "classification/F1-spoon": 26.0504, + "classification/F1-sports ball": 35.2941, + "classification/F1-stop sign": 58.3333, + "classification/F1-suitcase": 12.5, + "classification/F1-surfboard": 75.3333, + "classification/F1-teddy bear": 46.6165, + "classification/F1-tennis racket": 80.0, + "classification/F1-tie": 47.0588, + "classification/F1-toaster": 0.0, + "classification/F1-toilet": 75.0809, + "classification/F1-toothbrush": 0.0, + "classification/F1-traffic light": 54.7414, + "classification/F1-train": 79.0541, + "classification/F1-truck": 48.6922, + "classification/F1-tv": 56.621, + "classification/F1-umbrella": 27.23, + "classification/F1-vase": 47.678, + "classification/F1-wine glass": 23.1293, + "classification/F1-zebra": 92.8571, + "classification/Precision": 58.4791, + "classification/Precision-airplane": 74.7475, + "classification/Precision-apple": 44.2308, + "classification/Precision-backpack": 36.9748, + "classification/Precision-banana": 34.6667, + "classification/Precision-baseball bat": 61.0619, + "classification/Precision-baseball glove": 79.8077, + "classification/Precision-bear": 56.8966, + "classification/Precision-bed": 62.6168, + "classification/Precision-bench": 43.1579, + "classification/Precision-bicycle": 56.3636, + "classification/Precision-bird": 49.4624, + "classification/Precision-boat": 70.3297, + "classification/Precision-book": 48.7179, + "classification/Precision-bottle": 49.2063, + "classification/Precision-bowl": 53.2646, + "classification/Precision-broccoli": 58.1395, + "classification/Precision-bus": 69.8529, + "classification/Precision-cake": 60.7143, + "classification/Precision-car": 56.1747, + "classification/Precision-carrot": 35.3846, + "classification/Precision-cat": 76.9231, + "classification/Precision-cell phone": 39.3617, + "classification/Precision-chair": 55.0098, + "classification/Precision-clock": 75.0, + "classification/Precision-couch": 64.1791, + "classification/Precision-cow": 68.4211, + "classification/Precision-cup": 51.0638, + "classification/Precision-dining table": 55.2137, + "classification/Precision-dog": 71.4286, + "classification/Precision-donut": 38.7097, + "classification/Precision-elephant": 52.4138, + "classification/Precision-fire hydrant": 78.2609, + "classification/Precision-fork": 35.8974, + "classification/Precision-frisbee": 61.4035, + "classification/Precision-giraffe": 98.8636, "classification/Precision-hair drier": 0.0, - "classification/Precision-handbag": 41.1917, - "classification/Precision-horse": 83.4951, - "classification/Precision-hot dog": 61.9048, - "classification/Precision-keyboard": 78.022, - "classification/Precision-kite": 85.8974, - "classification/Precision-knife": 45.9016, - "classification/Precision-laptop": 67.3575, - "classification/Precision-microwave": 47.5, - "classification/Precision-motorcycle": 84.7458, - "classification/Precision-mouse": 71.5909, - "classification/Precision-orange": 70.9091, - "classification/Precision-oven": 66.3551, - "classification/Precision-parking meter": 80.0, - "classification/Precision-person": 85.9432, - "classification/Precision-pizza": 89.7196, - "classification/Precision-potted plant": 59.633, - "classification/Precision-refrigerator": 64.3678, - "classification/Precision-remote": 61.0526, - "classification/Precision-sandwich": 45.4545, - "classification/Precision-scissors": 66.6667, - "classification/Precision-sheep": 76.6667, - "classification/Precision-sink": 89.0625, - "classification/Precision-skateboard": 94.5652, - "classification/Precision-skis": 87.0, - "classification/Precision-snowboard": 55.5556, - "classification/Precision-spoon": 45.7831, - "classification/Precision-sports ball": 77.4194, - "classification/Precision-stop sign": 63.0769, - "classification/Precision-suitcase": 62.2951, - "classification/Precision-surfboard": 88.2353, - "classification/Precision-teddy bear": 94.2308, - "classification/Precision-tennis racket": 91.018, - "classification/Precision-tie": 85.2632, - "classification/Precision-toaster": 20.0, - "classification/Precision-toilet": 83.6601, - "classification/Precision-toothbrush": 50.0, - "classification/Precision-traffic light": 46.9055, - "classification/Precision-train": 87.0504, - "classification/Precision-truck": 54.7325, - "classification/Precision-tv": 59.5238, - "classification/Precision-umbrella": 83.1858, - "classification/Precision-vase": 45.5026, - "classification/Precision-wine glass": 64.2857, - "classification/Precision-zebra": 96.4286, - "classification/Recall": 56.3701, - "classification/Recall-airplane": 85.567, - "classification/Recall-apple": 39.4737, - "classification/Recall-backpack": 32.0175, - "classification/Recall-banana": 53.3981, - "classification/Recall-baseball bat": 70.1031, - "classification/Recall-baseball glove": 88.0, - "classification/Recall-bear": 77.551, - "classification/Recall-bed": 57.7181, - "classification/Recall-bench": 38.2979, - "classification/Recall-bicycle": 44.9664, - "classification/Recall-bird": 52.0, - "classification/Recall-boat": 68.595, - "classification/Recall-book": 46.087, - "classification/Recall-bottle": 37.7309, - "classification/Recall-bowl": 43.949, - "classification/Recall-broccoli": 80.2817, - "classification/Recall-bus": 61.9048, - "classification/Recall-cake": 39.5161, - "classification/Recall-car": 81.3084, - "classification/Recall-carrot": 40.7407, - "classification/Recall-cat": 67.3913, - "classification/Recall-cell phone": 37.3832, - "classification/Recall-chair": 62.5862, - "classification/Recall-clock": 57.8431, - "classification/Recall-couch": 66.6667, - "classification/Recall-cow": 44.8276, - "classification/Recall-cup": 48.2051, - "classification/Recall-dining table": 64.8703, - "classification/Recall-dog": 54.2373, - "classification/Recall-donut": 43.5484, - "classification/Recall-elephant": 92.1348, - "classification/Recall-fire hydrant": 54.6512, - "classification/Recall-fork": 30.9677, - "classification/Recall-frisbee": 65.4762, - "classification/Recall-giraffe": 92.0792, + "classification/Precision-handbag": 39.2226, + "classification/Precision-horse": 80.4348, + "classification/Precision-hot dog": 80.0, + "classification/Precision-keyboard": 74.4186, + "classification/Precision-kite": 83.6364, + "classification/Precision-knife": 42.0, + "classification/Precision-laptop": 54.0984, + "classification/Precision-microwave": 40.0, + "classification/Precision-motorcycle": 87.7778, + "classification/Precision-mouse": 70.8333, + "classification/Precision-orange": 46.4286, + "classification/Precision-oven": 63.6364, + "classification/Precision-parking meter": 0.0, + "classification/Precision-person": 87.4333, + "classification/Precision-pizza": 83.1683, + "classification/Precision-potted plant": 64.8148, + "classification/Precision-refrigerator": 59.7403, + "classification/Precision-remote": 64.1026, + "classification/Precision-sandwich": 38.2716, + "classification/Precision-scissors": 0.0, + "classification/Precision-sheep": 71.875, + "classification/Precision-sink": 79.2, + "classification/Precision-skateboard": 89.8305, + "classification/Precision-skis": 83.5165, + "classification/Precision-snowboard": 39.2857, + "classification/Precision-spoon": 36.4706, + "classification/Precision-sports ball": 60.8696, + "classification/Precision-stop sign": 68.6274, + "classification/Precision-suitcase": 100.0, + "classification/Precision-surfboard": 74.8344, + "classification/Precision-teddy bear": 79.4872, + "classification/Precision-tennis racket": 94.3089, + "classification/Precision-tie": 54.5455, + "classification/Precision-toaster": 0.0, + "classification/Precision-toilet": 72.5, + "classification/Precision-toothbrush": 0.0, + "classification/Precision-traffic light": 46.5201, + "classification/Precision-train": 84.1727, + "classification/Precision-truck": 48.9879, + "classification/Precision-tv": 53.6797, + "classification/Precision-umbrella": 74.359, + "classification/Precision-vase": 41.3979, + "classification/Precision-wine glass": 45.9459, + "classification/Precision-zebra": 93.9759, + "classification/Recall": 41.6596, + "classification/Recall-airplane": 76.2887, + "classification/Recall-apple": 30.2632, + "classification/Recall-backpack": 19.2982, + "classification/Recall-banana": 25.2427, + "classification/Recall-baseball bat": 71.134, + "classification/Recall-baseball glove": 83.0, + "classification/Recall-bear": 67.3469, + "classification/Recall-bed": 44.9664, + "classification/Recall-bench": 17.4468, + "classification/Recall-bicycle": 20.8054, + "classification/Recall-bird": 36.8, + "classification/Recall-boat": 52.8926, + "classification/Recall-book": 33.0435, + "classification/Recall-bottle": 32.7177, + "classification/Recall-bowl": 49.3631, + "classification/Recall-broccoli": 70.4225, + "classification/Recall-bus": 50.2645, + "classification/Recall-cake": 13.7097, + "classification/Recall-car": 69.7196, + "classification/Recall-carrot": 28.3951, + "classification/Recall-cat": 48.913, + "classification/Recall-cell phone": 17.2897, + "classification/Recall-chair": 48.2759, + "classification/Recall-clock": 47.0588, + "classification/Recall-couch": 44.1026, + "classification/Recall-cow": 14.9425, + "classification/Recall-cup": 43.0769, + "classification/Recall-dining table": 64.4711, + "classification/Recall-dog": 11.2994, + "classification/Recall-donut": 19.3548, + "classification/Recall-elephant": 85.3933, + "classification/Recall-fire hydrant": 20.9302, + "classification/Recall-fork": 18.0645, + "classification/Recall-frisbee": 41.6667, + "classification/Recall-giraffe": 86.1386, "classification/Recall-hair drier": 0.0, - "classification/Recall-handbag": 54.4521, - "classification/Recall-horse": 67.1875, - "classification/Recall-hot dog": 25.4902, - "classification/Recall-keyboard": 66.9811, - "classification/Recall-kite": 73.6264, - "classification/Recall-knife": 46.4088, - "classification/Recall-laptop": 71.0383, - "classification/Recall-microwave": 35.1852, - "classification/Recall-motorcycle": 62.8931, - "classification/Recall-mouse": 71.5909, + "classification/Recall-handbag": 38.0137, + "classification/Recall-horse": 28.9062, + "classification/Recall-hot dog": 7.8431, + "classification/Recall-keyboard": 60.3774, + "classification/Recall-kite": 50.5494, + "classification/Recall-knife": 23.2044, + "classification/Recall-laptop": 54.0984, + "classification/Recall-microwave": 18.5185, + "classification/Recall-motorcycle": 49.6855, + "classification/Recall-mouse": 57.9545, "classification/Recall-orange": 45.8824, - "classification/Recall-oven": 61.7391, - "classification/Recall-parking meter": 32.4324, - "classification/Recall-person": 95.5811, - "classification/Recall-pizza": 62.7451, - "classification/Recall-potted plant": 37.7907, - "classification/Recall-refrigerator": 55.4455, - "classification/Recall-remote": 40.0, - "classification/Recall-sandwich": 51.0204, - "classification/Recall-scissors": 21.4286, - "classification/Recall-sheep": 70.7692, - "classification/Recall-sink": 60.9626, - "classification/Recall-skateboard": 68.5039, - "classification/Recall-skis": 72.5, - "classification/Recall-snowboard": 71.4286, - "classification/Recall-spoon": 24.8366, - "classification/Recall-sports ball": 28.4024, - "classification/Recall-stop sign": 59.4203, - "classification/Recall-suitcase": 36.1905, - "classification/Recall-surfboard": 80.5369, - "classification/Recall-teddy bear": 52.1277, - "classification/Recall-tennis racket": 91.018, - "classification/Recall-tie": 55.8621, - "classification/Recall-toaster": 12.5, - "classification/Recall-toilet": 85.906, - "classification/Recall-toothbrush": 14.7059, - "classification/Recall-traffic light": 75.3927, - "classification/Recall-train": 77.0701, - "classification/Recall-truck": 53.2, - "classification/Recall-tv": 72.4638, - "classification/Recall-umbrella": 54.023, - "classification/Recall-vase": 62.7737, - "classification/Recall-wine glass": 32.7273, - "classification/Recall-zebra": 95.2941 + "classification/Recall-oven": 42.6087, + "classification/Recall-parking meter": 0.0, + "classification/Recall-person": 91.1994, + "classification/Recall-pizza": 54.902, + "classification/Recall-potted plant": 20.3488, + "classification/Recall-refrigerator": 45.5446, + "classification/Recall-remote": 17.2414, + "classification/Recall-sandwich": 31.6327, + "classification/Recall-scissors": 0.0, + "classification/Recall-sheep": 35.3846, + "classification/Recall-sink": 52.9412, + "classification/Recall-skateboard": 41.7323, + "classification/Recall-skis": 63.3333, + "classification/Recall-snowboard": 67.3469, + "classification/Recall-spoon": 20.2614, + "classification/Recall-sports ball": 24.8521, + "classification/Recall-stop sign": 50.7246, + "classification/Recall-suitcase": 6.6667, + "classification/Recall-surfboard": 75.8389, + "classification/Recall-teddy bear": 32.9787, + "classification/Recall-tennis racket": 69.4611, + "classification/Recall-tie": 41.3793, + "classification/Recall-toaster": 0.0, + "classification/Recall-toilet": 77.8523, + "classification/Recall-toothbrush": 0.0, + "classification/Recall-traffic light": 66.4921, + "classification/Recall-train": 74.5223, + "classification/Recall-truck": 48.4, + "classification/Recall-tv": 59.9034, + "classification/Recall-umbrella": 16.6667, + "classification/Recall-vase": 56.2044, + "classification/Recall-wine glass": 15.4545, + "classification/Recall-zebra": 91.7647 }, - "focoos_version": "0.19.1", - "latency": [], + "focoos_version": "0.20.2", + "latency": [ + { + "fps": 860, + "engine": "torchscript", + "min": 1.091, + "max": 1.3, + "mean": 1.163, + "std": 0.047, + "im_size": 224, + "device": "Tesla T4" + }, + { + "fps": 932, + "engine": "onnx.CUDAExecutionProvider", + "min": 1.034, + "max": 1.303, + "mean": 1.072, + "std": 0.038, + "im_size": 224, + "device": "Tesla T4" + }, + { + "fps": 1819, + "engine": "onnx.TensorrtExecutionProvider", + "min": 0.53, + "max": 0.606, + "mean": 0.549, + "std": 0.017, + "im_size": 224, + "device": "Tesla T4" + } + ], "training_info": null, "updated_at": null } diff --git a/focoos/nn/backbone/convnextv2.py b/focoos/nn/backbone/convnextv2.py index d6ace425..eb41f88c 100644 --- a/focoos/nn/backbone/convnextv2.py +++ b/focoos/nn/backbone/convnextv2.py @@ -158,7 +158,7 @@ def __init__(self, config: ConvNeXtV2Config): cur += depths[i] if config.use_pretrained and backbone_url: - state = torch.hub.load_state_dict_from_url(backbone_url) + state = torch.hub.load_state_dict_from_url(backbone_url, map_location="cpu") self.load_state_dict(state) logger.info(f"Load ConvNeXtV2{config.model_size} state_dict") diff --git a/focoos/nn/backbone/csp_darknet.py b/focoos/nn/backbone/csp_darknet.py index 399e2463..9cce322b 100644 --- a/focoos/nn/backbone/csp_darknet.py +++ b/focoos/nn/backbone/csp_darknet.py @@ -369,11 +369,11 @@ def __init__( } if config.use_pretrained: if config.backbone_url: - state = torch.hub.load_state_dict_from_url(config.backbone_url) + state = torch.hub.load_state_dict_from_url(config.backbone_url, map_location="cpu") self.load_state_dict(state) logger.info(f"Loaded pretrained weights from {config.backbone_url}") else: - state = torch.hub.load_state_dict_from_url(CONFIGS[config.size]["url"]) + state = torch.hub.load_state_dict_from_url(CONFIGS[config.size]["url"], map_location="cpu") self.load_state_dict(state) logger.info(f"Loaded pretrained weights from {CONFIGS[config.size]['url']}") diff --git a/focoos/nn/backbone/mobilenet_v2.py b/focoos/nn/backbone/mobilenet_v2.py index c306703d..f426691a 100644 --- a/focoos/nn/backbone/mobilenet_v2.py +++ b/focoos/nn/backbone/mobilenet_v2.py @@ -205,7 +205,7 @@ def __init__( self.layers.append(layer_name) if config.use_pretrained and config.backbone_url: - state = torch.hub.load_state_dict_from_url(config.backbone_url) + state = torch.hub.load_state_dict_from_url(config.backbone_url, map_location="cpu") self.load_state_dict(state) logger.info("Load MobileNetV2 state_dict") diff --git a/focoos/nn/backbone/resnet.py b/focoos/nn/backbone/resnet.py index fff14633..c3a893ff 100644 --- a/focoos/nn/backbone/resnet.py +++ b/focoos/nn/backbone/resnet.py @@ -227,7 +227,7 @@ def __init__( self._freeze_norm(self) if use_pretrained: - state = torch.hub.load_state_dict_from_url(backbone_url) + state = torch.hub.load_state_dict_from_url(backbone_url, map_location="cpu") self.load_state_dict(state) logger.info(f"Load ResNet{depth} state_dict") diff --git a/focoos/nn/backbone/stdc.py b/focoos/nn/backbone/stdc.py index f5a958fa..e6ea0237 100644 --- a/focoos/nn/backbone/stdc.py +++ b/focoos/nn/backbone/stdc.py @@ -182,29 +182,51 @@ class STDCConfig(BackboneConfig): block_num: int = 4 block_type: str = "cat" backbone_url: Optional[str] = None - size: Optional[Literal["small", "large"]] = None + size: Optional[Literal["nano", "small", "large"]] = None use_conv_last: bool = False class STDC(BaseBackbone): def __init__(self, config: STDCConfig): super().__init__(config) - - if config.size == "small": - config.backbone_url = "https://public.focoos.ai/pretrained_models/backbones/stdc_small.pth" - layers = [2, 2, 2] - base = 64 - block_num = 4 - block_type = "cat" - elif config.size == "large": - config.backbone_url = "https://public.focoos.ai/pretrained_models/backbones/stdc_large.pth" - layers = [4, 5, 3] - base = 64 - block_num = 4 - block_type = "cat" + if config.size is not None: + if config.size == "small": + config.backbone_url = "https://public.focoos.ai/pretrained_models/backbones/stdc_small.pth" + layers = [2, 2, 2] + base = 64 + block_num = 4 + block_type = "cat" + elif config.size == "large": + config.backbone_url = "https://public.focoos.ai/pretrained_models/backbones/stdc_large.pth" + layers = [4, 5, 3] + base = 64 + block_num = 4 + block_type = "cat" + elif config.size == "nano": + config.backbone_url = "https://public.focoos.ai/pretrained_models/backbones/stdc_nano.pth" + layers = [2, 2, 2] + base = 32 + block_num = 4 + block_type = "cat" + else: + raise ValueError(f"Invalid size: {config.size}. The size should be small, large or nano.") + if config.layers and layers != config.layers: + logger.warning(f"Layers must be {layers} if size is {config.size}, provided {config.layers} not used.") + if config.base and base != config.base: + logger.warning(f"Base must be {base} if size is {config.size}, provided {config.base} not used.") + if config.block_num and block_num != config.block_num: + logger.warning( + f"Block num must be {block_num} if size is {config.size}, provided {config.block_num} not used." + ) + if config.block_type and block_type != config.block_type: + logger.warning( + f"Block type must be {block_type} if size is {config.size}, provided {config.block_type} not used." + ) else: - base = config.base + if not config.layers or not config.base or not config.block_num or not config.block_type: + raise ValueError("Layers, base, block_num and block_type must be provided if size is not provided.") layers = config.layers + base = config.base block_num = config.block_num block_type = config.block_type @@ -226,7 +248,7 @@ def __init__(self, config: STDCConfig): self.out_ids = 1, 5, 10, 13 if config.use_pretrained and config.backbone_url: - state = torch.hub.load_state_dict_from_url(config.backbone_url) + state = torch.hub.load_state_dict_from_url(config.backbone_url, map_location="cpu") self.load_state_dict(state) logger.info("Load STDC state_dict") diff --git a/focoos/nn/backbone/swin.py b/focoos/nn/backbone/swin.py index bbce7f6e..46cafc7a 100644 --- a/focoos/nn/backbone/swin.py +++ b/focoos/nn/backbone/swin.py @@ -679,7 +679,7 @@ def __init__( self.add_module(layer_name, layer) if config.use_pretrained and backbone_url: - state = torch.hub.load_state_dict_from_url(backbone_url) + state = torch.hub.load_state_dict_from_url(backbone_url, map_location="cpu") self.load_state_dict(state, strict=False) logger.info(f"Loaded pretrained weights from {backbone_url}") diff --git a/tests/test_backbone.py b/tests/test_backbone.py index ddc967f2..12093d42 100644 --- a/tests/test_backbone.py +++ b/tests/test_backbone.py @@ -6,14 +6,54 @@ from focoos.nn.backbone.build import load_backbone # List of all backbone types with their minimum required config + +stdc_configs_size = [ + {"model_type": "stdc", "use_pretrained": True, "size": size} for size in ["nano", "small", "large"] +] +stdc_configs_base = [ + { + "model_type": "stdc", + "use_pretrained": True, + "base": 64, + "layers": [2, 2, 2], + "block_num": 4, + "block_type": "cat", + }, + { + "model_type": "stdc", + "use_pretrained": False, + "base": 64, + "layers": [4, 5, 3], + "block_num": 4, + "block_type": "cat", + }, +] BACKBONE_CONFIGS = { - "resnet": [{"model_type": "resnet", "use_pretrained": False, "depth": 18}], - "stdc": [{"model_type": "stdc", "use_pretrained": False, "base": 64, "layers": [4, 5, 3]}], - "swin": [{"model_type": "swin", "use_pretrained": False}], - "mobilenet_v2": [{"model_type": "mobilenet_v2", "use_pretrained": False}], - "convnextv2": [{"model_type": "convnextv2", "use_pretrained": False}], + "resnet": [ + {"model_type": "resnet", "use_pretrained": True, "depth": 18}, + {"model_type": "resnet", "use_pretrained": True, "depth": 34}, + {"model_type": "resnet", "use_pretrained": False, "depth": 50}, + {"model_type": "resnet", "use_pretrained": False, "depth": 101}, + ], + "stdc": stdc_configs_size + stdc_configs_base, + "swin": [ + {"model_type": "swin", "use_pretrained": False}, + { + "model_type": "swin", + "use_pretrained": True, + }, + ], + "mobilenet_v2": [ + {"model_type": "mobilenet_v2", "use_pretrained": False}, + {"model_type": "mobilenet_v2", "use_pretrained": True}, + ], + "convnextv2": [ + {"model_type": "convnextv2", "use_pretrained": False}, + {"model_type": "convnextv2", "use_pretrained": True}, + ], "csp_darknet": [ - {"model_type": "csp_darknet", "use_pretrained": False, "size": size} for size in ["small", "medium", "large"] + {"model_type": "csp_darknet", "use_pretrained": True if size == "small" else False, "size": size} + for size in ["small", "medium", "large"] ], } diff --git a/tutorials/quantize_classification.ipynb b/tutorials/quantize_classification.ipynb index 7618f7fb..8cc4475b 100644 --- a/tutorials/quantize_classification.ipynb +++ b/tutorials/quantize_classification.ipynb @@ -17,7 +17,7 @@ "\n", "Focoos offers three pretrained classification models in different sizes:\n", "\n", - "- fai-cls-n-coco (nano) \n", + "- fai-cls-n-coco (nano, optimized for Arduino Nicla Vision) \n", "- fai-cls-s-coco (small)\n", "- fai-cls-m-coco (medium)\n", "\n", @@ -37,7 +37,7 @@ "\n", "from focoos import ModelManager\n", "\n", - "model_name = \"fai-cls-m-coco\" # you can also take model from focoos hub with \"hub://YOUR_MODEL_REF\"\n", + "model_name = \"fai-cls-n-coco\" # you can also take model from focoos hub with \"hub://YOUR_MODEL_REF\"\n", "\n", "model = ModelManager.get(model_name)\n", "pprint(model.model_info)" @@ -66,13 +66,13 @@ "\n", "from focoos import ASSETS_DIR, MODELS_DIR, RuntimeType\n", "\n", - "image_size = 224 # 224px input size\n", + "image_size = 96 # 96px input size\n", "\n", "exported_model = model.export(\n", " runtime_type=RuntimeType.ONNX_CPU, # optimized for edge or cpu\n", " image_size=image_size,\n", " dynamic_axes=False, # quantization need static axes!\n", - " simplify_onnx=False, # simplify and optimize onnx model graph\n", + " simplify_onnx=True, # simplify and optimize onnx model graph\n", " onnx_opset=18,\n", " out_dir=os.path.join(MODELS_DIR, \"my_edge_model\"),\n", ") # save to models dir\n", @@ -108,9 +108,9 @@ " calibration_images_folder=str(ASSETS_DIR), # Calibration images folder: It is strongly recommended\n", " # to use the dataset validation split on which the model was trained.\n", " # Here, for example, we will use the assets folder.\n", - " format=\"QDQ\", # QO (QOperator): All the quantized operators have their own ONNX definitions, like QLinearConv, MatMulInteger etc.\n", + " format=\"QO\", # QO (QOperator): All the quantized operators have their own ONNX definitions, like QLinearConv, MatMulInteger etc.\n", " # QDQ (Quantize-DeQuantize): inserts DeQuantizeLinear(QuantizeLinear(tensor)) between the original operators to simulate the quantization and dequantization process.\n", - " per_channel=True, # Per-channel quantization: each channel has its own scale/zero-point → more accurate,\n", + " per_channel=False, # Per-channel quantization: each channel has its own scale/zero-point → more accurate,\n", " # especially for convolutions, at the cost of extra memory and computation.\n", " normalize_images=True, # normalize images during preprocessing: some models have normalization outside of model forward\n", ")\n", diff --git a/uv.lock b/uv.lock index a6bc08aa..852ee1bc 100644 --- a/uv.lock +++ b/uv.lock @@ -677,7 +677,7 @@ wheels = [ [[package]] name = "focoos" -version = "0.19.1" +version = "0.20.2" source = { editable = "." } dependencies = [ { name = "colorama" },