matrice-analytics 0.1.53__tar.gz → 0.1.55__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.

Potentially problematic release.


This version of matrice-analytics might be problematic. Click here for more details.

Files changed (201) hide show
  1. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/PKG-INFO +1 -1
  2. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/matrice_analytics.egg-info/PKG-INFO +1 -1
  3. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/face_reg/embedding_manager.py +113 -24
  4. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/face_reg/face_recognition.py +11 -15
  5. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/LICENSE.txt +0 -0
  6. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/README.md +0 -0
  7. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/matrice_analytics.egg-info/SOURCES.txt +0 -0
  8. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/matrice_analytics.egg-info/dependency_links.txt +0 -0
  9. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/matrice_analytics.egg-info/not-zip-safe +0 -0
  10. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/matrice_analytics.egg-info/top_level.txt +0 -0
  11. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/pyproject.toml +0 -0
  12. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/setup.cfg +0 -0
  13. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/setup.py +0 -0
  14. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/__init__.py +0 -0
  15. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/README.md +0 -0
  16. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/__init__.py +0 -0
  17. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/boundary_drawing_internal.py +0 -0
  18. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/boundary_drawing_tool.py +0 -0
  19. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/boundary_tool_template.html +0 -0
  20. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/example_usage.py +0 -0
  21. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/usage/README.md +0 -0
  22. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/usage/boundary_drawer_launcher.py +0 -0
  23. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/boundary_drawing_internal/usage/simple_boundary_launcher.py +0 -0
  24. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/README.md +0 -0
  25. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/__init__.py +0 -0
  26. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/advanced_tracker/README.md +0 -0
  27. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/advanced_tracker/__init__.py +0 -0
  28. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/advanced_tracker/base.py +0 -0
  29. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/advanced_tracker/config.py +0 -0
  30. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/advanced_tracker/kalman_filter.py +0 -0
  31. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/advanced_tracker/matching.py +0 -0
  32. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/advanced_tracker/strack.py +0 -0
  33. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/advanced_tracker/tracker.py +0 -0
  34. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/config.py +0 -0
  35. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/core/__init__.py +0 -0
  36. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/core/base.py +0 -0
  37. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/core/config.py +0 -0
  38. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/core/config_utils.py +0 -0
  39. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/face_reg/__init__.py +0 -0
  40. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/face_reg/compare_similarity.py +0 -0
  41. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/face_reg/face_recognition_client.py +0 -0
  42. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/face_reg/people_activity_logging.py +0 -0
  43. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/__init__.py +0 -0
  44. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/easyocr_extractor.py +0 -0
  45. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/__init__.py +0 -0
  46. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/__init__.py +0 -0
  47. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/cli.py +0 -0
  48. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/dataset_stats.py +0 -0
  49. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/export.py +0 -0
  50. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/train.py +0 -0
  51. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/utils.py +0 -0
  52. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/valid.py +0 -0
  53. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/validate_dataset.py +0 -0
  54. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/visualize_augmentation.py +0 -0
  55. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/cli/visualize_predictions.py +0 -0
  56. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/core/__init__.py +0 -0
  57. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/core/process.py +0 -0
  58. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/core/types.py +0 -0
  59. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/core/utils.py +0 -0
  60. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/inference/__init__.py +0 -0
  61. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/inference/config.py +0 -0
  62. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/inference/hub.py +0 -0
  63. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/inference/plate_recognizer.py +0 -0
  64. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/py.typed +0 -0
  65. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/__init__.py +0 -0
  66. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/data/__init__.py +0 -0
  67. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/data/augmentation.py +0 -0
  68. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/data/dataset.py +0 -0
  69. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/model/__init__.py +0 -0
  70. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/model/config.py +0 -0
  71. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/model/layers.py +0 -0
  72. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/model/loss.py +0 -0
  73. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/model/metric.py +0 -0
  74. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/model/model_builders.py +0 -0
  75. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/model/model_schema.py +0 -0
  76. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/utilities/__init__.py +0 -0
  77. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/utilities/backend_utils.py +0 -0
  78. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/fast_plate_ocr_py38/train/utilities/utils.py +0 -0
  79. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/postprocessing.py +0 -0
  80. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/ocr/preprocessing.py +0 -0
  81. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/post_processor.py +0 -0
  82. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/__init__.py +0 -0
  83. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/run_tests.py +0 -0
  84. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_advanced_customer_service.py +0 -0
  85. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_basic_counting_tracking.py +0 -0
  86. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_comprehensive.py +0 -0
  87. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_config.py +0 -0
  88. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_customer_service.py +0 -0
  89. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_data_generators.py +0 -0
  90. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_people_counting.py +0 -0
  91. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_processor.py +0 -0
  92. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_usecases.py +0 -0
  93. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_utilities.py +0 -0
  94. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/test_cases/test_utils.py +0 -0
  95. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/Histopathological_Cancer_Detection_img.py +0 -0
  96. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/__init__.py +0 -0
  97. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/abandoned_object_detection.py +0 -0
  98. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/advanced_customer_service.py +0 -0
  99. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/age_detection.py +0 -0
  100. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/age_gender_detection.py +0 -0
  101. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/anti_spoofing_detection.py +0 -0
  102. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/assembly_line_detection.py +0 -0
  103. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/banana_defect_detection.py +0 -0
  104. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/basic_counting_tracking.py +0 -0
  105. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/blood_cancer_detection_img.py +0 -0
  106. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/car_damage_detection.py +0 -0
  107. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/car_part_segmentation.py +0 -0
  108. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/car_service.py +0 -0
  109. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/cardiomegaly_classification.py +0 -0
  110. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/cell_microscopy_segmentation.py +0 -0
  111. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/chicken_pose_detection.py +0 -0
  112. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/child_monitoring.py +0 -0
  113. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/clip.py +0 -0
  114. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/clip_processor/merges.txt +0 -0
  115. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/clip_processor/preprocessor_config.json +0 -0
  116. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/clip_processor/special_tokens_map.json +0 -0
  117. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/clip_processor/tokenizer.json +0 -0
  118. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/clip_processor/tokenizer_config.json +0 -0
  119. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/clip_processor/vocab.json +0 -0
  120. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/color_map_utils.py +0 -0
  121. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color/color_mapper.py +0 -0
  122. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color_detection.py +0 -0
  123. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/color_map_utils.py +0 -0
  124. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/concrete_crack_detection.py +0 -0
  125. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/crop_weed_detection.py +0 -0
  126. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/customer_service.py +0 -0
  127. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/defect_detection_products.py +0 -0
  128. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/distracted_driver_detection.py +0 -0
  129. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/drone_traffic_monitoring.py +0 -0
  130. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/drowsy_driver_detection.py +0 -0
  131. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/dwell_detection.py +0 -0
  132. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/emergency_vehicle_detection.py +0 -0
  133. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/face_emotion.py +0 -0
  134. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/face_recognition.py +0 -0
  135. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/fashion_detection.py +0 -0
  136. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/field_mapping.py +0 -0
  137. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/fire_detection.py +0 -0
  138. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/flare_analysis.py +0 -0
  139. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/flower_segmentation.py +0 -0
  140. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/gas_leak_detection.py +0 -0
  141. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/gender_detection.py +0 -0
  142. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/human_activity_recognition.py +0 -0
  143. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/intrusion_detection.py +0 -0
  144. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/leaf.py +0 -0
  145. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/leaf_disease.py +0 -0
  146. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/leak_detection.py +0 -0
  147. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/license_plate_detection.py +0 -0
  148. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/license_plate_monitoring.py +0 -0
  149. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/litter_monitoring.py +0 -0
  150. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/mask_detection.py +0 -0
  151. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/natural_disaster.py +0 -0
  152. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/parking.py +0 -0
  153. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/parking_space_detection.py +0 -0
  154. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/pcb_defect_detection.py +0 -0
  155. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/pedestrian_detection.py +0 -0
  156. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/people_counting.py +0 -0
  157. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/people_counting_bckp.py +0 -0
  158. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/people_tracking.py +0 -0
  159. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/pipeline_detection.py +0 -0
  160. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/plaque_segmentation_img.py +0 -0
  161. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/pothole_segmentation.py +0 -0
  162. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/ppe_compliance.py +0 -0
  163. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/price_tag_detection.py +0 -0
  164. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/proximity_detection.py +0 -0
  165. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/road_lane_detection.py +0 -0
  166. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/road_traffic_density.py +0 -0
  167. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/road_view_segmentation.py +0 -0
  168. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/shelf_inventory_detection.py +0 -0
  169. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/shoplifting_detection.py +0 -0
  170. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/shopping_cart_analysis.py +0 -0
  171. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/skin_cancer_classification_img.py +0 -0
  172. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/smoker_detection.py +0 -0
  173. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/solar_panel.py +0 -0
  174. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/suspicious_activity_detection.py +0 -0
  175. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/template_usecase.py +0 -0
  176. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/theft_detection.py +0 -0
  177. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/traffic_sign_monitoring.py +0 -0
  178. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/underground_pipeline_defect_detection.py +0 -0
  179. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/underwater_pollution_detection.py +0 -0
  180. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/vehicle_monitoring.py +0 -0
  181. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/warehouse_object_segmentation.py +0 -0
  182. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/waterbody_segmentation.py +0 -0
  183. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/weapon_detection.py +0 -0
  184. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/weld_defect_detection.py +0 -0
  185. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/wildlife_monitoring.py +0 -0
  186. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/windmill_maintenance.py +0 -0
  187. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/usecases/wound_segmentation.py +0 -0
  188. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/__init__.py +0 -0
  189. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/advanced_counting_utils.py +0 -0
  190. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/advanced_helper_utils.py +0 -0
  191. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/advanced_tracking_utils.py +0 -0
  192. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/alerting_utils.py +0 -0
  193. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/category_mapping_utils.py +0 -0
  194. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/color_utils.py +0 -0
  195. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/counting_utils.py +0 -0
  196. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/filter_utils.py +0 -0
  197. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/format_utils.py +0 -0
  198. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/geometry_utils.py +0 -0
  199. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/smoothing_utils.py +0 -0
  200. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/post_processing/utils/tracking_utils.py +0 -0
  201. {matrice_analytics-0.1.53 → matrice_analytics-0.1.55}/src/matrice_analytics/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrice_analytics
