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.
Files changed (433) hide show
  1. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/PKG-INFO +1 -1
  2. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/__init__.py +1 -1
  3. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/val.py +3 -4
  4. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_nyu_depth.py +25 -18
  5. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_widerface.py +9 -9
  6. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/base.py +6 -2
  7. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/yolo_anchor_post.py +25 -5
  8. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/yolo_anchorless_post.py +57 -0
  9. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/yolo_dflfree_post.py +37 -0
  10. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/yolo_nmsfree_post.py +97 -0
  11. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/PKG-INFO +1 -1
  12. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_benchmark_vision.py +34 -0
  13. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_nyu_depth.py +12 -0
  14. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_widerface.py +10 -0
  15. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_postprocess_hierarchy.py +303 -0
  16. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/LICENSE +0 -0
  17. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/README.md +0 -0
  18. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/_api.py +0 -0
  19. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/_compat.py +0 -0
  20. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/_model_paths.py +0 -0
  21. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/_tasks.py +0 -0
  22. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/__init__.py +0 -0
  23. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/argparse_utils.py +0 -0
  24. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/chart_utils.py +0 -0
  25. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/io_utils.py +0 -0
  26. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/benchmark/summary_utils.py +0 -0
  27. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/__init__.py +0 -0
  28. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/__main__.py +0 -0
  29. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/_vision.py +0 -0
  30. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/compile.py +0 -0
  31. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/main.py +0 -0
  32. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/cli/predict.py +0 -0
  33. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/compile/__init__.py +0 -0
  34. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/compile/vision.py +0 -0
  35. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/__init__.py +0 -0
  36. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/ade20k.yaml +0 -0
  37. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/cityscapes.yaml +0 -0
  38. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/coco.yaml +0 -0
  39. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/dotav1.yaml +0 -0
  40. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/imagenet.yaml +0 -0
  41. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/imagenet_synsets.txt +0 -0
  42. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/nyu-depth.yaml +0 -0
  43. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/registry.py +0 -0
  44. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/datasets/widerface.yaml +0 -0
  45. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/depth_estimation/__init__.py +0 -0
  46. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/face_detection/__init__.py +0 -0
  47. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/image_classification/__init__.py +0 -0
  48. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/instance_segmentation/__init__.py +0 -0
  49. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/AlexNet.yaml +0 -0
  50. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CAFormer_B36.yaml +0 -0
  51. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CAFormer_M36.yaml +0 -0
  52. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CAFormer_S18.yaml +0 -0
  53. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CAFormer_S36.yaml +0 -0
  54. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CoAtNet_0_RW_224.yaml +0 -0
  55. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CoAtNet_1_RW_224.yaml +0 -0
  56. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/CoAtNet_2_RW_224.yaml +0 -0
  57. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvFormer_B36.yaml +0 -0
  58. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvFormer_M36.yaml +0 -0
  59. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvFormer_S18.yaml +0 -0
  60. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvFormer_S36.yaml +0 -0
  61. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvNext_Base.yaml +0 -0
  62. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvNext_Large.yaml +0 -0
  63. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvNext_Small.yaml +0 -0
  64. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ConvNext_Tiny.yaml +0 -0
  65. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Base_Patch16_224.yaml +0 -0
  66. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Base_Patch16_384.yaml +0 -0
  67. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Large_Patch16_224.yaml +0 -0
  68. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Large_Patch16_384.yaml +0 -0
  69. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Medium_Patch16_224.yaml +0 -0
  70. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Small_Patch16_224.yaml +0 -0
  71. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT3_Small_Patch16_384.yaml +0 -0
  72. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT_Base_Patch16_224.yaml +0 -0
  73. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT_Base_Patch16_384.yaml +0 -0
  74. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT_Small_Patch16_224.yaml +0 -0
  75. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DeiT_Tiny_Patch16_224.yaml +0 -0
  76. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DenseNet121.yaml +0 -0
  77. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DenseNet161.yaml +0 -0
  78. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DenseNet169.yaml +0 -0
  79. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/DenseNet201.yaml +0 -0
  80. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientFormer_L1.yaml +0 -0
  81. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientFormer_L3.yaml +0 -0
  82. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientFormer_L7.yaml +0 -0
  83. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B0.yaml +0 -0
  84. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B1.yaml +0 -0
  85. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B2.yaml +0 -0
  86. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B3.yaml +0 -0
  87. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B4.yaml +0 -0
  88. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B5.yaml +0 -0
  89. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B6.yaml +0 -0
  90. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_B7.yaml +0 -0
  91. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_V2_L.yaml +0 -0
  92. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_V2_M.yaml +0 -0
  93. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/EfficientNet_V2_S.yaml +0 -0
  94. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/FlexiVit_Base.yaml +0 -0
  95. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/FlexiVit_Large.yaml +0 -0
  96. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/FlexiVit_Small.yaml +0 -0
  97. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANc-seg.yaml +0 -0
  98. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANc.yaml +0 -0
  99. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANe.yaml +0 -0
  100. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANm.yaml +0 -0
  101. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GELANs.yaml +0 -0
  102. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/GoogLeNet.yaml +0 -0
  103. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Inception_V3.yaml +0 -0
  104. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_128.yaml +0 -0
  105. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_128S.yaml +0 -0
  106. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_192.yaml +0 -0
  107. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_256.yaml +0 -0
  108. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/LeViT_Conv_384.yaml +0 -0
  109. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MNASNet0_5.yaml +0 -0
  110. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MNASNet0_75.yaml +0 -0
  111. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MNASNet1_0.yaml +0 -0
  112. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MNASNet1_3.yaml +0 -0
  113. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MobileNet_V2.yaml +0 -0
  114. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MobileNet_V3_Large.yaml +0 -0
  115. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/MobileNet_V3_Small.yaml +0 -0
  116. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_16GF.yaml +0 -0
  117. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_1_6GF.yaml +0 -0
  118. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_32GF.yaml +0 -0
  119. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_3_2GF.yaml +0 -0
  120. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_400MF.yaml +0 -0
  121. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_800MF.yaml +0 -0
  122. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_X_8GF.yaml +0 -0
  123. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_16GF.yaml +0 -0
  124. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_1_6GF.yaml +0 -0
  125. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_32GF.yaml +0 -0
  126. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_3_2GF.yaml +0 -0
  127. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_400MF.yaml +0 -0
  128. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_800MF.yaml +0 -0
  129. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RegNet_Y_8GF.yaml +0 -0
  130. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M0_9.yaml +0 -0
  131. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M1.yaml +0 -0
  132. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M1_0.yaml +0 -0
  133. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M1_1.yaml +0 -0
  134. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M1_5.yaml +0 -0
  135. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M2.yaml +0 -0
  136. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M2_3.yaml +0 -0
  137. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/RepViT_M3.yaml +0 -0
  138. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNeXt101_32X8D.yaml +0 -0
  139. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNeXt101_64X4D.yaml +0 -0
  140. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNeXt50_32X4D.yaml +0 -0
  141. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet101.yaml +0 -0
  142. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet152.yaml +0 -0
  143. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet18.yaml +0 -0
  144. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet34.yaml +0 -0
  145. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ResNet50.yaml +0 -0
  146. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ShuffleNet_V2_X0_5.yaml +0 -0
  147. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ShuffleNet_V2_X1_0.yaml +0 -0
  148. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ShuffleNet_V2_X1_5.yaml +0 -0
  149. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ShuffleNet_V2_X2_0.yaml +0 -0
  150. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/SqueezeNet1_0.yaml +0 -0
  151. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/SqueezeNet1_1.yaml +0 -0
  152. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Swin_B.yaml +0 -0
  153. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Swin_S.yaml +0 -0
  154. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Swin_T.yaml +0 -0
  155. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG11.yaml +0 -0
  156. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG11_BN.yaml +0 -0
  157. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG13.yaml +0 -0
  158. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG13_BN.yaml +0 -0
  159. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG16.yaml +0 -0
  160. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG16_BN.yaml +0 -0
  161. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG19.yaml +0 -0
  162. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VGG19_BN.yaml +0 -0
  163. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_B_16.yaml +0 -0
  164. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_B_32.yaml +0 -0
  165. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch16_224.yaml +0 -0
  166. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch16_384.yaml +0 -0
  167. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch32_224.yaml +0 -0
  168. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch32_384.yaml +0 -0
  169. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Base_Patch8_224.yaml +0 -0
  170. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_L_16.yaml +0 -0
  171. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_L_32.yaml +0 -0
  172. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Large_Patch16_224.yaml +0 -0
  173. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Large_Patch16_384.yaml +0 -0
  174. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Large_Patch32_384.yaml +0 -0
  175. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Small_Patch16_224.yaml +0 -0
  176. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Small_Patch16_384.yaml +0 -0
  177. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Small_Patch32_224.yaml +0 -0
  178. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Small_Patch32_384.yaml +0 -0
  179. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Tiny_Patch16_224.yaml +0 -0
  180. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/ViT_Tiny_Patch16_384.yaml +0 -0
  181. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VisFormer_Small.yaml +0 -0
  182. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/VisFormer_Tiny.yaml +0 -0
  183. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Wide_ResNet101_2.yaml +0 -0
  184. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/Wide_ResNet50_2.yaml +0 -0
  185. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-cls.yaml +0 -0
  186. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-face.yaml +0 -0
  187. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-obb.yaml +0 -0
  188. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-pose.yaml +0 -0
  189. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l-seg.yaml +0 -0
  190. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11l.yaml +0 -0
  191. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-cls.yaml +0 -0
  192. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-face.yaml +0 -0
  193. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-obb.yaml +0 -0
  194. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-pose.yaml +0 -0
  195. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m-seg.yaml +0 -0
  196. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11m.yaml +0 -0
  197. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-cls.yaml +0 -0
  198. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-face.yaml +0 -0
  199. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-obb.yaml +0 -0
  200. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-pose.yaml +0 -0
  201. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n-seg.yaml +0 -0
  202. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11n.yaml +0 -0
  203. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-cls.yaml +0 -0
  204. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-face.yaml +0 -0
  205. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-obb.yaml +0 -0
  206. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-pose.yaml +0 -0
  207. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s-seg.yaml +0 -0
  208. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11s.yaml +0 -0
  209. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x-cls.yaml +0 -0
  210. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x-obb.yaml +0 -0
  211. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x-pose.yaml +0 -0
  212. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x-seg.yaml +0 -0
  213. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO11x.yaml +0 -0
  214. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12l-face.yaml +0 -0
  215. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12l-seg.yaml +0 -0
  216. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12l.yaml +0 -0
  217. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12m-face.yaml +0 -0
  218. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12m-seg.yaml +0 -0
  219. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12m.yaml +0 -0
  220. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12n-face.yaml +0 -0
  221. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12n-seg.yaml +0 -0
  222. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12n.yaml +0 -0
  223. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12s-face.yaml +0 -0
  224. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12s-seg.yaml +0 -0
  225. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12s.yaml +0 -0
  226. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12x-seg.yaml +0 -0
  227. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO12x.yaml +0 -0
  228. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-cls.yaml +0 -0
  229. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-depth.yaml +0 -0
  230. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-distill.yaml +0 -0
  231. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-obb.yaml +0 -0
  232. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-pose.yaml +0 -0
  233. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-seg.yaml +0 -0
  234. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-sem-ade20k.yaml +0 -0
  235. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l-sem.yaml +0 -0
  236. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26l.yaml +0 -0
  237. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-cls.yaml +0 -0
  238. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-depth.yaml +0 -0
  239. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-distill.yaml +0 -0
  240. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-obb.yaml +0 -0
  241. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-pose.yaml +0 -0
  242. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-seg.yaml +0 -0
  243. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-sem-ade20k.yaml +0 -0
  244. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m-sem.yaml +0 -0
  245. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26m.yaml +0 -0
  246. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-cls.yaml +0 -0
  247. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-depth.yaml +0 -0
  248. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-distill.yaml +0 -0
  249. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-obb.yaml +0 -0
  250. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-pose.yaml +0 -0
  251. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-seg.yaml +0 -0
  252. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-sem-ade20k.yaml +0 -0
  253. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n-sem.yaml +0 -0
  254. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26n.yaml +0 -0
  255. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-cls.yaml +0 -0
  256. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-depth.yaml +0 -0
  257. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-distill.yaml +0 -0
  258. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-obb.yaml +0 -0
  259. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-pose.yaml +0 -0
  260. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-seg.yaml +0 -0
  261. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-sem-ade20k.yaml +0 -0
  262. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s-sem.yaml +0 -0
  263. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26s.yaml +0 -0
  264. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-cls.yaml +0 -0
  265. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-depth.yaml +0 -0
  266. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-distill.yaml +0 -0
  267. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-obb.yaml +0 -0
  268. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-pose.yaml +0 -0
  269. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-seg.yaml +0 -0
  270. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-sem-ade20k.yaml +0 -0
  271. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x-sem.yaml +0 -0
  272. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLO26x.yaml +0 -0
  273. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10b.yaml +0 -0
  274. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10l-face.yaml +0 -0
  275. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10l.yaml +0 -0
  276. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10m-face.yaml +0 -0
  277. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10m.yaml +0 -0
  278. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10n-face.yaml +0 -0
  279. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10n.yaml +0 -0
  280. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10s-face.yaml +0 -0
  281. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10s.yaml +0 -0
  282. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv10x.yaml +0 -0
  283. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3-spp.yaml +0 -0
  284. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3-sppu.yaml +0 -0
  285. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3-tiny.yaml +0 -0
  286. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3-tinyu.yaml +0 -0
  287. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3.yaml +0 -0
  288. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv3u.yaml +0 -0
  289. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l-cls.yaml +0 -0
  290. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l-seg.yaml +0 -0
  291. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l.yaml +0 -0
  292. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l6.yaml +0 -0
  293. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5l6u.yaml +0 -0
  294. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5lu.yaml +0 -0
  295. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m-cls.yaml +0 -0
  296. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m-seg.yaml +0 -0
  297. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m.yaml +0 -0
  298. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m6.yaml +0 -0
  299. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5m6u.yaml +0 -0
  300. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5mu.yaml +0 -0
  301. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n-cls.yaml +0 -0
  302. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n-seg.yaml +0 -0
  303. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n.yaml +0 -0
  304. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n6.yaml +0 -0
  305. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5n6u.yaml +0 -0
  306. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5nu.yaml +0 -0
  307. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s-cls.yaml +0 -0
  308. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s-seg.yaml +0 -0
  309. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s.yaml +0 -0
  310. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s6.yaml +0 -0
  311. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5s6u.yaml +0 -0
  312. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5su.yaml +0 -0
  313. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x-cls.yaml +0 -0
  314. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x-seg.yaml +0 -0
  315. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x.yaml +0 -0
  316. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x6.yaml +0 -0
  317. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5x6u.yaml +0 -0
  318. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv5xu.yaml +0 -0
  319. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv6m-face.yaml +0 -0
  320. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv6n-face.yaml +0 -0
  321. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7.yaml +0 -0
  322. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7d6.yaml +0 -0
  323. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7e6.yaml +0 -0
  324. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7e6e.yaml +0 -0
  325. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7w6.yaml +0 -0
  326. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv7x.yaml +0 -0
  327. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-cls.yaml +0 -0
  328. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-face.yaml +0 -0
  329. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-obb.yaml +0 -0
  330. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-pose.yaml +0 -0
  331. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l-seg.yaml +0 -0
  332. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8l.yaml +0 -0
  333. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-cls.yaml +0 -0
  334. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-face.yaml +0 -0
  335. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-obb.yaml +0 -0
  336. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-pose.yaml +0 -0
  337. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m-seg.yaml +0 -0
  338. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8m.yaml +0 -0
  339. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-cls.yaml +0 -0
  340. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-face.yaml +0 -0
  341. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-obb.yaml +0 -0
  342. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-pose.yaml +0 -0
  343. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n-seg.yaml +0 -0
  344. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8n.yaml +0 -0
  345. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s-cls.yaml +0 -0
  346. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s-obb.yaml +0 -0
  347. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s-pose.yaml +0 -0
  348. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s-seg.yaml +0 -0
  349. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8s.yaml +0 -0
  350. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-cls.yaml +0 -0
  351. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-obb.yaml +0 -0
  352. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-pose-p6.yaml +0 -0
  353. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-pose.yaml +0 -0
  354. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x-seg.yaml +0 -0
  355. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv8x.yaml +0 -0
  356. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9c-seg.yaml +0 -0
  357. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9c.yaml +0 -0
  358. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9e-seg.yaml +0 -0
  359. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9e.yaml +0 -0
  360. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9m.yaml +0 -0
  361. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9s.yaml +0 -0
  362. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/models/YOLOv9t.yaml +0 -0
  363. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/obb/__init__.py +0 -0
  364. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/object_detection/__init__.py +0 -0
  365. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/pose_estimation/__init__.py +0 -0
  366. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/py.typed +0 -0
  367. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/semantic_segmentation/__init__.py +0 -0
  368. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/__init__.py +0 -0
  369. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/__init__.py +0 -0
  370. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/ade20k.py +0 -0
  371. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/cityscapes.py +0 -0
  372. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/coco.py +0 -0
  373. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/dataloader.py +0 -0
  374. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/dotav1.py +0 -0
  375. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/imagenet.py +0 -0
  376. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/organizer.py +0 -0
  377. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/datasets/readiness.py +0 -0
  378. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/__init__.py +0 -0
  379. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/_result.py +0 -0
  380. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_ade20k.py +0 -0
  381. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_cityscapes.py +0 -0
  382. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_coco.py +0 -0
  383. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_dota.py +0 -0
  384. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/evaluation/eval_imagenet.py +0 -0
  385. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/letterbox.py +0 -0
  386. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/__init__.py +0 -0
  387. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/_letterbox.py +0 -0
  388. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/build_post.py +0 -0
  389. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/cls_post.py +0 -0
  390. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/common.py +0 -0
  391. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/depth_post.py +0 -0
  392. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/postprocess/semantic_seg_post.py +0 -0
  393. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/__init__.py +0 -0
  394. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/_validation.py +0 -0
  395. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/base.py +0 -0
  396. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/build_pre.py +0 -0
  397. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/center_crop.py +0 -0
  398. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/letterbox.py +0 -0
  399. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/normalize.py +0 -0
  400. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/order.py +0 -0
  401. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/reader.py +0 -0
  402. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/resize.py +0 -0
  403. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/preprocess/yolo_pre.py +0 -0
  404. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/results.py +0 -0
  405. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/utils/types.py +0 -0
  406. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision/wrapper.py +0 -0
  407. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/SOURCES.txt +0 -0
  408. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/dependency_links.txt +0 -0
  409. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/entry_points.txt +0 -0
  410. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/requires.txt +0 -0
  411. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/mblt_vision_python.egg-info/top_level.txt +0 -0
  412. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/pyproject.toml +0 -0
  413. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/setup.cfg +0 -0
  414. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_api.py +0 -0
  415. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_cli.py +0 -0
  416. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_compile_vision.py +0 -0
  417. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_dataloader.py +0 -0
  418. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_dataset_organizer.py +0 -0
  419. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_dataset_readiness.py +0 -0
  420. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_depth_estimation.py +0 -0
  421. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_coco.py +0 -0
  422. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_dota.py +0 -0
  423. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_eval_imagenet.py +0 -0
  424. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_face_detection.py +0 -0
  425. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_model_aliasing.py +0 -0
  426. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_model_metadata.py +0 -0
  427. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_mxq_inference.py +0 -0
  428. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_onnx_classification.py +0 -0
  429. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_onnx_yolo.py +0 -0
  430. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_preprocess_validation.py +0 -0
  431. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_results.py +0 -0
  432. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_semantic_segmentation.py +0 -0
  433. {mblt_vision_python-0.0.1 → mblt_vision_python-0.0.2}/tests/test_wrapper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mblt-vision-python
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary: Mobilint NPU vision models: classification, detection, segmentation, pose
5
5
  Author: Mobilint
