matrice-analytics 0.1.89__py3-none-any.whl → 0.1.96__py3-none-any.whl
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.
- matrice_analytics/post_processing/__init__.py +8 -2
- matrice_analytics/post_processing/config.py +2 -0
- matrice_analytics/post_processing/core/config.py +40 -3
- matrice_analytics/post_processing/face_reg/face_recognition.py +146 -14
- matrice_analytics/post_processing/face_reg/face_recognition_client.py +116 -4
- matrice_analytics/post_processing/face_reg/people_activity_logging.py +19 -0
- matrice_analytics/post_processing/post_processor.py +4 -0
- matrice_analytics/post_processing/usecases/__init__.py +4 -1
- matrice_analytics/post_processing/usecases/advanced_customer_service.py +5 -2
- matrice_analytics/post_processing/usecases/color_detection.py +1 -0
- matrice_analytics/post_processing/usecases/fire_detection.py +94 -14
- matrice_analytics/post_processing/usecases/footfall.py +750 -0
- matrice_analytics/post_processing/usecases/license_plate_monitoring.py +91 -1
- matrice_analytics/post_processing/usecases/people_counting.py +55 -22
- matrice_analytics/post_processing/usecases/vehicle_monitoring.py +1 -0
- matrice_analytics/post_processing/usecases/weapon_detection.py +2 -1
- matrice_analytics/post_processing/utils/alert_instance_utils.py +94 -26
- matrice_analytics/post_processing/utils/business_metrics_manager_utils.py +97 -4
- matrice_analytics/post_processing/utils/incident_manager_utils.py +103 -6
- {matrice_analytics-0.1.89.dist-info → matrice_analytics-0.1.96.dist-info}/METADATA +1 -1
- {matrice_analytics-0.1.89.dist-info → matrice_analytics-0.1.96.dist-info}/RECORD +24 -23
- {matrice_analytics-0.1.89.dist-info → matrice_analytics-0.1.96.dist-info}/WHEEL +0 -0
- {matrice_analytics-0.1.89.dist-info → matrice_analytics-0.1.96.dist-info}/licenses/LICENSE.txt +0 -0
- {matrice_analytics-0.1.89.dist-info → matrice_analytics-0.1.96.dist-info}/top_level.txt +0 -0
|
@@ -28,6 +28,9 @@ DEFAULT_AGGREGATION_INTERVAL = 300
|
|
|
28
28
|
# Supported aggregation types
|
|
29
29
|
AGGREGATION_TYPES = ["mean", "min", "max", "sum"]
|
|
30
30
|
|
|
31
|
+
# Cache for location names to avoid repeated API calls
|
|
32
|
+
_location_name_cache: Dict[str, str] = {}
|
|
33
|
+
|
|
31
34
|
# Default metrics configuration with aggregation type
|
|
32
35
|
DEFAULT_METRICS_CONFIG = {
|
|
33
36
|
"customer_to_staff_ratio": "mean",
|
|
@@ -85,6 +88,8 @@ class CameraMetricsState:
|
|
|
85
88
|
camera_name: str = ""
|
|
86
89
|
app_deployment_id: str = ""
|
|
87
90
|
application_id: str = ""
|
|
91
|
+
location_id: str = ""
|
|
92
|
+
location_name: str = ""
|
|
88
93
|
metrics: Dict[str, MetricAggregator] = field(default_factory=dict)
|
|
89
94
|
last_push_time: float = field(default_factory=time.time)
|
|
90
95
|
|
|
@@ -311,13 +316,14 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
311
316
|
stream_info: Stream metadata from usecase
|
|
312
317
|
|
|
313
318
|
Returns:
|
|
314
|
-
Dict with camera_id, camera_name, app_deployment_id, application_id
|
|
319
|
+
Dict with camera_id, camera_name, app_deployment_id, application_id, location_id
|
|
315
320
|
"""
|
|
316
321
|
result = {
|
|
317
322
|
"camera_id": "",
|
|
318
323
|
"camera_name": "",
|
|
319
324
|
"app_deployment_id": "",
|
|
320
|
-
"application_id": ""
|
|
325
|
+
"application_id": "",
|
|
326
|
+
"location_id": ""
|
|
321
327
|
}
|
|
322
328
|
|
|
323
329
|
if not stream_info:
|
|
@@ -393,6 +399,16 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
393
399
|
""
|
|
394
400
|
)
|
|
395
401
|
|
|
402
|
+
# location_id - from camera_info.location
|
|
403
|
+
result["location_id"] = (
|
|
404
|
+
camera_info.get("location", "") or
|
|
405
|
+
camera_info.get("location_id", "") or
|
|
406
|
+
camera_info.get("locationId", "") or
|
|
407
|
+
input_camera_info.get("location", "") or
|
|
408
|
+
input_camera_info.get("location_id", "") or
|
|
409
|
+
""
|
|
410
|
+
)
|
|
411
|
+
|
|
396
412
|
self.logger.debug(f"[BUSINESS_METRICS_MANAGER] Extracted camera info: {result}")
|
|
397
413
|
|
|
398
414
|
except Exception as e:
|
|
@@ -400,6 +416,66 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
400
416
|
|
|
401
417
|
return result
|
|
402
418
|
|
|
419
|
+
def _fetch_location_name(self, location_id: str) -> str:
|
|
420
|
+
"""
|
|
421
|
+
Fetch location name from API using location_id.
|
|
422
|
+
|
|
423
|
+
Args:
|
|
424
|
+
location_id: The location ID to look up
|
|
425
|
+
|
|
426
|
+
Returns:
|
|
427
|
+
Location name string, or 'Entry Reception' as default if API fails
|
|
428
|
+
"""
|
|
429
|
+
global _location_name_cache
|
|
430
|
+
default_location = "Entry Reception"
|
|
431
|
+
|
|
432
|
+
if not location_id:
|
|
433
|
+
self.logger.debug(f"[BUSINESS_METRICS_MANAGER] No location_id provided, using default: '{default_location}'")
|
|
434
|
+
return default_location
|
|
435
|
+
|
|
436
|
+
# Check cache first
|
|
437
|
+
if location_id in _location_name_cache:
|
|
438
|
+
cached_name = _location_name_cache[location_id]
|
|
439
|
+
self.logger.debug(f"[BUSINESS_METRICS_MANAGER] Using cached location name for '{location_id}': '{cached_name}'")
|
|
440
|
+
return cached_name
|
|
441
|
+
|
|
442
|
+
# Need factory reference with session to make API call
|
|
443
|
+
if not self._factory_ref or not self._factory_ref._session:
|
|
444
|
+
self.logger.warning(f"[BUSINESS_METRICS_MANAGER] No session available for location API, using default: '{default_location}'")
|
|
445
|
+
return default_location
|
|
446
|
+
|
|
447
|
+
try:
|
|
448
|
+
endpoint = f"/v1/inference/get_location/{location_id}"
|
|
449
|
+
self.logger.info(f"[BUSINESS_METRICS_MANAGER] Fetching location name from API: {endpoint}")
|
|
450
|
+
|
|
451
|
+
response = self._factory_ref._session.rpc.get(endpoint)
|
|
452
|
+
|
|
453
|
+
if response and isinstance(response, dict):
|
|
454
|
+
success = response.get("success", False)
|
|
455
|
+
if success:
|
|
456
|
+
data = response.get("data", {})
|
|
457
|
+
location_name = data.get("locationName", default_location)
|
|
458
|
+
self.logger.info(f"[BUSINESS_METRICS_MANAGER] ✓ Fetched location name: '{location_name}' for location_id: '{location_id}'")
|
|
459
|
+
|
|
460
|
+
# Cache the result
|
|
461
|
+
_location_name_cache[location_id] = location_name
|
|
462
|
+
return location_name
|
|
463
|
+
else:
|
|
464
|
+
self.logger.warning(
|
|
465
|
+
f"[BUSINESS_METRICS_MANAGER] API returned success=false for location_id '{location_id}': "
|
|
466
|
+
f"{response.get('message', 'Unknown error')}"
|
|
467
|
+
)
|
|
468
|
+
else:
|
|
469
|
+
self.logger.warning(f"[BUSINESS_METRICS_MANAGER] Invalid response format from API: {response}")
|
|
470
|
+
|
|
471
|
+
except Exception as e:
|
|
472
|
+
self.logger.error(f"[BUSINESS_METRICS_MANAGER] Error fetching location name for '{location_id}': {e}", exc_info=True)
|
|
473
|
+
|
|
474
|
+
# Use default on any failure
|
|
475
|
+
self.logger.info(f"[BUSINESS_METRICS_MANAGER] Using default location name: '{default_location}'")
|
|
476
|
+
_location_name_cache[location_id] = default_location
|
|
477
|
+
return default_location
|
|
478
|
+
|
|
403
479
|
def process_metrics(
|
|
404
480
|
self,
|
|
405
481
|
camera_id: str,
|
|
@@ -452,11 +528,16 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
452
528
|
final_camera_name = camera_info.get("camera_name") or ""
|
|
453
529
|
final_app_deployment_id = camera_info.get("app_deployment_id") or factory_app_deployment_id or ""
|
|
454
530
|
final_application_id = camera_info.get("application_id") or factory_application_id or ""
|
|
531
|
+
final_location_id = camera_info.get("location_id") or ""
|
|
532
|
+
|
|
533
|
+
# Fetch location_name from API using location_id
|
|
534
|
+
final_location_name = self._fetch_location_name(final_location_id)
|
|
455
535
|
|
|
456
536
|
self.logger.info(
|
|
457
537
|
f"[BUSINESS_METRICS_MANAGER] Final values - camera_id={final_camera_id}, "
|
|
458
538
|
f"camera_name={final_camera_name}, app_deployment_id={final_app_deployment_id}, "
|
|
459
|
-
f"application_id={final_application_id}"
|
|
539
|
+
f"application_id={final_application_id}, location_id={final_location_id}, "
|
|
540
|
+
f"location_name={final_location_name}"
|
|
460
541
|
)
|
|
461
542
|
|
|
462
543
|
with self._states_lock:
|
|
@@ -466,7 +547,9 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
466
547
|
camera_id=final_camera_id,
|
|
467
548
|
camera_name=final_camera_name,
|
|
468
549
|
app_deployment_id=final_app_deployment_id,
|
|
469
|
-
application_id=final_application_id
|
|
550
|
+
application_id=final_application_id,
|
|
551
|
+
location_id=final_location_id,
|
|
552
|
+
location_name=final_location_name
|
|
470
553
|
)
|
|
471
554
|
self.logger.info(
|
|
472
555
|
f"[BUSINESS_METRICS_MANAGER] ✓ Created new state for camera: {final_camera_id}"
|
|
@@ -483,6 +566,12 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
483
566
|
self.logger.debug(f"[BUSINESS_METRICS_MANAGER] Updated app_deployment_id to: {final_app_deployment_id}")
|
|
484
567
|
if final_application_id and not state.application_id:
|
|
485
568
|
state.application_id = final_application_id
|
|
569
|
+
if final_location_id and not state.location_id:
|
|
570
|
+
state.location_id = final_location_id
|
|
571
|
+
self.logger.debug(f"[BUSINESS_METRICS_MANAGER] Updated location_id to: {final_location_id}")
|
|
572
|
+
if final_location_name and not state.location_name:
|
|
573
|
+
state.location_name = final_location_name
|
|
574
|
+
self.logger.debug(f"[BUSINESS_METRICS_MANAGER] Updated location_name to: {final_location_name}")
|
|
486
575
|
|
|
487
576
|
# Add each metric value to aggregator
|
|
488
577
|
metrics_added = 0
|
|
@@ -589,6 +678,7 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
589
678
|
"camera_name": state.camera_name,
|
|
590
679
|
"app_deployment_id": state.app_deployment_id,
|
|
591
680
|
"application_id": state.application_id,
|
|
681
|
+
"location_name": state.location_name,
|
|
592
682
|
"business_metrics": aggregated_metrics,
|
|
593
683
|
"timestamp": datetime.now(timezone.utc).isoformat(),
|
|
594
684
|
"aggregation_interval_seconds": self.aggregation_interval
|
|
@@ -695,6 +785,8 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
695
785
|
"camera_name": state.camera_name,
|
|
696
786
|
"app_deployment_id": state.app_deployment_id,
|
|
697
787
|
"application_id": state.application_id,
|
|
788
|
+
"location_id": state.location_id,
|
|
789
|
+
"location_name": state.location_name,
|
|
698
790
|
"metrics_count": {
|
|
699
791
|
name: len(agg.values)
|
|
700
792
|
for name, agg in state.metrics.items()
|
|
@@ -711,6 +803,7 @@ class BUSINESS_METRICS_MANAGER:
|
|
|
711
803
|
cam_id: {
|
|
712
804
|
"camera_id": state.camera_id,
|
|
713
805
|
"camera_name": state.camera_name,
|
|
806
|
+
"location_name": state.location_name,
|
|
714
807
|
"metrics_count": {
|
|
715
808
|
name: len(agg.values)
|
|
716
809
|
for name, agg in state.metrics.items()
|
|
@@ -38,6 +38,9 @@ DEFAULT_THRESHOLDS = [
|
|
|
38
38
|
{"level": "critical", "percentage": 30}
|
|
39
39
|
]
|
|
40
40
|
|
|
41
|
+
# Cache for location names to avoid repeated API calls
|
|
42
|
+
_location_name_cache: Dict[str, str] = {}
|
|
43
|
+
|
|
41
44
|
|
|
42
45
|
@dataclass
|
|
43
46
|
class IncidentState:
|
|
@@ -453,20 +456,22 @@ class INCIDENT_MANAGER:
|
|
|
453
456
|
'camera_group': 'staging-customer-1',
|
|
454
457
|
'location': '6908756db129880c34f2e09a'
|
|
455
458
|
},
|
|
456
|
-
'frame_id': '
|
|
459
|
+
'frame_id': '7b94e2f668fb456f95b73c3084e17f8a'
|
|
457
460
|
}
|
|
458
461
|
|
|
459
462
|
Args:
|
|
460
463
|
stream_info: Stream metadata from usecase
|
|
461
464
|
|
|
462
465
|
Returns:
|
|
463
|
-
Dict with camera_id, camera_name, app_deployment_id, application_id
|
|
466
|
+
Dict with camera_id, camera_name, app_deployment_id, application_id, frame_id, location_id
|
|
464
467
|
"""
|
|
465
468
|
result = {
|
|
466
469
|
"camera_id": "",
|
|
467
470
|
"camera_name": "",
|
|
468
471
|
"app_deployment_id": "",
|
|
469
|
-
"application_id": ""
|
|
472
|
+
"application_id": "",
|
|
473
|
+
"frame_id": "",
|
|
474
|
+
"location_id": ""
|
|
470
475
|
}
|
|
471
476
|
|
|
472
477
|
if not stream_info:
|
|
@@ -563,10 +568,30 @@ class INCIDENT_MANAGER:
|
|
|
563
568
|
""
|
|
564
569
|
)
|
|
565
570
|
|
|
571
|
+
# frame_id - at top level of stream_info
|
|
572
|
+
result["frame_id"] = (
|
|
573
|
+
stream_info.get("frame_id", "") or
|
|
574
|
+
stream_info.get("frameId", "") or
|
|
575
|
+
input_settings.get("frame_id", "") or
|
|
576
|
+
input_settings.get("frameId", "") or
|
|
577
|
+
""
|
|
578
|
+
)
|
|
579
|
+
|
|
580
|
+
# location_id - from camera_info.location
|
|
581
|
+
result["location_id"] = (
|
|
582
|
+
camera_info.get("location", "") or
|
|
583
|
+
camera_info.get("location_id", "") or
|
|
584
|
+
camera_info.get("locationId", "") or
|
|
585
|
+
input_camera_info.get("location", "") or
|
|
586
|
+
input_camera_info.get("location_id", "") or
|
|
587
|
+
""
|
|
588
|
+
)
|
|
589
|
+
|
|
566
590
|
self.logger.debug(
|
|
567
591
|
f"[INCIDENT_MANAGER] Extracted from stream_info - "
|
|
568
592
|
f"camera_id={result['camera_id']}, camera_name={result['camera_name']}, "
|
|
569
|
-
f"app_deployment_id={result['app_deployment_id']}, application_id={result['application_id']}"
|
|
593
|
+
f"app_deployment_id={result['app_deployment_id']}, application_id={result['application_id']}, "
|
|
594
|
+
f"frame_id={result['frame_id']}, location_id={result['location_id']}"
|
|
570
595
|
)
|
|
571
596
|
|
|
572
597
|
except Exception as e:
|
|
@@ -592,6 +617,66 @@ class INCIDENT_MANAGER:
|
|
|
592
617
|
return "high"
|
|
593
618
|
return level
|
|
594
619
|
|
|
620
|
+
def _fetch_location_name(self, location_id: str) -> str:
|
|
621
|
+
"""
|
|
622
|
+
Fetch location name from API using location_id.
|
|
623
|
+
|
|
624
|
+
Args:
|
|
625
|
+
location_id: The location ID to look up
|
|
626
|
+
|
|
627
|
+
Returns:
|
|
628
|
+
Location name string, or 'Entry Reception' as default if API fails
|
|
629
|
+
"""
|
|
630
|
+
global _location_name_cache
|
|
631
|
+
default_location = "Entry Reception"
|
|
632
|
+
|
|
633
|
+
if not location_id:
|
|
634
|
+
self.logger.debug(f"[INCIDENT_MANAGER] No location_id provided, using default: '{default_location}'")
|
|
635
|
+
return default_location
|
|
636
|
+
|
|
637
|
+
# Check cache first
|
|
638
|
+
if location_id in _location_name_cache:
|
|
639
|
+
cached_name = _location_name_cache[location_id]
|
|
640
|
+
self.logger.debug(f"[INCIDENT_MANAGER] Using cached location name for '{location_id}': '{cached_name}'")
|
|
641
|
+
return cached_name
|
|
642
|
+
|
|
643
|
+
# Need factory reference with session to make API call
|
|
644
|
+
if not self._factory_ref or not self._factory_ref._session:
|
|
645
|
+
self.logger.warning(f"[INCIDENT_MANAGER] No session available for location API, using default: '{default_location}'")
|
|
646
|
+
return default_location
|
|
647
|
+
|
|
648
|
+
try:
|
|
649
|
+
endpoint = f"/v1/inference/get_location/{location_id}"
|
|
650
|
+
self.logger.info(f"[INCIDENT_MANAGER] Fetching location name from API: {endpoint}")
|
|
651
|
+
|
|
652
|
+
response = self._factory_ref._session.rpc.get(endpoint)
|
|
653
|
+
|
|
654
|
+
if response and isinstance(response, dict):
|
|
655
|
+
success = response.get("success", False)
|
|
656
|
+
if success:
|
|
657
|
+
data = response.get("data", {})
|
|
658
|
+
location_name = data.get("locationName", default_location)
|
|
659
|
+
self.logger.info(f"[INCIDENT_MANAGER] ✓ Fetched location name: '{location_name}' for location_id: '{location_id}'")
|
|
660
|
+
|
|
661
|
+
# Cache the result
|
|
662
|
+
_location_name_cache[location_id] = location_name
|
|
663
|
+
return location_name
|
|
664
|
+
else:
|
|
665
|
+
self.logger.warning(
|
|
666
|
+
f"[INCIDENT_MANAGER] API returned success=false for location_id '{location_id}': "
|
|
667
|
+
f"{response.get('message', 'Unknown error')}"
|
|
668
|
+
)
|
|
669
|
+
else:
|
|
670
|
+
self.logger.warning(f"[INCIDENT_MANAGER] Invalid response format from API: {response}")
|
|
671
|
+
|
|
672
|
+
except Exception as e:
|
|
673
|
+
self.logger.error(f"[INCIDENT_MANAGER] Error fetching location name for '{location_id}': {e}", exc_info=True)
|
|
674
|
+
|
|
675
|
+
# Use default on any failure
|
|
676
|
+
self.logger.info(f"[INCIDENT_MANAGER] Using default location name: '{default_location}'")
|
|
677
|
+
_location_name_cache[location_id] = default_location
|
|
678
|
+
return default_location
|
|
679
|
+
|
|
595
680
|
def _generate_incident_id(self, camera_id: str, cycle_id: int) -> str:
|
|
596
681
|
"""Generate a unique incident_id for a camera's cycle."""
|
|
597
682
|
return f"incident_{camera_id}_{cycle_id}"
|
|
@@ -1005,6 +1090,8 @@ class INCIDENT_MANAGER:
|
|
|
1005
1090
|
"app_deployment_id": "...",
|
|
1006
1091
|
"application_id": "...",
|
|
1007
1092
|
"camera_name": "...",
|
|
1093
|
+
"frame_id": "...",
|
|
1094
|
+
"location_name": "...",
|
|
1008
1095
|
"incidents": [{
|
|
1009
1096
|
"incident_id": "...",
|
|
1010
1097
|
"incident_type": "...",
|
|
@@ -1061,10 +1148,18 @@ class INCIDENT_MANAGER:
|
|
|
1061
1148
|
""
|
|
1062
1149
|
)
|
|
1063
1150
|
|
|
1151
|
+
# Extract frame_id from stream_info
|
|
1152
|
+
final_frame_id = stream_camera_info.get("frame_id", "")
|
|
1153
|
+
|
|
1154
|
+
# Fetch location_name from API using location_id
|
|
1155
|
+
location_id = stream_camera_info.get("location_id", "")
|
|
1156
|
+
final_location_name = self._fetch_location_name(location_id)
|
|
1157
|
+
|
|
1064
1158
|
self.logger.info(
|
|
1065
1159
|
f"[INCIDENT_MANAGER] Building message with - "
|
|
1066
1160
|
f"camera_id={final_camera_id}, camera_name={final_camera_name}, "
|
|
1067
|
-
f"app_deployment_id={final_app_deployment_id}, application_id={final_application_id}"
|
|
1161
|
+
f"app_deployment_id={final_app_deployment_id}, application_id={final_application_id}, "
|
|
1162
|
+
f"frame_id={final_frame_id}, location_name={final_location_name}"
|
|
1068
1163
|
)
|
|
1069
1164
|
|
|
1070
1165
|
# Build incident - ONLY include required fields
|
|
@@ -1081,12 +1176,14 @@ class INCIDENT_MANAGER:
|
|
|
1081
1176
|
"human_text": incident_data.get("human_text", "")
|
|
1082
1177
|
}
|
|
1083
1178
|
|
|
1084
|
-
# Build final message
|
|
1179
|
+
# Build final message with all required fields
|
|
1085
1180
|
message = {
|
|
1086
1181
|
"camera_id": final_camera_id,
|
|
1087
1182
|
"app_deployment_id": final_app_deployment_id,
|
|
1088
1183
|
"application_id": final_application_id,
|
|
1089
1184
|
"camera_name": final_camera_name,
|
|
1185
|
+
"frame_id": final_frame_id,
|
|
1186
|
+
"location_name": final_location_name,
|
|
1090
1187
|
"incidents": [incident]
|
|
1091
1188
|
}
|
|
1092
1189
|
|
|
@@ -11,9 +11,9 @@ matrice_analytics/boundary_drawing_internal/usage/README.md,sha256=9AgWPhYOqUeY2
|
|
|
11
11
|
matrice_analytics/boundary_drawing_internal/usage/boundary_drawer_launcher.py,sha256=W3JSeo3A4n04iS6ToID6V0McWwI_dvAIdfhb-xD385w,3638
|
|
12
12
|
matrice_analytics/boundary_drawing_internal/usage/simple_boundary_launcher.py,sha256=jHPriRLorLuiC8km0MFNS96w121tKxd7t5GQl7I5kKE,3494
|
|
13
13
|
matrice_analytics/post_processing/README.md,sha256=bDszazvqV5xbGhMM6hDaMctIyk5gox9bADo2IZZ9Goo,13368
|
|
14
|
-
matrice_analytics/post_processing/__init__.py,sha256=
|
|
15
|
-
matrice_analytics/post_processing/config.py,sha256=
|
|
16
|
-
matrice_analytics/post_processing/post_processor.py,sha256=
|
|
14
|
+
matrice_analytics/post_processing/__init__.py,sha256=3t0fgaFMq7N3IojZTaNB0SFFJGLpOeXp-_3pnhheZ7k,29689
|
|
15
|
+
matrice_analytics/post_processing/config.py,sha256=pQ8OVnGsJc7v0R2JlDYULM4e9zR4xDnS1aI9b3DcvLM,6826
|
|
16
|
+
matrice_analytics/post_processing/post_processor.py,sha256=RMl3hWmoMTPzO5LWmShfv2gmNq1-j5eAUUDGvxlCB_4,44501
|
|
17
17
|
matrice_analytics/post_processing/advanced_tracker/README.md,sha256=RM8dynVoUWKn_hTbw9c6jHAbnQj-8hEAXnmuRZr2w1M,22485
|
|
18
18
|
matrice_analytics/post_processing/advanced_tracker/__init__.py,sha256=tAPFzI_Yep5TLX60FDwKqBqppc-EbxSr0wNsQ9DGI1o,423
|
|
19
19
|
matrice_analytics/post_processing/advanced_tracker/base.py,sha256=VqWy4dd5th5LK-JfueTt2_GSEoOi5QQfQxjTNhmQoLc,3580
|
|
@@ -24,14 +24,14 @@ matrice_analytics/post_processing/advanced_tracker/strack.py,sha256=OSai-SSpC9_u
|
|
|
24
24
|
matrice_analytics/post_processing/advanced_tracker/tracker.py,sha256=yN_tUzDZ-8M4NSoZrKf0OW0JA0JxOvz2oYKgbm-os88,15687
|
|
25
25
|
matrice_analytics/post_processing/core/__init__.py,sha256=QlgoJwjTU-3UYTEmFRN6wFWpOr7zNSnrohoqLBF5bNY,1434
|
|
26
26
|
matrice_analytics/post_processing/core/base.py,sha256=7cz1tYhMNphfe46bF5sgc5_z7ULof413axZWHKcdIIQ,29099
|
|
27
|
-
matrice_analytics/post_processing/core/config.py,sha256=
|
|
27
|
+
matrice_analytics/post_processing/core/config.py,sha256=rcdTn7JPMOnY1EFoMhX-DZ9Eq0OnTU_XTz3N-IF1o5k,133020
|
|
28
28
|
matrice_analytics/post_processing/core/config_utils.py,sha256=QuAS-_JKSoNOtfUWgr7Alf_wsqODzN2rHlQu-cHRK0s,34311
|
|
29
29
|
matrice_analytics/post_processing/face_reg/__init__.py,sha256=yntaiGlW9vdjBpPZQXNuovALihJPzRlFyUE88l3MhBA,1364
|
|
30
30
|
matrice_analytics/post_processing/face_reg/compare_similarity.py,sha256=NlFc8b2a74k0PqSFAbuM_fUbA1BT3pr3VUgvSqRpJzQ,23396
|
|
31
31
|
matrice_analytics/post_processing/face_reg/embedding_manager.py,sha256=3Rba94EcYWFK0D4el9JZ7fwqQ9kOyadrwK30lFmTP-k,44964
|
|
32
|
-
matrice_analytics/post_processing/face_reg/face_recognition.py,sha256=
|
|
33
|
-
matrice_analytics/post_processing/face_reg/face_recognition_client.py,sha256=
|
|
34
|
-
matrice_analytics/post_processing/face_reg/people_activity_logging.py,sha256=
|
|
32
|
+
matrice_analytics/post_processing/face_reg/face_recognition.py,sha256=jtIdOLQEwDkdZ5lG8s4_8ZomQc4JinZoFddbTaTgrXI,142663
|
|
33
|
+
matrice_analytics/post_processing/face_reg/face_recognition_client.py,sha256=ZGQyMnV7t4w3YBx9ywh-MQF10XtRHN4DAqs-h1N-Wp0,37268
|
|
34
|
+
matrice_analytics/post_processing/face_reg/people_activity_logging.py,sha256=qOggxp8UoLnbKqy-kASAfwQ9FGczIQxgNbpfgV5A35U,14619
|
|
35
35
|
matrice_analytics/post_processing/ocr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
36
|
matrice_analytics/post_processing/ocr/easyocr_extractor.py,sha256=RMrRoGb2gMcJEGouQn8U9cCgCLXPT7qRa8liI4LNxFM,11555
|
|
37
37
|
matrice_analytics/post_processing/ocr/postprocessing.py,sha256=RILArp8I9WRH7bALVZ9wPGc-aR7YMdqV1ndOOIcOnGQ,12309
|
|
@@ -84,9 +84,9 @@ matrice_analytics/post_processing/test_cases/test_usecases.py,sha256=e09c9JaOhti
|
|
|
84
84
|
matrice_analytics/post_processing/test_cases/test_utilities.py,sha256=zUtBqwELjovkhQfhn1vM-y7aH04z9sFvt6LIpXXBFSE,13415
|
|
85
85
|
matrice_analytics/post_processing/test_cases/test_utils.py,sha256=lgDX0vILylA6m8sG3_3kxAJ7TiDo8xkprJNfBrLoID4,29371
|
|
86
86
|
matrice_analytics/post_processing/usecases/Histopathological_Cancer_Detection_img.py,sha256=bHDXxxG3QgWMFZbDuBaJWpkIvxTXsFMTqCPBCFm3SDs,30247
|
|
87
|
-
matrice_analytics/post_processing/usecases/__init__.py,sha256=
|
|
87
|
+
matrice_analytics/post_processing/usecases/__init__.py,sha256=9LccMtHsylG6ftJsxzKdcheVlgSDefHKvffdVI40cM8,11403
|
|
88
88
|
matrice_analytics/post_processing/usecases/abandoned_object_detection.py,sha256=zVrqlvgsjc5F2JHd-Zav6d-poVIpTJBpPKZ3CC71lQk,40332
|
|
89
|
-
matrice_analytics/post_processing/usecases/advanced_customer_service.py,sha256=
|
|
89
|
+
matrice_analytics/post_processing/usecases/advanced_customer_service.py,sha256=HKTeZemkcKkJ6JnFO_QLPhtY1VH7vI1krnf4DlKLOow,97924
|
|
90
90
|
matrice_analytics/post_processing/usecases/age_detection.py,sha256=yn1LXOgbnOWSMDnsCds6-uN6W-I1Hy4_-AMrjbT5PtY,41318
|
|
91
91
|
matrice_analytics/post_processing/usecases/age_gender_detection.py,sha256=ok8uCG8pHKqouTSOQyUANou29k6OOohxnhFsTwayOL0,52533
|
|
92
92
|
matrice_analytics/post_processing/usecases/anti_spoofing_detection.py,sha256=XdtDdXGzZMLQdWcoOoiE5t4LPYHhgOtJ7tZCNlq1A2E,31329
|
|
@@ -101,7 +101,7 @@ matrice_analytics/post_processing/usecases/cardiomegaly_classification.py,sha256
|
|
|
101
101
|
matrice_analytics/post_processing/usecases/cell_microscopy_segmentation.py,sha256=eQ_s5u3Vnvja6-FmI6ZPxlNkaZtG-pVjTu8NuLjZJ5M,43714
|
|
102
102
|
matrice_analytics/post_processing/usecases/chicken_pose_detection.py,sha256=-e8di7Am-E-FCQFrSY8qJTO1aWtdRAVJoE-VKBgcyyI,29291
|
|
103
103
|
matrice_analytics/post_processing/usecases/child_monitoring.py,sha256=z3oymoqq4hDGwA8MkdEONZW_Vx5CAZmvzZaNLsqmCfw,39380
|
|
104
|
-
matrice_analytics/post_processing/usecases/color_detection.py,sha256
|
|
104
|
+
matrice_analytics/post_processing/usecases/color_detection.py,sha256=021oqLPV0o6vuyD88kRtjKukrN2GCJQx4xlB4FsY0uc,92463
|
|
105
105
|
matrice_analytics/post_processing/usecases/color_map_utils.py,sha256=SP-AEVcjLmL8rxblu-ixqUJC2fqlcr7ab4hWo4Fcr_k,2677
|
|
106
106
|
matrice_analytics/post_processing/usecases/concrete_crack_detection.py,sha256=pxhOH_hG4hq9yytNepbGMdk2W_lTG8D1_2RAagaPBkg,40252
|
|
107
107
|
matrice_analytics/post_processing/usecases/crop_weed_detection.py,sha256=Ao1k5fJDYU_f6yZ8VO-jW8-esECV0-zY5Q570c_fako,35674
|
|
@@ -116,9 +116,10 @@ matrice_analytics/post_processing/usecases/face_emotion.py,sha256=eRfqBdryB0uNoO
|
|
|
116
116
|
matrice_analytics/post_processing/usecases/face_recognition.py,sha256=T5xAuv6b9OrkmTmoXgZs4LZ5XUsbvp9xCpeLBwdu7eI,40231
|
|
117
117
|
matrice_analytics/post_processing/usecases/fashion_detection.py,sha256=f9gpzMDhIW-gyn46k9jgf8nY7YeoqAnTxGOzksabFbE,40457
|
|
118
118
|
matrice_analytics/post_processing/usecases/field_mapping.py,sha256=JDwYX8pd2W-waDvBh98Y_o_uchJu7wEYbFxOliA4Iq4,39822
|
|
119
|
-
matrice_analytics/post_processing/usecases/fire_detection.py,sha256=
|
|
119
|
+
matrice_analytics/post_processing/usecases/fire_detection.py,sha256=r9nkviYNVNqEQsdmlM8m_V4DoeZBWKU4s1mDOo_Swmw,65801
|
|
120
120
|
matrice_analytics/post_processing/usecases/flare_analysis.py,sha256=3nf4fUeUwlP_UII0h5fQkUGPXbr32ZnJjaM-dukNSP8,42680
|
|
121
121
|
matrice_analytics/post_processing/usecases/flower_segmentation.py,sha256=4I7qMx9Ztxg_hy9KTVX-3qBhAN-QwDt_Yigf9fFjLus,52017
|
|
122
|
+
matrice_analytics/post_processing/usecases/footfall.py,sha256=eVH0LT9p86Zzt9W7oREPLmFzZH8uLx4UxZ8-GXSel44,36633
|
|
122
123
|
matrice_analytics/post_processing/usecases/gas_leak_detection.py,sha256=KL2ft7fXvjTas-65-QgcJm3W8KBsrwF44qibSXjfaLc,40557
|
|
123
124
|
matrice_analytics/post_processing/usecases/gender_detection.py,sha256=DEnCTRew6B7DtPcBQVCTtpd_IQMvMusBcu6nadUg2oM,40107
|
|
124
125
|
matrice_analytics/post_processing/usecases/human_activity_recognition.py,sha256=SLyvbw1y_nEQ0AlT-ErpeSydjA8U5yfRPrjMx1t3Yz0,42226
|
|
@@ -127,7 +128,7 @@ matrice_analytics/post_processing/usecases/leaf.py,sha256=cwgB1ZNxkQFtkk-thSJrkX
|
|
|
127
128
|
matrice_analytics/post_processing/usecases/leaf_disease.py,sha256=bkiLccTdf4KUq3he4eCpBlKXb5exr-WBhQ_oWQ7os68,36225
|
|
128
129
|
matrice_analytics/post_processing/usecases/leak_detection.py,sha256=oOCLLVMuXVeXPHyN8FUrD3U9JYJJwIz-5fcEMgvLdls,40531
|
|
129
130
|
matrice_analytics/post_processing/usecases/license_plate_detection.py,sha256=dsavd92-wnyXCNrCzaRj24zH7BVvLSa09HkYsrOXYDM,50806
|
|
130
|
-
matrice_analytics/post_processing/usecases/license_plate_monitoring.py,sha256=
|
|
131
|
+
matrice_analytics/post_processing/usecases/license_plate_monitoring.py,sha256=o_ga5aLd3s7EWBxBvP7aieS2yT9Y_3zecngQKBclV-g,121656
|
|
131
132
|
matrice_analytics/post_processing/usecases/litter_monitoring.py,sha256=XaHAUGRBDJg_iVbu8hRMjTR-5TqrLj6ZNCRkInbzZTY,33255
|
|
132
133
|
matrice_analytics/post_processing/usecases/mask_detection.py,sha256=L_s6ZiT5zeXG-BsFcskb3HEG98DhLgqeMSDmCuwOteU,41501
|
|
133
134
|
matrice_analytics/post_processing/usecases/natural_disaster.py,sha256=ehxdPBoYcZWGVDOVn_mHFoz4lIE8LrveAkuXQj0n9XE,44253
|
|
@@ -135,7 +136,7 @@ matrice_analytics/post_processing/usecases/parking.py,sha256=lqTGqcjUZZPFw3tu11H
|
|
|
135
136
|
matrice_analytics/post_processing/usecases/parking_space_detection.py,sha256=xwhkJjGGKcT827URbasi3olYqhd95Sh0zsEIphwzcgY,39561
|
|
136
137
|
matrice_analytics/post_processing/usecases/pcb_defect_detection.py,sha256=xH3q-WoR3TwMUeUvWw1W7vPLdCUfu_Kl_gQ9dZFf1SE,43006
|
|
137
138
|
matrice_analytics/post_processing/usecases/pedestrian_detection.py,sha256=hPFtvpWXXEsbDavmuiXIhrosMNlOhGya--jukT-ZOHA,39288
|
|
138
|
-
matrice_analytics/post_processing/usecases/people_counting.py,sha256=
|
|
139
|
+
matrice_analytics/post_processing/usecases/people_counting.py,sha256=vEtFCiMRzXZMq3nZv7UF3n7Tet7_RfDJNjbwX80nta0,37168
|
|
139
140
|
matrice_analytics/post_processing/usecases/people_counting_bckp.py,sha256=WM9te7oYyhu5f_bIMye_D5BpEn6CwA-6Kz95IMLmSbs,82209
|
|
140
141
|
matrice_analytics/post_processing/usecases/people_tracking.py,sha256=iXzGJgqKgWxvIVLqa1cFKkiF0DrHolwghSiJ2P8mDhc,90484
|
|
141
142
|
matrice_analytics/post_processing/usecases/pipeline_detection.py,sha256=VsLTXMAqx0tRw7Olrxqx7SBLolZR7p2aFOrdSXLS-kE,30796
|
|
@@ -159,10 +160,10 @@ matrice_analytics/post_processing/usecases/theft_detection.py,sha256=Rs_zKn2z9YM
|
|
|
159
160
|
matrice_analytics/post_processing/usecases/traffic_sign_monitoring.py,sha256=nDlEzHgMlUjy_VtJ7usnEzMcdSs-jouqaoJpJ8DYUMw,34351
|
|
160
161
|
matrice_analytics/post_processing/usecases/underground_pipeline_defect_detection.py,sha256=W_2joZStsP0jl2zn89-jtdtqqGv3vJ0amsalbE5WKwo,37647
|
|
161
162
|
matrice_analytics/post_processing/usecases/underwater_pollution_detection.py,sha256=jqP1ZKfDZe2-56Lyvgb2DxnbqRfvxm6pPL0Ck3esfBk,40356
|
|
162
|
-
matrice_analytics/post_processing/usecases/vehicle_monitoring.py,sha256=
|
|
163
|
+
matrice_analytics/post_processing/usecases/vehicle_monitoring.py,sha256=as-6h2mgL4T1l-lUHvq0Y-tZmps90EGzrIWQBL9ywF8,52981
|
|
163
164
|
matrice_analytics/post_processing/usecases/warehouse_object_segmentation.py,sha256=5uZXTJL_A3tUEN08T-_ZQpUoJ9gqbuuMc4z2mT4sMnQ,43753
|
|
164
165
|
matrice_analytics/post_processing/usecases/waterbody_segmentation.py,sha256=JsCxDEMB8s4WDcezfJDr2zrjM-TCjB9hxOztzSvWmpY,45268
|
|
165
|
-
matrice_analytics/post_processing/usecases/weapon_detection.py,sha256=
|
|
166
|
+
matrice_analytics/post_processing/usecases/weapon_detection.py,sha256=QZFNm3I216l_ZzE59U4LCSktVsZfkFs6FWj6t4d9SNY,40675
|
|
166
167
|
matrice_analytics/post_processing/usecases/weld_defect_detection.py,sha256=b0dAJGKUofbGrwHDJfIYb4pqmvp4Y23JK09Qb-34mxg,30209
|
|
167
168
|
matrice_analytics/post_processing/usecases/wildlife_monitoring.py,sha256=TMVHJ5GLezmqG7DywmqbLggqNXgpsb63MD7IR6kvDkk,43446
|
|
168
169
|
matrice_analytics/post_processing/usecases/windmill_maintenance.py,sha256=G1eqo3Z-HYmGJ6oeZYrpZwhpvqQ9Lc_T-6S7BLBXHeA,40498
|
|
@@ -180,20 +181,20 @@ matrice_analytics/post_processing/utils/__init__.py,sha256=E4_V_Rq3aMRtdUyJuvXoi
|
|
|
180
181
|
matrice_analytics/post_processing/utils/advanced_counting_utils.py,sha256=D6jlZNRCfPtfG8COv3AMCbCfZf4_DK9rFhwzVJEYjpg,19152
|
|
181
182
|
matrice_analytics/post_processing/utils/advanced_helper_utils.py,sha256=W8mDqJTpg98YJgWYBod0rZUNbR4bmvYMeWAGASs14_s,11624
|
|
182
183
|
matrice_analytics/post_processing/utils/advanced_tracking_utils.py,sha256=tKEGjq-1bJ_AeXEWl_clr-7vAry0NLU_P_Q0cbSqLFI,16942
|
|
183
|
-
matrice_analytics/post_processing/utils/alert_instance_utils.py,sha256=
|
|
184
|
+
matrice_analytics/post_processing/utils/alert_instance_utils.py,sha256=6i4ZTay3JeEXiGiEiRQYfOvFWUg68rKYAevzubqPr1U,49737
|
|
184
185
|
matrice_analytics/post_processing/utils/alerting_utils.py,sha256=zDX66UiMBMC7FwQNCq-t6eUcP3Zj2JvCQX0K774zhaQ,8430
|
|
185
|
-
matrice_analytics/post_processing/utils/business_metrics_manager_utils.py,sha256=
|
|
186
|
+
matrice_analytics/post_processing/utils/business_metrics_manager_utils.py,sha256=9UNdzX9AmLUra1OMgIL2wtYy-GOMh1t2m-AigVcf0cA,59892
|
|
186
187
|
matrice_analytics/post_processing/utils/category_mapping_utils.py,sha256=B31n8PIyGqT7QMFgYSfZPlkgSQQTpvHAHQ5B0glW48I,3459
|
|
187
188
|
matrice_analytics/post_processing/utils/color_utils.py,sha256=apolmz75CgcwChTXf3c_QdTCy5eZWtguxYRSpG76exM,21129
|
|
188
189
|
matrice_analytics/post_processing/utils/counting_utils.py,sha256=a2Y9Qr9pCuzJM2ehmDzI0yQTmN-UYvuBMVtBSjXqRa8,6859
|
|
189
190
|
matrice_analytics/post_processing/utils/filter_utils.py,sha256=2XR7vtzaCtWnPHzIKnVlsGJBXvAmg3Y75DFwM8b0J30,8775
|
|
190
191
|
matrice_analytics/post_processing/utils/format_utils.py,sha256=UTF7A5h9j0_S12xH9wG24PWyvBS89d348W9n7DA524Q,11502
|
|
191
192
|
matrice_analytics/post_processing/utils/geometry_utils.py,sha256=BWfdM6RsdJTTLR1GqkWfdwpjMEjTCJyuBxA4zVGKdfk,9623
|
|
192
|
-
matrice_analytics/post_processing/utils/incident_manager_utils.py,sha256=
|
|
193
|
+
matrice_analytics/post_processing/utils/incident_manager_utils.py,sha256=Yf-IWP6W7r5VrJspUupVMnj6b4Uy2ViAGyzmlzPn3Mo,79651
|
|
193
194
|
matrice_analytics/post_processing/utils/smoothing_utils.py,sha256=78U-yucAcjUiZ0NIAc9NOUSIT0PWP1cqyIPA_Fdrjp0,14699
|
|
194
195
|
matrice_analytics/post_processing/utils/tracking_utils.py,sha256=rWxuotnJ3VLMHIBOud2KLcu4yZfDp7hVPWUtNAq_2xw,8288
|
|
195
|
-
matrice_analytics-0.1.
|
|
196
|
-
matrice_analytics-0.1.
|
|
197
|
-
matrice_analytics-0.1.
|
|
198
|
-
matrice_analytics-0.1.
|
|
199
|
-
matrice_analytics-0.1.
|
|
196
|
+
matrice_analytics-0.1.96.dist-info/licenses/LICENSE.txt,sha256=_uQUZpgO0mRYL5-fPoEvLSbNnLPv6OmbeEDCHXhK6Qc,1066
|
|
197
|
+
matrice_analytics-0.1.96.dist-info/METADATA,sha256=oL5yLm0vtJsAo7LwR7KSUxcZgyLoDVkneXCqBOXLWaM,14378
|
|
198
|
+
matrice_analytics-0.1.96.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
199
|
+
matrice_analytics-0.1.96.dist-info/top_level.txt,sha256=STAPEU-e-rWTerXaspdi76T_eVRSrEfFpURSP7_Dt8E,18
|
|
200
|
+
matrice_analytics-0.1.96.dist-info/RECORD,,
|
|
File without changes
|
{matrice_analytics-0.1.89.dist-info → matrice_analytics-0.1.96.dist-info}/licenses/LICENSE.txt
RENAMED
|
File without changes
|
|
File without changes
|