3
- Version: 0.1.53
3
+ Version: 0.1.55
4
4
  Summary: Common server utilities for Matrice.ai services
5
5
  Author-email: "Matrice.ai" <dipendra@matrice.ai>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrice_analytics
3
- Version: 0.1.53
3
+ Version: 0.1.55
4
4
  Summary: Common server utilities for Matrice.ai services
5
5
  Author-email: "Matrice.ai" <dipendra@matrice.ai>
6
6
  License-Expression: MIT
@@ -181,33 +181,82 @@ class EmbeddingManager:
181
181
  self.logger.info("Loading staff embeddings from API...")
182
182
  response = await self.face_client.get_all_staff_embeddings()
183
183
 
184
- if not response.get("success", False):
185
- self.logger.error(f"Failed to get staff embeddings from API: {response.get('error', 'Unknown error')}")
184
+ # Robust response handling: accept dict with data or raw list
185
+ embeddings_data: List[Dict[str, Any]] = []
186
+ if isinstance(response, dict):
187
+ # Typical: { success: True, data: [...] }
188
+ if response.get("success", False) and isinstance(response.get("data"), list):
189
+ embeddings_data = response.get("data", [])
190
+ # Alternate: { data: [...] } without success flag
191
+ elif isinstance(response.get("data"), list):
192
+ embeddings_data = response.get("data", [])
193
+ # Fallback keys sometimes used
194
+ elif isinstance(response.get("items"), list):
195
+ embeddings_data = response.get("items", [])
196
+ else:
197
+ self.logger.error(f"Unexpected embeddings response shape (dict): keys={list(response.keys())}")
198
+ return False
199
+ elif isinstance(response, list):
200
+ # Some deployments return raw list directly
201
+ embeddings_data = response
202
+ else:
203
+ self.logger.error(f"Unexpected embeddings response type: {type(response)}")
186
204
  return False
