matrice 1.0.99119__tar.gz → 1.0.99121__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.
- {matrice-1.0.99119/src/matrice.egg-info → matrice-1.0.99121}/PKG-INFO +1 -1
- {matrice-1.0.99119 → matrice-1.0.99121}/setup.py +1 -1
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/advanced_customer_service.py +0 -14
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/assembly_line_detection.py +2 -1
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/crop_weed_detection.py +28 -23
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/emergency_vehicle_detection.py +2 -1
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/fashion_detection.py +27 -22
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/gender_detection.py +27 -22
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/price_tag_detection.py +27 -22
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/windmill_maintenance.py +4 -1
- {matrice-1.0.99119 → matrice-1.0.99121/src/matrice.egg-info}/PKG-INFO +1 -1
- {matrice-1.0.99119 → matrice-1.0.99121}/LICENSE.txt +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/README.md +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/setup.cfg +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/action.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/actionTracker.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/action_tracker.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/annotation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/app_store.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/application.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/action_instance.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/actions_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/actions_scaledown_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/instance_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/instance_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/prechecks.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/resources_tracker.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/scaling.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/shutdown_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/task_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/base.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/bit_depth_reduction.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/blur.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/brightness_contrast.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/color_jitter.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/compression_artifacts.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/downscale_upscale.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/film_grain.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/flip.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/fog.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/horizontal_flip.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/hsv.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/iso_noise.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/low_light.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/posterize.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/rain.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/random_affine.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/salt_pepper.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/shadows.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/snow.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/speckle.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/strategies/sunflare.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/client.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/client_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/create_dataset.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_augmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_augmentor.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/imagenet_classification.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/labelbox_classification.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/labelbox_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/mscoco_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/pascalvoc_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/unlabelled.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/video_davis_segmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/video_detection_mscoco.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/video_imagenet_classification.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/video_kinetics_activity_recognition.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/video_mot_tracking.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/video_mscoco_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/video_youtube_bb_tracking.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_formats/yolo_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_labelling.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_prep.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/data_processor.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/image_augmentations.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/image_data_augmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/new_data_augmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/pipeline.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/server.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/server_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/video_server.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/dataset.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/aggregator/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/aggregator/aggregator.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/aggregator/ingestor.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/aggregator/pipeline.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/aggregator/publisher.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/aggregator/synchronizer.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/auto_streaming/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/auto_streaming/auto_streaming.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/auto_streaming/auto_streaming_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/client.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/client_stream_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/client_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/frame_comparators.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/streaming_gateway/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/streaming_gateway/streaming_gateway.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/streaming_gateway/streaming_gateway_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/client/streaming_gateway/streaming_results_handler.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/inference/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/inference/batch_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/inference/cache_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/inference/inference_interface.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/inference/model_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/inference/triton_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/proxy/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/proxy/proxy_interface.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/proxy/proxy_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/server.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/server/stream_worker.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/boundary_drawing_internal/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/boundary_drawing_internal/boundary_drawing_internal.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/boundary_drawing_internal/boundary_drawing_tool.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/boundary_drawing_internal/example_usage.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/kafka_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/advanced_tracker/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/advanced_tracker/base.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/advanced_tracker/config.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/advanced_tracker/kalman_filter.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/advanced_tracker/matching.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/advanced_tracker/strack.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/advanced_tracker/tracker.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/config.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/core/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/core/base.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/core/config.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/core/config_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/processor.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/run_tests.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_advanced_customer_service.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_basic_counting_tracking.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_comprehensive.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_config.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_customer_service.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_data_generators.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_people_counting.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_processor.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_utilities.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/test_cases/test_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/age_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/anti_spoofing_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/banana_defect_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/basic_counting_tracking.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/blood_cancer_detection_img.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/car_damage_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/car_part_segmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/chicken_pose_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/child_monitoring.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/color_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/color_map_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/concrete_crack_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/customer_service.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/defect_detection_products.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/distracted_driver_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/face_emotion.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/field_mapping.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/fire_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/flare_analysis.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/flower_segmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/leaf.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/leaf_disease.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/license_plate_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/mask_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/parking.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/parking_space_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/pedestrian_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/people_counting.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/plaque_segmentation_img.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/pothole_segmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/ppe_compliance.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/road_lane_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/shelf_inventory_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/shoplifting_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/shopping_cart_analysis.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/skin_cancer_classification_img.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/solar_panel.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/template_usecase.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/theft_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/traffic_sign_monitoring.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/underwater_pollution_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/vehicle_monitoring.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/warehouse_object_segmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/weapon_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/weld_defect_detection.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/usecases/wound_segmentation.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/advanced_counting_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/advanced_helper_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/advanced_tracking_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/alerting_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/category_mapping_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/color_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/counting_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/filter_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/format_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/geometry_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/smoothing_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deploy/utils/post_processing/utils/tracking_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deployment/__init__.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deployment/camera_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deployment/deployment.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deployment/inference_pipeline.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/deployment/streaming_gateway_manager.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/docker_utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/drift_monitor.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/exported_model.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/local_test.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/metrics_calculator.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/metrics_calculator_oop.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/model_store.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/models.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/pipeline.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/projects.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/rpc.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/scaling.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/session.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/testing.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/token_auth.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/utils.py +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice.egg-info/SOURCES.txt +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice.egg-info/dependency_links.txt +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice.egg-info/requires.txt +0 -0
- {matrice-1.0.99119 → matrice-1.0.99121}/src/matrice.egg-info/top_level.txt +0 -0
@@ -1476,20 +1476,6 @@ class AdvancedCustomerServiceUseCase(BaseProcessor):
|
|
1476
1476
|
|
1477
1477
|
return insights
|
1478
1478
|
|
1479
|
-
def _get_current_timestamp_str(self, stream_info: Optional[dict]) -> str:
|
1480
|
-
"""Get formatted current timestamp based on stream type (video or stream)."""
|
1481
|
-
if not stream_info:
|
1482
|
-
return "00:00:00.00"
|
1483
|
-
input_settings = stream_info.get("input_settings", {})
|
1484
|
-
stream_type = input_settings.get("stream_type", "video_file")
|
1485
|
-
if stream_type == "video_file":
|
1486
|
-
# For video files, use video_timestamp
|
1487
|
-
video_timestamp = stream_info.get("video_timestamp", "")
|
1488
|
-
return video_timestamp[:8] if video_timestamp else "00:00:00.00"
|
1489
|
-
else:
|
1490
|
-
# For streams, use stream_time
|
1491
|
-
stream_time_str = stream_info.get("stream_time", "")
|
1492
|
-
return stream_time_str[:8] if stream_time_str else "00:00:00.00"
|
1493
1479
|
|
1494
1480
|
def _get_start_timestamp_str(self, stream_info: Optional[dict]) -> str:
|
1495
1481
|
"""Get formatted start timestamp for 'TOTAL SINCE' based on stream type."""
|
@@ -590,11 +590,12 @@ class AssemblyLineUseCase(BaseProcessor):
|
|
590
590
|
"""
|
591
591
|
return {cat: len(ids) for cat, ids in getattr(self, '_per_category_total_track_ids', {}).items()}
|
592
592
|
|
593
|
+
|
593
594
|
def _format_timestamp_for_stream(self, timestamp: float) -> str:
|
594
595
|
"""Format timestamp for streams (YYYY:MM:DD HH:MM:SS format)."""
|
595
596
|
dt = datetime.fromtimestamp(timestamp, tz=timezone.utc)
|
596
597
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
597
|
-
|
598
|
+
|
598
599
|
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
599
600
|
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
600
601
|
hours = int(timestamp // 3600)
|
@@ -581,38 +581,45 @@ class CropWeedDetectionUseCase(BaseProcessor):
|
|
581
581
|
"""
|
582
582
|
return {cat: len(ids) for cat, ids in getattr(self, '_per_category_total_track_ids', {}).items()}
|
583
583
|
|
584
|
-
|
585
|
-
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
586
|
-
hours = int(timestamp // 3600)
|
587
|
-
minutes = int((timestamp % 3600) // 60)
|
588
|
-
seconds = timestamp % 60
|
589
|
-
return f"{hours:02d}:{minutes:02d}:{seconds:06.2f}"
|
590
|
-
|
584
|
+
|
591
585
|
def _format_timestamp_for_stream(self, timestamp: float) -> str:
|
592
586
|
"""Format timestamp for streams (YYYY:MM:DD HH:MM:SS format)."""
|
593
587
|
dt = datetime.fromtimestamp(timestamp, tz=timezone.utc)
|
594
588
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
595
589
|
|
596
|
-
def
|
590
|
+
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
591
|
+
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
592
|
+
hours = int(timestamp // 3600)
|
593
|
+
minutes = int((timestamp % 3600) // 60)
|
594
|
+
seconds = round(float(timestamp % 60),2)
|
595
|
+
return f"{hours:02d}:{minutes:02d}:{seconds:.1f}"
|
596
|
+
|
597
|
+
def _get_current_timestamp_str(self, stream_info: Optional[Dict[str, Any]], precision=False, frame_id: Optional[str]=None) -> str:
|
597
598
|
"""Get formatted current timestamp based on stream type."""
|
598
599
|
if not stream_info:
|
599
600
|
return "00:00:00.00"
|
600
|
-
|
601
601
|
# is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
|
602
602
|
if precision:
|
603
|
-
if stream_info.get("input_settings", {}).get("
|
604
|
-
|
605
|
-
|
603
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
604
|
+
if frame_id:
|
605
|
+
start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
606
|
+
else:
|
607
|
+
start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
608
|
+
stream_time_str = self._format_timestamp_for_video(start_time)
|
609
|
+
return stream_time_str
|
606
610
|
else:
|
607
611
|
return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
|
608
612
|
|
609
|
-
if stream_info.get("input_settings", {}).get("
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
614
|
+
if frame_id:
|
615
|
+
start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
616
|
+
else:
|
617
|
+
start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
618
|
+
stream_time_str = self._format_timestamp_for_video(start_time)
|
619
|
+
return stream_time_str
|
613
620
|
else:
|
614
621
|
# For streams, use stream_time from stream_info
|
615
|
-
stream_time_str = stream_info.get("stream_time", "")
|
622
|
+
stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
|
616
623
|
if stream_time_str:
|
617
624
|
# Parse the high precision timestamp string to get timestamp
|
618
625
|
try:
|
@@ -631,23 +638,20 @@ class CropWeedDetectionUseCase(BaseProcessor):
|
|
631
638
|
"""Get formatted start timestamp for 'TOTAL SINCE' based on stream type."""
|
632
639
|
if not stream_info:
|
633
640
|
return "00:00:00"
|
634
|
-
|
635
|
-
is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
|
636
641
|
if precision:
|
637
|
-
if stream_info.get("input_settings", {}).get("
|
642
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
638
643
|
return "00:00:00"
|
639
644
|
else:
|
640
645
|
return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
|
641
646
|
|
642
|
-
|
643
|
-
if stream_info.get("input_settings", {}).get("stream_type", "video_file") == "video_file":
|
647
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
644
648
|
# If video format, start from 00:00:00
|
645
649
|
return "00:00:00"
|
646
650
|
else:
|
647
651
|
# For streams, use tracking start time or current time with minutes/seconds reset
|
648
652
|
if self._tracking_start_time is None:
|
649
653
|
# Try to extract timestamp from stream_time string
|
650
|
-
stream_time_str = stream_info.get("stream_time", "")
|
654
|
+
stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
|
651
655
|
if stream_time_str:
|
652
656
|
try:
|
653
657
|
# Remove " UTC" suffix and parse
|
@@ -665,6 +669,7 @@ class CropWeedDetectionUseCase(BaseProcessor):
|
|
665
669
|
dt = dt.replace(minute=0, second=0, microsecond=0)
|
666
670
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
667
671
|
|
672
|
+
|
668
673
|
def _count_categories(self, detections: list, config: CropWeedDetectionConfig) -> dict:
|
669
674
|
"""
|
670
675
|
Count the number of detections per category and return a summary dict.
|
@@ -578,11 +578,12 @@ class EmergencyVehicleUseCase(BaseProcessor):
|
|
578
578
|
"""
|
579
579
|
return {cat: len(ids) for cat, ids in getattr(self, '_per_category_total_track_ids', {}).items()}
|
580
580
|
|
581
|
+
|
581
582
|
def _format_timestamp_for_stream(self, timestamp: float) -> str:
|
582
583
|
"""Format timestamp for streams (YYYY:MM:DD HH:MM:SS format)."""
|
583
584
|
dt = datetime.fromtimestamp(timestamp, tz=timezone.utc)
|
584
585
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
585
|
-
|
586
|
+
|
586
587
|
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
587
588
|
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
588
589
|
hours = int(timestamp // 3600)
|
@@ -585,38 +585,45 @@ class FashionDetectionUseCase(BaseProcessor):
|
|
585
585
|
"""
|
586
586
|
return {cat: len(ids) for cat, ids in getattr(self, '_per_category_total_track_ids', {}).items()}
|
587
587
|
|
588
|
-
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
589
|
-
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
590
|
-
hours = int(timestamp // 3600)
|
591
|
-
minutes = int((timestamp % 3600) // 60)
|
592
|
-
seconds = timestamp % 60
|
593
|
-
return f"{hours:02d}:{minutes:02d}:{seconds:06.2f}"
|
594
588
|
|
595
589
|
def _format_timestamp_for_stream(self, timestamp: float) -> str:
|
596
590
|
"""Format timestamp for streams (YYYY:MM:DD HH:MM:SS format)."""
|
597
591
|
dt = datetime.fromtimestamp(timestamp, tz=timezone.utc)
|
598
592
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
599
593
|
|
600
|
-
def
|
594
|
+
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
595
|
+
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
596
|
+
hours = int(timestamp // 3600)
|
597
|
+
minutes = int((timestamp % 3600) // 60)
|
598
|
+
seconds = round(float(timestamp % 60),2)
|
599
|
+
return f"{hours:02d}:{minutes:02d}:{seconds:.1f}"
|
600
|
+
|
601
|
+
def _get_current_timestamp_str(self, stream_info: Optional[Dict[str, Any]], precision=False, frame_id: Optional[str]=None) -> str:
|
601
602
|
"""Get formatted current timestamp based on stream type."""
|
602
603
|
if not stream_info:
|
603
604
|
return "00:00:00.00"
|
604
|
-
|
605
605
|
# is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
|
606
606
|
if precision:
|
607
|
-
if stream_info.get("input_settings", {}).get("
|
608
|
-
|
609
|
-
|
607
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
608
|
+
if frame_id:
|
609
|
+
start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
610
|
+
else:
|
611
|
+
start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
612
|
+
stream_time_str = self._format_timestamp_for_video(start_time)
|
613
|
+
return stream_time_str
|
610
614
|
else:
|
611
615
|
return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
|
612
616
|
|
613
|
-
if stream_info.get("input_settings", {}).get("
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
618
|
+
if frame_id:
|
619
|
+
start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
620
|
+
else:
|
621
|
+
start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
622
|
+
stream_time_str = self._format_timestamp_for_video(start_time)
|
623
|
+
return stream_time_str
|
617
624
|
else:
|
618
625
|
# For streams, use stream_time from stream_info
|
619
|
-
stream_time_str = stream_info.get("stream_time", "")
|
626
|
+
stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
|
620
627
|
if stream_time_str:
|
621
628
|
# Parse the high precision timestamp string to get timestamp
|
622
629
|
try:
|
@@ -635,23 +642,20 @@ class FashionDetectionUseCase(BaseProcessor):
|
|
635
642
|
"""Get formatted start timestamp for 'TOTAL SINCE' based on stream type."""
|
636
643
|
if not stream_info:
|
637
644
|
return "00:00:00"
|
638
|
-
|
639
|
-
is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
|
640
645
|
if precision:
|
641
|
-
if stream_info.get("input_settings", {}).get("
|
646
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
642
647
|
return "00:00:00"
|
643
648
|
else:
|
644
649
|
return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
|
645
650
|
|
646
|
-
|
647
|
-
if stream_info.get("input_settings", {}).get("stream_type", "video_file") == "video_file":
|
651
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
648
652
|
# If video format, start from 00:00:00
|
649
653
|
return "00:00:00"
|
650
654
|
else:
|
651
655
|
# For streams, use tracking start time or current time with minutes/seconds reset
|
652
656
|
if self._tracking_start_time is None:
|
653
657
|
# Try to extract timestamp from stream_time string
|
654
|
-
stream_time_str = stream_info.get("stream_time", "")
|
658
|
+
stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
|
655
659
|
if stream_time_str:
|
656
660
|
try:
|
657
661
|
# Remove " UTC" suffix and parse
|
@@ -669,6 +673,7 @@ class FashionDetectionUseCase(BaseProcessor):
|
|
669
673
|
dt = dt.replace(minute=0, second=0, microsecond=0)
|
670
674
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
671
675
|
|
676
|
+
|
672
677
|
def _count_categories(self, detections: list, config: FashionDetectionConfig) -> dict:
|
673
678
|
"""
|
674
679
|
Count the number of detections per category and return a summary dict.
|
@@ -581,38 +581,45 @@ class GenderDetectionUseCase(BaseProcessor):
|
|
581
581
|
"""
|
582
582
|
return {cat: len(ids) for cat, ids in getattr(self, '_per_category_total_track_ids', {}).items()}
|
583
583
|
|
584
|
-
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
585
|
-
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
586
|
-
hours = int(timestamp // 3600)
|
587
|
-
minutes = int((timestamp % 3600) // 60)
|
588
|
-
seconds = timestamp % 60
|
589
|
-
return f"{hours:02d}:{minutes:02d}:{seconds:06.2f}"
|
590
584
|
|
591
585
|
def _format_timestamp_for_stream(self, timestamp: float) -> str:
|
592
586
|
"""Format timestamp for streams (YYYY:MM:DD HH:MM:SS format)."""
|
593
587
|
dt = datetime.fromtimestamp(timestamp, tz=timezone.utc)
|
594
588
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
595
589
|
|
596
|
-
def
|
590
|
+
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
591
|
+
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
592
|
+
hours = int(timestamp // 3600)
|
593
|
+
minutes = int((timestamp % 3600) // 60)
|
594
|
+
seconds = round(float(timestamp % 60),2)
|
595
|
+
return f"{hours:02d}:{minutes:02d}:{seconds:.1f}"
|
596
|
+
|
597
|
+
def _get_current_timestamp_str(self, stream_info: Optional[Dict[str, Any]], precision=False, frame_id: Optional[str]=None) -> str:
|
597
598
|
"""Get formatted current timestamp based on stream type."""
|
598
599
|
if not stream_info:
|
599
600
|
return "00:00:00.00"
|
600
|
-
|
601
601
|
# is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
|
602
602
|
if precision:
|
603
|
-
if stream_info.get("input_settings", {}).get("
|
604
|
-
|
605
|
-
|
603
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
604
|
+
if frame_id:
|
605
|
+
start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
606
|
+
else:
|
607
|
+
start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
608
|
+
stream_time_str = self._format_timestamp_for_video(start_time)
|
609
|
+
return stream_time_str
|
606
610
|
else:
|
607
611
|
return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
|
608
612
|
|
609
|
-
if stream_info.get("input_settings", {}).get("
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
614
|
+
if frame_id:
|
615
|
+
start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
616
|
+
else:
|
617
|
+
start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
618
|
+
stream_time_str = self._format_timestamp_for_video(start_time)
|
619
|
+
return stream_time_str
|
613
620
|
else:
|
614
621
|
# For streams, use stream_time from stream_info
|
615
|
-
stream_time_str = stream_info.get("stream_time", "")
|
622
|
+
stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
|
616
623
|
if stream_time_str:
|
617
624
|
# Parse the high precision timestamp string to get timestamp
|
618
625
|
try:
|
@@ -631,23 +638,20 @@ class GenderDetectionUseCase(BaseProcessor):
|
|
631
638
|
"""Get formatted start timestamp for 'TOTAL SINCE' based on stream type."""
|
632
639
|
if not stream_info:
|
633
640
|
return "00:00:00"
|
634
|
-
|
635
|
-
is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
|
636
641
|
if precision:
|
637
|
-
if stream_info.get("input_settings", {}).get("
|
642
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
638
643
|
return "00:00:00"
|
639
644
|
else:
|
640
645
|
return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
|
641
646
|
|
642
|
-
|
643
|
-
if stream_info.get("input_settings", {}).get("stream_type", "video_file") == "video_file":
|
647
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
644
648
|
# If video format, start from 00:00:00
|
645
649
|
return "00:00:00"
|
646
650
|
else:
|
647
651
|
# For streams, use tracking start time or current time with minutes/seconds reset
|
648
652
|
if self._tracking_start_time is None:
|
649
653
|
# Try to extract timestamp from stream_time string
|
650
|
-
stream_time_str = stream_info.get("stream_time", "")
|
654
|
+
stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
|
651
655
|
if stream_time_str:
|
652
656
|
try:
|
653
657
|
# Remove " UTC" suffix and parse
|
@@ -665,6 +669,7 @@ class GenderDetectionUseCase(BaseProcessor):
|
|
665
669
|
dt = dt.replace(minute=0, second=0, microsecond=0)
|
666
670
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
667
671
|
|
672
|
+
|
668
673
|
def _count_categories(self, detections: list, config: GenderDetectionConfig) -> dict:
|
669
674
|
"""
|
670
675
|
Count the number of detections per category and return a summary dict.
|
@@ -572,38 +572,45 @@ class PriceTagUseCase(BaseProcessor):
|
|
572
572
|
"""
|
573
573
|
return {cat: len(ids) for cat, ids in getattr(self, '_per_category_total_track_ids', {}).items()}
|
574
574
|
|
575
|
-
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
576
|
-
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
577
|
-
hours = int(timestamp // 3600)
|
578
|
-
minutes = int((timestamp % 3600) // 60)
|
579
|
-
seconds = timestamp % 60
|
580
|
-
return f"{hours:02d}:{minutes:02d}:{seconds:06.2f}"
|
581
575
|
|
582
576
|
def _format_timestamp_for_stream(self, timestamp: float) -> str:
|
583
577
|
"""Format timestamp for streams (YYYY:MM:DD HH:MM:SS format)."""
|
584
578
|
dt = datetime.fromtimestamp(timestamp, tz=timezone.utc)
|
585
579
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
586
580
|
|
587
|
-
def
|
581
|
+
def _format_timestamp_for_video(self, timestamp: float) -> str:
|
582
|
+
"""Format timestamp for video chunks (HH:MM:SS.ms format)."""
|
583
|
+
hours = int(timestamp // 3600)
|
584
|
+
minutes = int((timestamp % 3600) // 60)
|
585
|
+
seconds = round(float(timestamp % 60),2)
|
586
|
+
return f"{hours:02d}:{minutes:02d}:{seconds:.1f}"
|
587
|
+
|
588
|
+
def _get_current_timestamp_str(self, stream_info: Optional[Dict[str, Any]], precision=False, frame_id: Optional[str]=None) -> str:
|
588
589
|
"""Get formatted current timestamp based on stream type."""
|
589
590
|
if not stream_info:
|
590
591
|
return "00:00:00.00"
|
591
|
-
|
592
592
|
# is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
|
593
593
|
if precision:
|
594
|
-
if stream_info.get("input_settings", {}).get("
|
595
|
-
|
596
|
-
|
594
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
595
|
+
if frame_id:
|
596
|
+
start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
597
|
+
else:
|
598
|
+
start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
599
|
+
stream_time_str = self._format_timestamp_for_video(start_time)
|
600
|
+
return stream_time_str
|
597
601
|
else:
|
598
602
|
return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
|
599
603
|
|
600
|
-
if stream_info.get("input_settings", {}).get("
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
605
|
+
if frame_id:
|
606
|
+
start_time = int(frame_id)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
607
|
+
else:
|
608
|
+
start_time = stream_info.get("input_settings", {}).get("start_frame", 30)/stream_info.get("input_settings", {}).get("original_fps", 30)
|
609
|
+
stream_time_str = self._format_timestamp_for_video(start_time)
|
610
|
+
return stream_time_str
|
604
611
|
else:
|
605
612
|
# For streams, use stream_time from stream_info
|
606
|
-
stream_time_str = stream_info.get("stream_time", "")
|
613
|
+
stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
|
607
614
|
if stream_time_str:
|
608
615
|
# Parse the high precision timestamp string to get timestamp
|
609
616
|
try:
|
@@ -622,23 +629,20 @@ class PriceTagUseCase(BaseProcessor):
|
|
622
629
|
"""Get formatted start timestamp for 'TOTAL SINCE' based on stream type."""
|
623
630
|
if not stream_info:
|
624
631
|
return "00:00:00"
|
625
|
-
|
626
|
-
is_video_chunk = stream_info.get("input_settings", {}).get("is_video_chunk", False)
|
627
632
|
if precision:
|
628
|
-
if stream_info.get("input_settings", {}).get("
|
633
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
629
634
|
return "00:00:00"
|
630
635
|
else:
|
631
636
|
return datetime.now(timezone.utc).strftime("%Y-%m-%d-%H:%M:%S.%f UTC")
|
632
637
|
|
633
|
-
|
634
|
-
if stream_info.get("input_settings", {}).get("stream_type", "video_file") == "video_file":
|
638
|
+
if stream_info.get("input_settings", {}).get("start_frame", "na") != "na":
|
635
639
|
# If video format, start from 00:00:00
|
636
640
|
return "00:00:00"
|
637
641
|
else:
|
638
642
|
# For streams, use tracking start time or current time with minutes/seconds reset
|
639
643
|
if self._tracking_start_time is None:
|
640
644
|
# Try to extract timestamp from stream_time string
|
641
|
-
stream_time_str = stream_info.get("stream_time", "")
|
645
|
+
stream_time_str = stream_info.get("input_settings", {}).get("stream_info", {}).get("stream_time", "")
|
642
646
|
if stream_time_str:
|
643
647
|
try:
|
644
648
|
# Remove " UTC" suffix and parse
|
@@ -656,6 +660,7 @@ class PriceTagUseCase(BaseProcessor):
|
|
656
660
|
dt = dt.replace(minute=0, second=0, microsecond=0)
|
657
661
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
658
662
|
|
663
|
+
|
659
664
|
def _count_categories(self, detections: list, config: PriceTagConfig) -> dict:
|
660
665
|
"""
|
661
666
|
Count the number of detections per category and return a summary dict.
|
@@ -595,6 +595,8 @@ class WindmillMaintenanceUseCase(BaseProcessor):
|
|
595
595
|
Return total unique track_id count for each category.
|
596
596
|
"""
|
597
597
|
return {cat: len(ids) for cat, ids in getattr(self, '_per_category_total_track_ids', {}).items()}
|
598
|
+
|
599
|
+
|
598
600
|
def _format_timestamp_for_stream(self, timestamp: float) -> str:
|
599
601
|
"""Format timestamp for streams (YYYY:MM:DD HH:MM:SS format)."""
|
600
602
|
dt = datetime.fromtimestamp(timestamp, tz=timezone.utc)
|
@@ -681,7 +683,8 @@ class WindmillMaintenanceUseCase(BaseProcessor):
|
|
681
683
|
# Reset minutes and seconds to 00:00 for "TOTAL SINCE" format
|
682
684
|
dt = dt.replace(minute=0, second=0, microsecond=0)
|
683
685
|
return dt.strftime('%Y:%m:%d %H:%M:%S')
|
684
|
-
|
686
|
+
|
687
|
+
|
685
688
|
def _count_categories(self, detections: list, config: WindmillMaintenanceConfig) -> dict:
|
686
689
|
"""
|
687
690
|
Count the number of detections per category and return a summary dict.
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/compute_manager/actions_scaledown_manager.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/__init__.py
RENAMED
File without changes
|
{matrice-1.0.99119 → matrice-1.0.99121}/src/matrice/data_processing/augmentation_utils/base.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|