6
6
  License: BSD-3-Clause
@@ -19,7 +19,7 @@ from ._api import list_models as list_models
19
19
  from ._api import list_tasks as list_tasks
20
20
  from .wrapper import MBLT_Engine as MBLT_Engine
21
21
 
22
- __version__ = "0.0.1"
22
+ __version__ = "0.0.2"
23
23
 
24
24
  _TASK_MODULES = (
25
25
  face_detection,
@@ -439,10 +439,9 @@ def _run_validation(args: argparse.Namespace) -> float:
439
439
  )
440
440
  print(
441
441
  "Validation score "
442
- f"(Easy AP): {widerface_result.easy_ap:.5f}, "
443
- f"(Medium AP): {widerface_result.medium_ap:.5f}, "
444
- f"(Hard AP): {widerface_result.hard_ap:.5f}, "
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
 
@@ -31,27 +31,33 @@ class NYUDepthResult:
31
31
 
32
32
  @property
33
33
  def secondary_score(self) -> float:
34
- """Return the secondary NYU Depth validation metric."""
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 over every valid NYU depth pixel."""
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 pixel sums."""
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.squared_error_sum = 0.0
51
- self.valid_pixel_count = 0
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 valid-pixel statistics."""
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
- valid_pixel_count = int(valid.sum())
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
- self.delta1_sum += float(np.sum(ratio < 1.25))
87
- self.abs_rel_sum += float(np.sum(np.abs(actual - aligned) / actual))
88
- self.squared_error_sum += float(np.sum((actual - aligned) ** 2))
89
- self.valid_pixel_count += valid_pixel_count
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 metrics pooled over all accumulated valid pixels."""
99
+ """Return mean per-image metrics."""
93
100
 
94
- if self.valid_pixel_count == 0:
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.valid_pixel_count,
98
- abs_rel=self.abs_rel_sum / self.valid_pixel_count,
99
- rmse=float(np.sqrt(self.squared_error_sum / self.valid_pixel_count)),
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 official pooled metrics for one median-aligned NYU sample."""
126
+ """Calculate median-aligned NYU metrics for one sample."""
120
127
 
121
128
  accumulator = NYUDepthMetricAccumulator()
122
129
  accumulator.update(prediction, target)
@@ -34,22 +34,22 @@ class WiderFaceResult(NamedTuple):
34
34
  hard_ap: float
35
35
 
36
36
  @property
37
- def mean_ap(self) -> float:
38
- """Return the mean AP across Easy, Medium, and Hard."""
37
+ def primary_score(self) -> float:
38
+ """Return Hard-set AP as the primary WiderFace metric."""
39
39
 
40
- return (self.easy_ap + self.medium_ap + self.hard_ap) / 3.0
40
+ return self.hard_ap
41
41
 
42
42
  @property
43
- def primary_score(self) -> float:
44
- """Return mean AP across the three validation splits."""
43
+ def secondary_score(self) -> float:
44
+ """Return Medium-set AP for singular-score compatibility."""
45
45
 
46
- return self.mean_ap
46
+ return self.medium_ap
47
47
 
48
48
  @property
49
- def secondary_score(self) -> float:
50
- """Return Hard-set AP."""
49
+ def secondary_scores(self) -> tuple[float, float]:
50
+ """Return Medium- and Easy-set AP in secondary-metric order."""
51
51
 
52
- return self.hard_ap
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
- ) -> list[Any]:
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
- if len(x) != self.nl:
103
- raise ValueError(f"Expected {self.nl} detection heads, got {len(x)}.")
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 i in range(self.nl):
106
- tmp = x[i]
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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mblt-vision-python
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary: Mobilint NPU vision models: classification, detection, segmentation, pose
5
5
  Author: Mobilint
6
6
  License: BSD-3-Clause
@@ -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