187
-
188
- # The API response has the format: {"success": True, "data": [embedding_items]}
189
- # Each item has the structure shown in the sample response
190
- embeddings_data = response.get("data", [])
191
205
 
192
206
  self.staff_embeddings = []
193
207
  embeddings_list = []
194
-
208
+ expected_dim: Optional[int] = None
209
+ dims_observed: List[int] = []
210
+ mismatch_examples: List[Tuple[str, int]] = [] # (staffId, dim)
211
+
195
212
  for item in embeddings_data:
196
- # if not item.get("isActive", True): # TODO: Check what is isActive
197
- # continue
198
-
213
+ # Skip inactive if provided
214
+ if isinstance(item, dict) and item.get("isActive") is False:
215
+ continue
216
+
217
+ raw_emb = []
218
+ try:
219
+ raw_emb = item.get("embedding", []) if isinstance(item, dict) else []
220
+ except Exception:
221
+ raw_emb = []
222
+ # Record observed dimension for debugging
223
+ try:
224
+ dims_observed.append(len(raw_emb) if isinstance(raw_emb, list) else 0)
225
+ except Exception:
226
+ dims_observed.append(0)
227
+
228
+ # Validate and coerce embedding list
229
+ if not isinstance(raw_emb, list) or len(raw_emb) == 0:
230
+ continue
231
+ try:
232
+ # Ensure numeric float32 list
233
+ clean_emb = [float(v) for v in raw_emb]
234
+ except Exception:
235
+ continue
236
+
237
+ # Dimension consistency
238
+ if expected_dim is None:
239
+ expected_dim = len(clean_emb)
240
+ if len(clean_emb) != expected_dim:
241
+ # Collect a few examples to aid debugging
242
+ try:
243
+ mismatch_examples.append((str(item.get("staffId", "")), len(clean_emb)))
244
+ except Exception:
245
+ mismatch_examples.append(("", len(clean_emb)))
246
+ self.logger.warning(f"Skipping embedding with mismatched dimension: got {len(clean_emb)} expected {expected_dim}")
247
+ continue
248
+
199
249
  staff_embedding = StaffEmbedding(
200
- embedding_id=item.get("embeddingId", ""),
201
- staff_id=item.get("staffId", ""),
202
- embedding=item.get("embedding", []),
203
- employee_id=str(item.get("employeeId", "")),
204
- staff_details=item.get("staffDetails", {}),
205
- is_active=item.get("isActive", True)
250
+ embedding_id=(item.get("embeddingId", "") if isinstance(item, dict) else ""),
251
+ staff_id=(item.get("staffId", "") if isinstance(item, dict) else ""),
252
+ embedding=clean_emb,
253
+ employee_id=str(item.get("employeeId", "")) if isinstance(item, dict) else "",
254
+ staff_details=(item.get("staffDetails", {}) if isinstance(item, dict) else {}),
255
+ is_active=(item.get("isActive", True) if isinstance(item, dict) else True)
206
256
  )
