mblt-vision-python 0.0.1__tar.gz → 0.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/PKG-INFO +1 -1
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/__init__.py +1 -1
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/val.py +3 -4
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_nyu_depth.py +25 -18
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_widerface.py +9 -9
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/base.py +6 -2
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/yolo_anchor_post.py +25 -5
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/yolo_anchorless_post.py +57 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/yolo_dflfree_post.py +37 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/yolo_nmsfree_post.py +97 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/PKG-INFO +1 -1
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_benchmark_vision.py +34 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_nyu_depth.py +12 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_widerface.py +10 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_postprocess_hierarchy.py +303 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/LICENSE +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/README.md +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/_api.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/_compat.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/_model_paths.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/_tasks.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/argparse_utils.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/chart_utils.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/io_utils.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/summary_utils.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/__main__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/_vision.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/compile.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/main.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/predict.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/compile/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/compile/vision.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/ade20k.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/cityscapes.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/coco.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/dotav1.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/imagenet.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/imagenet_synsets.txt +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/nyu-depth.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/registry.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/widerface.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/depth_estimation/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/face_detection/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/image_classification/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/instance_segmentation/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/AlexNet.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CAFormer_B36.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CAFormer_M36.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CAFormer_S18.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CAFormer_S36.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CoAtNet_0_RW_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CoAtNet_1_RW_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CoAtNet_2_RW_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvFormer_B36.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvFormer_M36.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvFormer_S18.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvFormer_S36.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvNext_Base.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvNext_Large.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvNext_Small.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvNext_Tiny.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Base_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Base_Patch16_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Large_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Large_Patch16_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Medium_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Small_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Small_Patch16_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT_Base_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT_Base_Patch16_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT_Small_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT_Tiny_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DenseNet121.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DenseNet161.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DenseNet169.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DenseNet201.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientFormer_L1.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientFormer_L3.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientFormer_L7.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B0.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B1.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B2.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B3.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B4.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B5.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B7.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_V2_L.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_V2_M.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_V2_S.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/FlexiVit_Base.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/FlexiVit_Large.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/FlexiVit_Small.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANc-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANc.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANe.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANm.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANs.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GoogLeNet.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Inception_V3.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_128.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_128S.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_192.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_256.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MNASNet0_5.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MNASNet0_75.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MNASNet1_0.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MNASNet1_3.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MobileNet_V2.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MobileNet_V3_Large.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MobileNet_V3_Small.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_16GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_1_6GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_32GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_3_2GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_400MF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_800MF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_8GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_16GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_1_6GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_32GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_3_2GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_400MF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_800MF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_8GF.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M0_9.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M1.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M1_0.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M1_1.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M1_5.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M2.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M2_3.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M3.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNeXt101_32X8D.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNeXt101_64X4D.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNeXt50_32X4D.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet101.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet152.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet18.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet34.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet50.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ShuffleNet_V2_X0_5.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ShuffleNet_V2_X1_0.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ShuffleNet_V2_X1_5.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ShuffleNet_V2_X2_0.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/SqueezeNet1_0.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/SqueezeNet1_1.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Swin_B.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Swin_S.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Swin_T.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG11.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG11_BN.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG13.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG13_BN.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG16.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG16_BN.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG19.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG19_BN.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_B_16.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_B_32.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch16_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch32_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch32_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch8_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_L_16.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_L_32.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Large_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Large_Patch16_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Large_Patch32_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Small_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Small_Patch16_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Small_Patch32_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Small_Patch32_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Tiny_Patch16_224.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Tiny_Patch16_384.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VisFormer_Small.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VisFormer_Tiny.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Wide_ResNet101_2.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Wide_ResNet50_2.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12l-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12l-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12l.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12m-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12m-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12m.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12n-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12n-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12n.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12s-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12s-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12s.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12x-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12x.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-depth.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-distill.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-sem-ade20k.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-sem.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-depth.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-distill.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-sem-ade20k.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-sem.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-depth.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-distill.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-sem-ade20k.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-sem.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-depth.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-distill.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-sem-ade20k.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-sem.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-depth.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-distill.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-sem-ade20k.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-sem.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10b.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10l-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10l.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10m-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10m.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10n-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10n.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10s-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10s.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10x.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3-spp.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3-sppu.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3-tiny.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3-tinyu.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3u.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l6u.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5lu.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m6u.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5mu.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n6u.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5nu.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s6u.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5su.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x6u.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5xu.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv6m-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv6n-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7d6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7e6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7e6e.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7w6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7x.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-face.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-cls.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-obb.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-pose-p6.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-pose.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9c-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9c.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9e-seg.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9e.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9m.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9s.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9t.yaml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/obb/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/object_detection/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/pose_estimation/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/py.typed +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/semantic_segmentation/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/ade20k.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/cityscapes.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/coco.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/dataloader.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/dotav1.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/imagenet.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/organizer.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/readiness.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/_result.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_ade20k.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_cityscapes.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_coco.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_dota.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_imagenet.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/letterbox.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/_letterbox.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/build_post.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/cls_post.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/common.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/depth_post.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/semantic_seg_post.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/__init__.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/_validation.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/base.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/build_pre.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/center_crop.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/letterbox.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/normalize.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/order.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/reader.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/resize.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/yolo_pre.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/results.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/types.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/wrapper.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/SOURCES.txt +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/dependency_links.txt +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/entry_points.txt +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/requires.txt +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/top_level.txt +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/pyproject.toml +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/setup.cfg +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_api.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_cli.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_compile_vision.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_dataloader.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_dataset_organizer.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_dataset_readiness.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_depth_estimation.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_coco.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_dota.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_imagenet.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_face_detection.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_model_aliasing.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_model_metadata.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_mxq_inference.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_onnx_classification.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_onnx_yolo.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_preprocess_validation.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_results.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_semantic_segmentation.py +0 -0
- {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_wrapper.py +0 -0
|
@@ -439,10 +439,9 @@ def _run_validation(args: argparse.Namespace) -> float:
|
|
|
439
439
|
)
|
|
440
440
|
print(
|
|
441
441
|
"Validation score "
|
|
442
|
-
f"(
|
|
443
|
-
f"(Medium AP): {widerface_result.medium_ap:.5f}, "
|
|
444
|
-
f"(
|
|
445
|
-
f"(Mean AP): {widerface_result.mean_ap:.5f}"
|
|
442
|
+
f"(Hard AP, primary): {widerface_result.hard_ap:.5f}, "
|
|
443
|
+
f"(Medium AP, secondary): {widerface_result.medium_ap:.5f}, "
|
|
444
|
+
f"(Easy AP, secondary): {widerface_result.easy_ap:.5f}"
|
|
446
445
|
)
|
|
447
446
|
return widerface_result.primary_score
|
|
448
447
|
|
{mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_nyu_depth.py
RENAMED
|
@@ -31,27 +31,33 @@ class NYUDepthResult:
|
|
|
31
31
|
|
|
32
32
|
@property
|
|
33
33
|
def secondary_score(self) -> float:
|
|
34
|
-
"""Return
|
|
34
|
+
"""Return abs_rel for singular-score compatibility."""
|
|
35
35
|
|
|
36
36
|
return self.abs_rel
|
|
37
37
|
|
|
38
|
+
@property
|
|
39
|
+
def secondary_scores(self) -> tuple[float, float]:
|
|
40
|
+
"""Return abs_rel and RMSE in secondary-metric order."""
|
|
41
|
+
|
|
42
|
+
return self.abs_rel, self.rmse
|
|
43
|
+
|
|
38
44
|
|
|
39
45
|
class NYUDepthMetricAccumulator:
|
|
40
|
-
"""Accumulate median-aligned metrics
|
|
46
|
+
"""Accumulate median-aligned metrics with equal weight for each image."""
|
|
41
47
|
|
|
42
48
|
MIN_DEPTH = 0.001
|
|
43
49
|
MAX_DEPTH = 100.0
|
|
44
50
|
|
|
45
51
|
def __init__(self) -> None:
|
|
46
|
-
"""Initialize zero-valued
|
|
52
|
+
"""Initialize zero-valued per-image metric sums."""
|
|
47
53
|
|
|
48
54
|
self.delta1_sum = 0.0
|
|
49
55
|
self.abs_rel_sum = 0.0
|
|
50
|
-
self.
|
|
51
|
-
self.
|
|
56
|
+
self.rmse_sum = 0.0
|
|
57
|
+
self.valid_sample_count = 0
|
|
52
58
|
|
|
53
59
|
def update(self, prediction: np.ndarray, target: np.ndarray) -> None:
|
|
54
|
-
"""Median-align one prediction and add its
|
|
60
|
+
"""Median-align one prediction and add its per-image metric values."""
|
|
55
61
|
|
|
56
62
|
prediction = _as_real_float32(prediction, "prediction")
|
|
57
63
|
target = _as_real_float32(target, "target")
|
|
@@ -66,8 +72,7 @@ class NYUDepthMetricAccumulator:
|
|
|
66
72
|
valid = (
|
|
67
73
|
np.isfinite(target) & (target > self.MIN_DEPTH) & (target < self.MAX_DEPTH)
|
|
68
74
|
)
|
|
69
|
-
|
|
70
|
-
if valid_pixel_count == 0:
|
|
75
|
+
if not valid.any():
|
|
71
76
|
raise ValueError(
|
|
72
77
|
"NYU Depth sample has no valid pixels in the (0.001, 100.0) range."
|
|
73
78
|
)
|
|
@@ -83,20 +88,22 @@ class NYUDepthMetricAccumulator:
|
|
|
83
88
|
aligned = predicted * (median_target / median_prediction)
|
|
84
89
|
aligned = np.clip(aligned, self.MIN_DEPTH, self.MAX_DEPTH)
|
|
85
90
|
ratio = np.maximum(actual / aligned, aligned / actual)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
self.
|
|
89
|
-
self.
|
|
91
|
+
# Match Ultralytics' depth validator: median-align and calculate all
|
|
92
|
+
# metrics per image, then average validation images equally.
|
|
93
|
+
self.delta1_sum += float(np.mean(ratio < 1.25))
|
|
94
|
+
self.abs_rel_sum += float(np.mean(np.abs(actual - aligned) / actual))
|
|
95
|
+
self.rmse_sum += float(np.sqrt(np.mean((actual - aligned) ** 2)))
|
|
96
|
+
self.valid_sample_count += 1
|
|
90
97
|
|
|
91
98
|
def result(self) -> NYUDepthResult:
|
|
92
|
-
"""Return
|
|
99
|
+
"""Return mean per-image metrics."""
|
|
93
100
|
|
|
94
|
-
if self.
|
|
101
|
+
if self.valid_sample_count == 0:
|
|
95
102
|
raise ValueError("NYU Depth evaluation received no valid pixels.")
|
|
96
103
|
return NYUDepthResult(
|
|
97
|
-
delta1=self.delta1_sum / self.
|
|
98
|
-
abs_rel=self.abs_rel_sum / self.
|
|
99
|
-
rmse=
|
|
104
|
+
delta1=self.delta1_sum / self.valid_sample_count,
|
|
105
|
+
abs_rel=self.abs_rel_sum / self.valid_sample_count,
|
|
106
|
+
rmse=self.rmse_sum / self.valid_sample_count,
|
|
100
107
|
)
|
|
101
108
|
|
|
102
109
|
|
|
@@ -116,7 +123,7 @@ def _as_real_float32(values: np.ndarray, name: str) -> np.ndarray:
|
|
|
116
123
|
def calculate_nyu_depth_metrics(
|
|
117
124
|
prediction: np.ndarray, target: np.ndarray
|
|
118
125
|
) -> NYUDepthResult:
|
|
119
|
-
"""Calculate
|
|
126
|
+
"""Calculate median-aligned NYU metrics for one sample."""
|
|
120
127
|
|
|
121
128
|
accumulator = NYUDepthMetricAccumulator()
|
|
122
129
|
accumulator.update(prediction, target)
|
{mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_widerface.py
RENAMED
|
@@ -34,22 +34,22 @@ class WiderFaceResult(NamedTuple):
|
|
|
34
34
|
hard_ap: float
|
|
35
35
|
|
|
36
36
|
@property
|
|
37
|
-
def
|
|
38
|
-
"""Return
|
|
37
|
+
def primary_score(self) -> float:
|
|
38
|
+
"""Return Hard-set AP as the primary WiderFace metric."""
|
|
39
39
|
|
|
40
|
-
return
|
|
40
|
+
return self.hard_ap
|
|
41
41
|
|
|
42
42
|
@property
|
|
43
|
-
def
|
|
44
|
-
"""Return
|
|
43
|
+
def secondary_score(self) -> float:
|
|
44
|
+
"""Return Medium-set AP for singular-score compatibility."""
|
|
45
45
|
|
|
46
|
-
return self.
|
|
46
|
+
return self.medium_ap
|
|
47
47
|
|
|
48
48
|
@property
|
|
49
|
-
def
|
|
50
|
-
"""Return
|
|
49
|
+
def secondary_scores(self) -> tuple[float, float]:
|
|
50
|
+
"""Return Medium- and Easy-set AP in secondary-metric order."""
|
|
51
51
|
|
|
52
|
-
return self.
|
|
52
|
+
return self.medium_ap, self.easy_ap
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
def _empty_prediction() -> np.ndarray:
|
|
@@ -195,7 +195,7 @@ class YOLODetectionPostBase(PostBase):
|
|
|
195
195
|
conf_thres: float | None = None,
|
|
196
196
|
iou_thres: float | None = None,
|
|
197
197
|
multi_label: bool = False,
|
|
198
|
-
) ->
|
|
198
|
+
) -> Any:
|
|
199
199
|
"""Executes YOLO postprocessing.
|
|
200
200
|
|
|
201
201
|
Includes rearranging, decoding, and NMS.
|
|
@@ -214,6 +214,10 @@ class YOLODetectionPostBase(PostBase):
|
|
|
214
214
|
final_detections, proto_outs = self.extract_final_outputs(x)
|
|
215
215
|
if final_detections is not None:
|
|
216
216
|
if proto_outs is not None:
|
|
217
|
+
if not isinstance(final_detections, list):
|
|
218
|
+
raise TypeError(
|
|
219
|
+
"Mask prototypes require detections as a per-image list."
|
|
220
|
+
)
|
|
217
221
|
return self.masking(final_detections, proto_outs)
|
|
218
222
|
return final_detections
|
|
219
223
|
checked_input = self.check_input(x)
|
|
@@ -291,7 +295,7 @@ class YOLODetectionPostBase(PostBase):
|
|
|
291
295
|
def extract_final_outputs(
|
|
292
296
|
self,
|
|
293
297
|
x: TensorLike | ListTensorLike,
|
|
294
|
-
) -> tuple[list[torch.Tensor] | None, torch.Tensor | None]:
|
|
298
|
+
) -> tuple[list[torch.Tensor] | torch.Tensor | None, torch.Tensor | None]:
|
|
295
299
|
"""Extract already-decoded ONNX-style detections when present.
|
|
296
300
|
|
|
297
301
|
Args:
|
|
@@ -99,15 +99,35 @@ class YOLOAnchorDetectionPost(YOLODetectionPostBase):
|
|
|
99
99
|
``(batch, anchors, no)`` format, optionally paired with prototype masks in
|
|
100
100
|
segmentation subclasses.
|
|
101
101
|
"""
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
# Decode-enabled MXQ artifacts prepend their already-decoded
|
|
103
|
+
# ``(batch, anchors, features)`` output to the raw detection heads.
|
|
104
|
+
# Only raw heads participate in anchor-grid decoding.
|
|
105
|
+
heads = [
|
|
106
|
+
tmp
|
|
107
|
+
for tmp in x
|
|
108
|
+
if (tmp.ndim == 4 and tmp.shape[3] == self.no * self.na)
|
|
109
|
+
or (tmp.ndim == 5 and tmp.shape[1] == self.na and tmp.shape[-1] == self.no)
|
|
110
|
+
]
|
|
111
|
+
if len(heads) != self.nl:
|
|
112
|
+
shapes = ", ".join(str(tuple(tmp.shape)) for tmp in x)
|
|
113
|
+
raise ValueError(
|
|
114
|
+
f"Expected {self.nl} raw detection heads, got {len(heads)} "
|
|
115
|
+
f"from outputs: {shapes}."
|
|
116
|
+
)
|
|
104
117
|
y = []
|
|
105
|
-
for
|
|
106
|
-
tmp
|
|
107
|
-
if tmp.shape[3] == self.no * self.na:
|
|
118
|
+
for tmp in heads:
|
|
119
|
+
if tmp.ndim == 4 and tmp.shape[3] == self.no * self.na:
|
|
108
120
|
y.append(
|
|
109
121
|
tmp.permute(0, 3, 1, 2)
|
|
110
122
|
) # (b, 80, 80, 255) -> (b, 255, 80, 80)
|
|
123
|
+
elif tmp.ndim == 5 and tmp.shape[1] == self.na and tmp.shape[-1] == self.no:
|
|
124
|
+
# WongKinYiu YOLOv7 ONNX exports each head as
|
|
125
|
+
# (batch, anchors, height, width, features).
|
|
126
|
+
y.append(
|
|
127
|
+
tmp.permute(0, 1, 4, 2, 3).reshape(
|
|
128
|
+
tmp.shape[0], self.na * self.no, tmp.shape[2], tmp.shape[3]
|
|
129
|
+
)
|
|
130
|
+
)
|
|
111
131
|
else:
|
|
112
132
|
raise NotImplementedError(
|
|
113
133
|
f"Got unsupported shape for input: {tmp.shape}."
|
|
@@ -9,6 +9,7 @@ from typing import Literal
|
|
|
9
9
|
|
|
10
10
|
import torch
|
|
11
11
|
|
|
12
|
+
from ..types import ListTensorLike, TensorLike
|
|
12
13
|
from .base import YOLODetectionPostBase
|
|
13
14
|
from .common import (
|
|
14
15
|
YOLOOBBPostMixin,
|
|
@@ -563,6 +564,62 @@ class YOLOAnchorlessSegPost(YOLOSegPostMixin, YOLOAnchorlessDetectionPost):
|
|
|
563
564
|
class YOLOAnchorlessPosePost(YOLOPosePostMixin, YOLOAnchorlessDetectionPost):
|
|
564
565
|
"""Postprocessing for YOLO pose estimation models without anchors."""
|
|
565
566
|
|
|
567
|
+
def extract_final_outputs(
|
|
568
|
+
self, x: TensorLike | ListTensorLike
|
|
569
|
+
) -> tuple[list[torch.Tensor] | None, torch.Tensor | None]:
|
|
570
|
+
"""Accept QBCompiler's decode-enabled candidate-first pose output.
|
|
571
|
+
|
|
572
|
+
Decode-enabled MXQs emit ``(B, anchors, 5 + keypoints)`` containing
|
|
573
|
+
``xywh`` boxes, confidence, and decoded keypoint coordinates. Add the
|
|
574
|
+
single-class label column and convert the boxes once. QBCompiler leaves
|
|
575
|
+
visibility as near-zero logits in this layout, so normalize them as the
|
|
576
|
+
split-head pose decoder does.
|
|
577
|
+
"""
|
|
578
|
+
if self.e2e and isinstance(x, (list, tuple)) and len(x) == 1:
|
|
579
|
+
value = x[0]
|
|
580
|
+
if isinstance(value, torch.Tensor):
|
|
581
|
+
tensor = value
|
|
582
|
+
else:
|
|
583
|
+
try:
|
|
584
|
+
tensor = torch.as_tensor(value)
|
|
585
|
+
except (TypeError, ValueError):
|
|
586
|
+
tensor = None
|
|
587
|
+
expected_dim = 5 + self.n_extra
|
|
588
|
+
if (
|
|
589
|
+
tensor is not None
|
|
590
|
+
and tensor.ndim == 3
|
|
591
|
+
and tensor.shape[-1] == expected_dim
|
|
592
|
+
# P6 decode-enabled artifacts do not preserve a valid
|
|
593
|
+
# keypoint-to-candidate association. Fall back to the legacy
|
|
594
|
+
# path (boxes only) rather than draw misleading skeletons.
|
|
595
|
+
and self.nl != 4
|
|
596
|
+
):
|
|
597
|
+
labels = torch.zeros_like(tensor[..., :1])
|
|
598
|
+
boxes = tensor[..., :4].clone()
|
|
599
|
+
boxes[..., :2] -= boxes[..., 2:] / 2
|
|
600
|
+
boxes[..., 2:] += boxes[..., :2]
|
|
601
|
+
keypoints = tensor[..., 5:].reshape(*tensor.shape[:2], -1, 3).clone()
|
|
602
|
+
if not bool(torch.isfinite(keypoints[..., 2]).all()):
|
|
603
|
+
raise ValueError("Decoded pose visibility logits must be finite.")
|
|
604
|
+
keypoints[..., 2] = keypoints[..., 2].sigmoid()
|
|
605
|
+
detections = torch.cat(
|
|
606
|
+
(boxes, tensor[..., 4:5], labels, keypoints.flatten(2)), dim=-1
|
|
607
|
+
)
|
|
608
|
+
# Final-output extraction normally bypasses ``nms``. These
|
|
609
|
+
# compiler candidates are dense, so retain the standard
|
|
610
|
+
# confidence-sorted NMS step before rendering pose skeletons.
|
|
611
|
+
retained_batches = self._final_detection_batches(detections)
|
|
612
|
+
selected_batches = []
|
|
613
|
+
for batch in retained_batches:
|
|
614
|
+
order = torch.argsort(batch[:, 4], descending=True)
|
|
615
|
+
ordered = batch[order]
|
|
616
|
+
keep = non_max_suppression(
|
|
617
|
+
ordered[:, :4], ordered[:, 4], self.iou_thres, max_output=300
|
|
618
|
+
)
|
|
619
|
+
selected_batches.append(ordered[keep])
|
|
620
|
+
return selected_batches, None
|
|
621
|
+
return super().extract_final_outputs(x)
|
|
622
|
+
|
|
566
623
|
def rearrange(self, x: list[torch.Tensor]) -> torch.Tensor:
|
|
567
624
|
"""Rearranges model output tensors for pose estimation tasks.
|
|
568
625
|
|
|
@@ -4,6 +4,7 @@ from typing import Any, cast
|
|
|
4
4
|
|
|
5
5
|
import torch
|
|
6
6
|
|
|
7
|
+
from ..types import ListTensorLike, TensorLike
|
|
7
8
|
from .base import YOLODetectionPostBase
|
|
8
9
|
from .common import (
|
|
9
10
|
YOLOOBBPostMixin,
|
|
@@ -14,6 +15,7 @@ from .common import (
|
|
|
14
15
|
dist2bbox,
|
|
15
16
|
dist2rbox,
|
|
16
17
|
dual_topk,
|
|
18
|
+
non_max_suppression,
|
|
17
19
|
rotated_nms,
|
|
18
20
|
yolo_multilabel_candidates,
|
|
19
21
|
)
|
|
@@ -554,6 +556,41 @@ class YOLODFLFreeSegPost(YOLOSegPostMixin, YOLODFLFreeDetectionPost):
|
|
|
554
556
|
class YOLODFLFreePosePost(YOLOPosePostMixin, YOLODFLFreeDetectionPost):
|
|
555
557
|
"""Postprocessing for YOLO NMS-free pose estimation models."""
|
|
556
558
|
|
|
559
|
+
def extract_final_outputs(
|
|
560
|
+
self, x: TensorLike | ListTensorLike
|
|
561
|
+
) -> tuple[list[torch.Tensor] | None, torch.Tensor | None]:
|
|
562
|
+
"""Accept YOLO26's decode-enabled score, xyxy, and keypoint outputs."""
|
|
563
|
+
if self.e2e and isinstance(x, (list, tuple)) and len(x) == 4:
|
|
564
|
+
tensors = [
|
|
565
|
+
value if isinstance(value, torch.Tensor) else torch.as_tensor(value)
|
|
566
|
+
for value in x
|
|
567
|
+
]
|
|
568
|
+
converted_parts = self._collect_converted_parts(tensors, require_extra=True)
|
|
569
|
+
if converted_parts is not None:
|
|
570
|
+
converted, _ = converted_parts
|
|
571
|
+
boxes = converted[..., :4]
|
|
572
|
+
scores = converted[..., 4 : 4 + self.nc]
|
|
573
|
+
keypoints = converted[..., 4 + self.nc :]
|
|
574
|
+
keypoints = keypoints.reshape(*keypoints.shape[:2], -1, 3).clone()
|
|
575
|
+
if not bool(torch.isfinite(keypoints[..., 2]).all()):
|
|
576
|
+
raise ValueError("Decoded pose visibility logits must be finite.")
|
|
577
|
+
keypoints[..., 2] = keypoints[..., 2].sigmoid()
|
|
578
|
+
labels = torch.zeros_like(scores)
|
|
579
|
+
detections = torch.cat(
|
|
580
|
+
(boxes, scores, labels, keypoints.flatten(2)), dim=-1
|
|
581
|
+
)
|
|
582
|
+
retained_batches = self._final_detection_batches(detections)
|
|
583
|
+
selected_batches = []
|
|
584
|
+
for batch in retained_batches:
|
|
585
|
+
order = torch.argsort(batch[:, 4], descending=True)
|
|
586
|
+
ordered = batch[order]
|
|
587
|
+
keep = non_max_suppression(
|
|
588
|
+
ordered[:, :4], ordered[:, 4], self.iou_thres, max_output=300
|
|
589
|
+
)
|
|
590
|
+
selected_batches.append(ordered[keep])
|
|
591
|
+
return selected_batches, None
|
|
592
|
+
return super().extract_final_outputs(x)
|
|
593
|
+
|
|
557
594
|
def non_e2e(self, x: list[torch.Tensor]) -> torch.Tensor | list[torch.Tensor]:
|
|
558
595
|
"""Return export-style pose outputs for both converted and raw split heads."""
|
|
559
596
|
|
|
@@ -4,8 +4,10 @@ YOLO NMS-free postprocessing.
|
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
|
+
from collections.abc import Sequence
|
|
7
8
|
from typing import Any, cast
|
|
8
9
|
|
|
10
|
+
import numpy as np
|
|
9
11
|
import torch
|
|
10
12
|
|
|
11
13
|
from .common import dist2bbox, dual_topk
|
|
@@ -17,6 +19,101 @@ class YOLONMSFreeDetectionPost(YOLOAnchorlessDetectionPost):
|
|
|
17
19
|
|
|
18
20
|
max_det = 300
|
|
19
21
|
|
|
22
|
+
def _decoded_output_triplet(
|
|
23
|
+
self, x: Any
|
|
24
|
+
) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor] | None:
|
|
25
|
+
"""Return QBCompiler's ordered decoded class, confidence, and box outputs."""
|
|
26
|
+
if not isinstance(x, Sequence) or len(x) != 3:
|
|
27
|
+
return None
|
|
28
|
+
tensors = [
|
|
29
|
+
value if isinstance(value, torch.Tensor) else torch.as_tensor(value)
|
|
30
|
+
for value in x
|
|
31
|
+
if isinstance(value, (np.ndarray, torch.Tensor))
|
|
32
|
+
]
|
|
33
|
+
if len(tensors) != 3:
|
|
34
|
+
return None
|
|
35
|
+
classes, confidence, boxes = tensors
|
|
36
|
+
if not (
|
|
37
|
+
classes.ndim == confidence.ndim == boxes.ndim == 3
|
|
38
|
+
and classes.shape[-1] == self.nc
|
|
39
|
+
and confidence.shape[-1] == 1
|
|
40
|
+
and boxes.shape[-1] == 4
|
|
41
|
+
and classes.shape[:2] == confidence.shape[:2] == boxes.shape[:2]
|
|
42
|
+
):
|
|
43
|
+
return None
|
|
44
|
+
if not bool(torch.isfinite(classes).all()):
|
|
45
|
+
raise ValueError("Decoded YOLOv10 class probabilities must be finite.")
|
|
46
|
+
if not bool(((classes >= 0) & (classes <= 1)).all()):
|
|
47
|
+
raise ValueError("Decoded YOLOv10 class probabilities must be in [0, 1].")
|
|
48
|
+
if not bool(torch.isfinite(confidence).all()):
|
|
49
|
+
raise ValueError("Decoded YOLOv10 confidence values must be finite.")
|
|
50
|
+
if not bool(((confidence >= 0) & (confidence <= 1)).all()):
|
|
51
|
+
raise ValueError("Decoded YOLOv10 confidence values must be in [0, 1].")
|
|
52
|
+
if not bool(torch.isfinite(boxes).all()):
|
|
53
|
+
raise ValueError("Decoded YOLOv10 boxes must be finite.")
|
|
54
|
+
return classes, confidence, boxes
|
|
55
|
+
|
|
56
|
+
def extract_final_outputs(
|
|
57
|
+
self, x: Any
|
|
58
|
+
) -> tuple[list[torch.Tensor] | torch.Tensor | None, torch.Tensor | None]:
|
|
59
|
+
"""Accept QBCompiler's decode-enabled YOLOv10 output triplet.
|
|
60
|
+
|
|
61
|
+
The compiler emits class probabilities, the selected confidence, and
|
|
62
|
+
``xyxy`` boxes separately as ``(B, A, C)``, ``(B, A, 1)``, and
|
|
63
|
+
``(B, A, 4)``. They are already decoded, but are not a conventional
|
|
64
|
+
six-column detection tensor, so normalize them before raw-head logic
|
|
65
|
+
sees the auxiliary tensors.
|
|
66
|
+
"""
|
|
67
|
+
decoded = self._decoded_output_triplet(x)
|
|
68
|
+
if decoded is not None:
|
|
69
|
+
classes, confidence, boxes = decoded
|
|
70
|
+
batches = self._decoded_output_batches(classes, confidence, boxes)
|
|
71
|
+
if not self.e2e:
|
|
72
|
+
return self._stack_topk_outputs(batches), None
|
|
73
|
+
return batches, None
|
|
74
|
+
return super().extract_final_outputs(x)
|
|
75
|
+
|
|
76
|
+
def _decoded_output_batches(
|
|
77
|
+
self,
|
|
78
|
+
classes: torch.Tensor,
|
|
79
|
+
confidence: torch.Tensor,
|
|
80
|
+
boxes: torch.Tensor,
|
|
81
|
+
) -> list[torch.Tensor]:
|
|
82
|
+
"""Normalize a decoded triplet to filtered per-image detection rows."""
|
|
83
|
+
|
|
84
|
+
if self.nc == 1:
|
|
85
|
+
labels = torch.zeros_like(confidence)
|
|
86
|
+
detections = torch.cat((boxes, confidence, labels), dim=-1)
|
|
87
|
+
return [
|
|
88
|
+
batch[torch.argsort(batch[:, 4], descending=True)[: self.max_det]]
|
|
89
|
+
for batch in self._final_detection_batches(detections)
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
candidate_mask = classes.amax(dim=-1) > self.conf_thres
|
|
93
|
+
candidate_boxes = boxes[candidate_mask]
|
|
94
|
+
if candidate_boxes.numel() and not bool(
|
|
95
|
+
(
|
|
96
|
+
(candidate_boxes[:, 2] > candidate_boxes[:, 0])
|
|
97
|
+
& (candidate_boxes[:, 3] > candidate_boxes[:, 1])
|
|
98
|
+
).all()
|
|
99
|
+
):
|
|
100
|
+
raise ValueError(
|
|
101
|
+
"Decoded YOLOv10 boxes must have positive xyxy area after "
|
|
102
|
+
"confidence filtering."
|
|
103
|
+
)
|
|
104
|
+
return [
|
|
105
|
+
self._final_detection_batches(
|
|
106
|
+
dual_topk(
|
|
107
|
+
torch.cat((batch_boxes, batch_classes), dim=-1),
|
|
108
|
+
self.nc,
|
|
109
|
+
self.n_extra,
|
|
110
|
+
max_det=self.max_det,
|
|
111
|
+
conf_thres=self.conf_thres,
|
|
112
|
+
).unsqueeze(0)
|
|
113
|
+
)[0]
|
|
114
|
+
for batch_classes, batch_boxes in zip(classes, boxes)
|
|
115
|
+
]
|
|
116
|
+
|
|
20
117
|
def non_e2e(self, x: list[torch.Tensor]) -> torch.Tensor:
|
|
21
118
|
"""Return the export-style output tensor for NMS-free YOLO models."""
|
|
22
119
|
if len(x) == 2:
|
|
@@ -16,6 +16,7 @@ from mblt_vision.utils.evaluation import (
|
|
|
16
16
|
ImageNetResult,
|
|
17
17
|
NYUDepthResult,
|
|
18
18
|
SemanticSegmentationResult,
|
|
19
|
+
WiderFaceResult,
|
|
19
20
|
)
|
|
20
21
|
|
|
21
22
|
|
|
@@ -160,6 +161,39 @@ def test_benchmark_accepts_obb_model_task(
|
|
|
160
161
|
assert metrics == {"map50_95": 0.5, "map50": 0.7}
|
|
161
162
|
|
|
162
163
|
|
|
164
|
+
def test_benchmark_ranks_widerface_by_hard_ap(
|
|
165
|
+
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
|
166
|
+
) -> None:
|
|
167
|
+
"""Record Hard AP as primary while retaining Medium and Easy AP."""
|
|
168
|
+
|
|
169
|
+
class FakeModel:
|
|
170
|
+
post_cfg = {"task": "face_detection", "dataset": "widerface"}
|
|
171
|
+
|
|
172
|
+
import mblt_vision.utils.evaluation as evaluation_module
|
|
173
|
+
|
|
174
|
+
monkeypatch.setattr(
|
|
175
|
+
evaluation_module,
|
|
176
|
+
"eval_widerface",
|
|
177
|
+
lambda *args, **kwargs: WiderFaceResult(
|
|
178
|
+
easy_ap=0.8, medium_ap=0.7, hard_ap=0.6
|
|
179
|
+
),
|
|
180
|
+
)
|
|
181
|
+
args = argparse.Namespace(
|
|
182
|
+
task="face_detection",
|
|
183
|
+
data_path=str(tmp_path),
|
|
184
|
+
batch_size=1,
|
|
185
|
+
conf_thres=None,
|
|
186
|
+
iou_thres=None,
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
score, score_name, metrics = benchmark_vision_models._evaluate(
|
|
190
|
+
FakeModel(), args, tmp_path
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
assert (score, score_name) == (0.6, "hard_ap")
|
|
194
|
+
assert metrics == {"easy_ap": 0.8, "medium_ap": 0.7, "hard_ap": 0.6}
|
|
195
|
+
|
|
196
|
+
|
|
163
197
|
def test_benchmark_continues_after_evaluator_type_error(
|
|
164
198
|
monkeypatch: pytest.MonkeyPatch, tmp_path: Path
|
|
165
199
|
) -> None:
|
|
@@ -68,6 +68,18 @@ def test_nyu_depth_metrics_reject_nonreal_or_nonnumeric_inputs(dtype: np.dtype)
|
|
|
68
68
|
eval_nyu_depth_module.calculate_nyu_depth_metrics(values, values)
|
|
69
69
|
|
|
70
70
|
|
|
71
|
+
def test_nyu_depth_metrics_average_rmse_per_image() -> None:
|
|
72
|
+
"""Match Ultralytics' equal-weighted, median-aligned depth metrics."""
|
|
73
|
+
|
|
74
|
+
accumulator = eval_nyu_depth_module.NYUDepthMetricAccumulator()
|
|
75
|
+
accumulator.update(np.array([1.0, 4.0]), np.array([1.0, 2.0]))
|
|
76
|
+
accumulator.update(np.array([1.0, 2.0, 3.0, 8.0]), np.array([1.0, 2.0, 3.0, 4.0]))
|
|
77
|
+
|
|
78
|
+
result = accumulator.result()
|
|
79
|
+
assert np.isclose(result.rmse, 1.2)
|
|
80
|
+
assert result.secondary_scores == (result.abs_rel, result.rmse)
|
|
81
|
+
|
|
82
|
+
|
|
71
83
|
def test_nyu_depth_evaluation_rejects_wrong_model_taxonomy() -> None:
|
|
72
84
|
"""Require the model's declared depth taxonomy before loading a dataset."""
|
|
73
85
|
|
|
@@ -14,6 +14,16 @@ eval_widerface_module = importlib.import_module(
|
|
|
14
14
|
)
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
def test_widerface_result_uses_hard_ap_as_primary() -> None:
|
|
18
|
+
"""Rank by Hard AP and retain Medium then Easy as secondary metrics."""
|
|
19
|
+
|
|
20
|
+
result = eval_widerface_module.WiderFaceResult(0.8, 0.7, 0.6)
|
|
21
|
+
|
|
22
|
+
assert result.primary_score == 0.6
|
|
23
|
+
assert result.secondary_score == 0.7
|
|
24
|
+
assert result.secondary_scores == (0.7, 0.8)
|
|
25
|
+
|
|
26
|
+
|
|
17
27
|
def test_widerface_evaluation_rejects_wrong_model_taxonomy() -> None:
|
|
18
28
|
"""Do not evaluate another detector taxonomy using WiderFace metadata."""
|
|
19
29
|
|