207
-
208
- if staff_embedding.embedding: # Only add if embedding exists
209
- self.staff_embeddings.append(staff_embedding)
210
- embeddings_list.append(staff_embedding.embedding)
257
+
258
+ self.staff_embeddings.append(staff_embedding)
259
+ embeddings_list.append(clean_emb)
211
260
 
212
261
  # Create numpy matrix for fast similarity computation (thread-safe)
213
262
  with self._embeddings_lock:
@@ -220,12 +269,27 @@ class EmbeddingManager:
220
269
 
221
270
  self.embedding_metadata = self.staff_embeddings.copy()
222
271
  self.staff_embeddings_last_update = time.time()
223
- self.logger.info(f"Successfully loaded and cached {len(self.staff_embeddings)} staff embeddings")
224
- self.logger.debug(f"Embeddings matrix shape: {self.embeddings_matrix.shape}")
272
+ self.logger.info(f"Successfully loaded and cached {len(self.staff_embeddings)} staff embeddings (dim={self.embeddings_matrix.shape[1]})")
273
+ try:
274
+ # Quick sanity metrics
275
+ row0_sum = float(np.sum(self.embeddings_matrix[0])) if self.embeddings_matrix.shape[0] > 0 else 0.0
276
+ self.logger.debug(f"Embeddings matrix shape: {self.embeddings_matrix.shape}, dtype={self.embeddings_matrix.dtype}, row0_sum={row0_sum:.4f}")
277
+ except Exception:
278
+ pass
225
279
  return True
226
280
  else:
227
- self.logger.warning("No active staff embeddings found in API response")
228
- return False
281
+ # Build diagnostics and raise to stop pipeline early with actionable info
282
+ dims_summary: Dict[int, int] = {}
283
+ for d in dims_observed:
284
+ dims_summary[d] = dims_summary.get(d, 0) + 1
285
+ self.logger.error(
286
+ "No valid staff embeddings loaded. Observed dimension distribution: "
287
+ f"{dims_summary}. Expected_dim={expected_dim}. Mismatch examples (staffId, dim): "
288
+ f"{mismatch_examples[:5]}"
289
+ )
290
+ raise RuntimeError(
291
+ f"Failed to load staff embeddings due to dimension mismatch. Observed dims: {dims_summary}"
292
+ )
229
293
 
230
294
  except Exception as e:
231
295
  self.logger.error(f"Error loading staff embeddings: {e}", exc_info=True)
@@ -278,6 +342,10 @@ class EmbeddingManager:
278
342
 
279
343
  try:
280
344
  query_array = np.array(query_embedding, dtype=np.float32).reshape(1, -1)
345
+ # Dimension check
346
+ if embeddings_matrix.shape[1] != query_array.shape[1]:
347
+ self.logger.warning(f"Query embedding dim mismatch: query={query_array.shape[1]} staff={embeddings_matrix.shape[1]}")
348
+ return None
281
349
 
282
350
  # Normalize query embedding
283
351
  query_norm = np.linalg.norm(query_array)
@@ -302,6 +370,27 @@ class EmbeddingManager:
302
370
  except Exception as e:
303
371
  self.logger.error(f"Error in local similarity search: {e}", exc_info=True)
304
372
  return None
373
+
374
+ def get_best_similarity(self, query_embedding: List[float]) -> float:
375
+ """Return the best cosine similarity for debugging/observability (no threshold gating)."""
376
+ with self._embeddings_lock:
377
+ if self.embeddings_matrix is None or len(self.embedding_metadata) == 0:
378
+ return 0.0
379
+ embeddings_matrix = self.embeddings_matrix.copy() if self.embeddings_matrix is not None else None
380
+ if embeddings_matrix is None:
381
+ return 0.0
382
+ try:
383
+ query_array = np.array(query_embedding, dtype=np.float32).reshape(1, -1)
384
+ if embeddings_matrix.shape[1] != query_array.shape[1]:
385
+ return 0.0
386
+ qn = np.linalg.norm(query_array)
387
+ if qn == 0:
388
+ return 0.0
389
+ query_array = query_array / qn
390
+ similarities = np.dot(embeddings_matrix, query_array.T).flatten()
391
+ return float(np.max(similarities)) if similarities.size > 0 else 0.0
392
+ except Exception:
393
+ return 0.0
305
394
 
306
395
  def extract_embedding_from_detection(self, detection: Dict) -> Tuple[Dict, Optional[List[float]]]:
307
396
  """Extract and validate embedding from detection."""
@@ -178,10 +178,16 @@ class TemporalIdentityManager:
178
178
  "known"
179
179
  )
180
180
  else:
181
- # No local match found
182
- self.logger.debug("No local match found - returning unknown")
181
+ # No local match found; log best similarity for observability
182
+ best_sim = 0.0
183
+ try:
184
+ best_sim = float(self.embedding_manager.get_best_similarity(emb))
185
+ except Exception:
186
+ pass
187
+ self.logger.debug(f"No local match found - best_similarity={best_sim:.3f}, threshold={self.threshold:.3f}")
183
188
  print("------------------FACE RECOG TEMPORAL IDENTITY MANAGER UPDATE - COMPUTE BEST IDENTITY (LOCAL - NO MATCH)----------------------------")
184
189
  print("LATENCY:",(time.time() - st10)*1000,"| Throughput fps:",(1.0 / (time.time() - st10)) if (time.time() - st10) > 0 else None)
190
+ print(f"BEST_SIM={best_sim:.3f} THRESH={self.threshold:.3f}")
185
191
  print("------------------FACE RECOG TEMPORAL IDENTITY MANAGER UPDATE - COMPUTE BEST IDENTITY (LOCAL - NO MATCH)----------------------------")
186
192
 
187
193
  return None, "Unknown", 0.0, None, {}, "unknown"
@@ -987,20 +993,10 @@ class FaceRecognitionEmbeddingUseCase(BaseProcessor):
987
993
  ) -> List[Dict]:
988
994
  """Process face recognition for each detection with embeddings"""
989
995
 
990
- # Expect client to be initialized in initialize(); fail fast if not
991
- st0=time.time()
996
+ # Face client is initialized in initialize(); if absent, this indicates a prior init failure
992
997
  if not self.face_client:
993
- try:
994
- self.face_client = self._get_facial_recognition_client(config)
995
- except Exception as e:
996
- self.logger.warning(
997
- f"Could not initialize face recognition client: {e}"
998
- )
999
- # No client available, return empty list (no results)
1000
- return []
1001
- print("------------------FACE RECOG CLIENT INIT----------------------------")
1002
- print("LATENCY:",(time.time() - st0)*1000,"| Throughput fps:",(1.0 / (time.time() - st0)) if (time.time() - st0) > 0 else None)
1003
- print("------------------FACE RECOG CLIENT INIT----------------------------")
998
+ self.logger.error("Face client not initialized; initialize() must succeed before processing")
999
+ return []
1004
1000
 
1005
1001
  # Initialize unknown faces storage if not exists
1006
1002
  if not hasattr(self, "unknown_faces_storage"):