1
0
forked from HQU-gxy/CVTH3PE
Commit Graph

56 Commits

Author SHA1 Message Date
lmd
dc015b6c65 xxx 2025-07-11 15:52:46 +08:00
b3da8ef7b2 new 2025-07-11 15:40:57 +08:00
3ec4a89103 modify parameters 2025-07-11 10:27:42 +08:00
755d65f7d7 I'm trying to reconstruct a multi-person scene using epipolar line. The code is not yet completed. 2025-07-11 10:17:24 +08:00
0d16925741 add annotations 2025-07-09 10:31:22 +08:00
b4ac324d8f Single-person tracking, modified the tracking initialization and tracking exit conditions, and also modified the weighted calculation process of DLT 2025-07-08 17:00:10 +08:00
835367cd6d Single-person detection and DLT, but there is no complete tracking 2025-07-08 14:06:10 +08:00
492b4fba04 single peopele detect and tracking 2025-06-13 16:02:15 +08:00
eb9738cb02 x 2025-06-03 16:42:51 +08:00
072bf1c46f feat: Integrate pyrsistent for enhanced tracking state management
- Added `pyrsistent` as a dependency to manage historical detections in the `Tracking` class, improving data integrity and immutability.
- Updated the `GlobalTrackingState` to include historical detections using `PVector`, facilitating better tracking of past detections.
- Introduced a new `update_tracking` function to handle timestamp updates for tracking objects, enhancing the tracking logic.
- Refactored imports and type hints for improved organization and clarity across the codebase.
2025-04-30 10:04:39 +08:00
cea21dc434 Revert "refactor: Optimize affinity matrix calculation with parallel processing"
This reverts commit e79e899b87.
2025-04-29 16:22:53 +08:00
e79e899b87 refactor: Optimize affinity matrix calculation with parallel processing
- Introduced parallel processing using `ThreadPoolExecutor` to enhance the performance of the `calculate_affinity_matrix` function, allowing simultaneous processing of multiple cameras.
- Added a new helper function `_single_camera_job` to encapsulate the logic for processing individual camera detections, improving code organization and readability.
- Updated the function signature to include an optional `max_workers` parameter for controlling the number of threads used in parallel execution.
- Enhanced documentation to clarify the purpose and parameters of the new parallel processing implementation.
2025-04-29 16:14:07 +08:00
29ca66ad47 refactor: Update affinity matrix calculation and dependencies
- Replaced the `linear_sum_assignment` import from `scipy.optimize` with `hungarian_algorithm` from `optax` to enhance performance in affinity matrix calculations.
- Introduced a new `AffinityResult` class to encapsulate results of affinity computations, including trackings and detections, improving the structure of the affinity calculation process.
- Removed deprecated functions and debug print statements to streamline the codebase.
- Updated `pyproject.toml` and `uv.lock` to include `optax` as a dependency, ensuring compatibility with the new implementation.
- Refactored imports and type hints for better organization and consistency across the codebase.
2025-04-29 15:45:24 +08:00
ce1d5f3cf7 refactor: Improve timestamp handling in camera affinity matrix calculation
- Replaced direct access to tracking and detection timestamps with a more efficient use of `itertools.chain` to gather timestamps, enhancing readability and performance in `calculate_camera_affinity_matrix_jax`.
- Maintained precision in timestamp calculations to ensure accurate results in affinity computations.
2025-04-29 13:05:52 +08:00
29c8ef3990 fix: fix the timestamp precision error cause the jax version not giving the correct result
Epoch timestamps are ~1.7 × 10⁹; storing them in float32 wipes out
sub‑second detail (resolution ≈ 200 ms).  Keep them in float64 until
after subtraction so we preserve Δt‑on‑the‑order‑of‑milliseconds.

- Introduced a `_DEBUG_CURRENT_TRACKING` variable to track the current indices of tracking and detection during calculations.
- Added a `_global_current_tracking_str` function to format the current tracking state for debugging purposes.
- Enhanced `calculate_distance_2d` and `calculate_tracking_detection_affinity` functions with debug print statements to log intermediate values, improving traceability of calculations.
- Updated `perpendicular_distance_camera_2d_points_to_tracking_raycasting` to accept `delta_t` from the caller while ensuring it adheres to a minimum threshold.
- Refactored timestamp handling in `calculate_camera_affinity_matrix_jax` to maintain precision during calculations.
2025-04-29 12:56:58 +08:00
7dd703edd6 wip 2025-04-29 12:18:19 +08:00
65cc646927 feat: Introduce Tracking class and refactor pose prediction
- Added a new `Tracking` class to encapsulate tracking data, including keypoints and velocity, with a method for predicting 3D poses based on velocity.
- Refactored the pose prediction logic in `calculate_camera_affinity_matrix_jax` to utilize the new `predict` method from the `Tracking` class, enhancing clarity and modularity.
- Introduced an `AffinityResult` class to manage results of affinity computations, including trackings and detections, improving the structure of the affinity calculation process.
- Updated imports and type hints for better organization and consistency across the codebase.
2025-04-29 12:14:08 +08:00
86fcc5f283 feat: Enhance 3D pose prediction and camera affinity calculations
- Introduced a JAX-friendly implementation of `predict_pose_3d` to predict 3D poses based on tracking velocities, improving performance by avoiding Python control flow.
- Updated `calculate_camera_affinity_matrix_jax` to streamline the affinity matrix calculation, incorporating velocity handling for trackings and enhancing clarity in the distance computation.
- Added properties for normalized keypoints in the `Detection` class, allowing for lazy evaluation and improved usability.
- Enhanced documentation throughout to clarify function purposes and parameters.
2025-04-29 12:06:07 +08:00
6194f083cb refactor: Update AffinityResult class to include detection handling
- Added a new `detections` attribute to the `AffinityResult` class to store detection objects used in affinity matrix calculations.
- Introduced a `tracking_detections` method to yield pairs of trackings and their corresponding detections, enhancing the functionality of the class.
- Updated type hints for improved clarity and consistency in the class definition.
2025-04-28 19:13:23 +08:00
da4c51d04f feat: Implement AffinityResult class and optimize camera affinity matrix calculation
- Added a new `AffinityResult` class to encapsulate the results of affinity computations, including the affinity matrix, trackings, and their respective indices.
- Introduced a vectorized implementation of `calculate_camera_affinity_matrix_jax` to enhance performance by leveraging JAX's capabilities, replacing the previous double-for-loop approach.
- Updated tests in `test_affinity.py` to include parameterized benchmarks for comparing the performance of the new vectorized method against the naive implementation, ensuring accuracy and efficiency.
2025-04-28 19:08:16 +08:00
487dd4e237 feat: Add hypothesis testing and update dependencies
- Added property-based tests for camera affinity calculations using Hypothesis, enhancing test coverage and reliability.
- Updated `.gitignore` to include `.hypothesis` directory.
- Added `hypothesis` and `pytest` as dependencies in `pyproject.toml` and `uv.lock` for improved testing capabilities.
- Refactored imports in `playground.py` to include `Sequence` and `Mapping` from `beartype.typing`.
- Introduced a new test file `tests/test_affinity.py` for structured testing of affinity calculations.
2025-04-28 18:21:08 +08:00
b3ed20296a revert 2025-04-28 18:01:24 +08:00
7ee4002567 wip 2025-04-28 16:39:23 +08:00
ebcd38eb52 feat: Add camera affinity calculations and iterative processing in playground.py
- Introduced `calculate_camera_affinity_matrix` to compute affinity between trackings and detections for individual cameras, enhancing modularity.
- Added `process_detections_iteratively` to handle detections camera by camera, improving efficiency and scalability.
- Enhanced type hints and documentation for new functions, clarifying parameters and return values.
- Refactored existing affinity calculation logic to integrate new functionalities, ensuring better organization and readability.
2025-04-28 16:11:57 +08:00
a31f609133 chore: unicode 2025-04-27 18:12:09 +08:00
d9aaa96d0a refactor: Enhance type hints and documentation for distance calculation functions in playground.py
- Updated the return type of `perpendicular_distance_point_to_line_two_points` to `Float[Array, ""]` for improved type clarity.
- Added detailed docstrings to `perpendicular_distance_point_to_line_two_points`, specifying arguments and return values for better understanding.
- Streamlined the distance calculation in `perpendicular_distance_camera_2d_points_to_tracking_raycasting` by removing unnecessary type casting, enhancing code readability.
2025-04-27 18:08:45 +08:00
9639bcb794 refactor: Update type hints and streamline distance calculations in playground.py
- Changed the return type of `perpendicular_distance_point_to_line_two_points` to `jnp.floating[Any]` for improved type accuracy.
- Refactored the `perpendicular_distance_camera_2d_points_to_tracking_raycasting` function to store distances in a typed variable, enhancing clarity and type safety.
- Improved the overall readability of the distance calculation logic by returning the computed distances directly.
2025-04-27 18:00:56 +08:00
d4ade248dc feat: Add calculate_affinity_matrix function to streamline affinity calculations
- Introduced a new function `calculate_affinity_matrix` to compute the affinity matrix between trackings and detections, enhancing modularity and clarity.
- Updated the existing affinity calculation logic to utilize the new function, improving code organization and readability.
- Adjusted the image size parameter in the distance calculation to ensure proper type handling.
- Enhanced documentation for the new function, detailing its parameters, return values, and matrix layout for better understanding.
2025-04-27 17:57:12 +08:00
41e0141bde refactor: Update type hints and enhance affinity calculations in playground.py
- Changed function signatures to use `Sequence` instead of `list` for better type flexibility.
- Introduced a new function `calculate_tracking_detection_affinity` to streamline the calculation of affinities between tracking and detection objects.
- Refactored existing affinity calculation logic to improve clarity and performance, leveraging the new affinity function.
- Removed commented-out code to clean up the implementation and enhance readability.
2025-04-27 17:45:31 +08:00
4f48c78cfb fix: Update distance calculation in playground.py to include image size parameter
- Modified the distance calculation function to accept an image size parameter, enhancing accuracy in 2D distance computations.
- Improved the integration of camera parameters into the tracking logic for better performance and reliability.
2025-04-27 17:00:56 +08:00
a4cc34f599 feat: Enhance playground.py with new 3D tracking and affinity calculations
- Added functions for calculating perpendicular distances between predicted 3D tracking points and camera rays, improving 3D tracking accuracy.
- Introduced a new function for calculating 3D affinity scores based on distances and time differences, enhancing the integration of 3D tracking with existing systems.
- Updated existing functions to support new data types and improved documentation for clarity on parameters and return values.
- Refactored affinity calculation logic to utilize JAX for performance optimization in distance computations.
2025-04-27 16:56:49 +08:00
5b5ccbd92b feat: Enhance playground.py with new tracking and affinity calculation functionalities
- Introduced new functions for calculating 2D distances and affinities between detections, improving tracking capabilities.
- Added a `Tracking` dataclass with detailed docstrings for better clarity on its attributes.
- Refactored code to utilize `shallow_copy` for handling detections and improved organization of imports.
- Enhanced the cross-view association logic to accommodate the new functionalities, ensuring better integration with existing tracking systems.
2025-04-27 16:03:05 +08:00
2e63a3f9bf feat: Migrate play notebook to Python script and update dependencies
- Removed the `play.ipynb` notebook and created a new `playground.py` script to enhance code organization and maintainability.
- Updated `pyproject.toml` to include `jupytext` for Jupyter notebook conversion support.
- Added instructions in `README.md` for converting notebooks using Jupytext.
- Enhanced the `uv.lock` file to reflect the new dependency on Jupytext.
2025-04-25 17:25:56 +08:00
95873a3e4e feat: Improve documentation for unprojection functions in camera module
- Enhanced docstrings for `unproject_points_to_z_plane` and the corresponding method in the `Camera` class to provide detailed descriptions of arguments and return values.
- Clarified the purpose and usage of the unprojection functionalities, improving overall code readability and usability.
2025-04-24 19:00:05 +08:00
c3c93f6ca6 feat: Enhance play notebook and camera module with new unprojection functionalities
- Updated the play notebook to include new methods for unprojecting 2D points onto a 3D plane.
- Introduced `unproject_points_onto_plane` and `unproject_points_to_z_plane` functions in the camera module for improved point handling.
- Enhanced the `Camera` class with a method for unprojecting points to a specified z-plane.
- Cleaned up execution counts in the notebook for better organization and clarity.
2025-04-24 18:55:24 +08:00
00481a0d6f feat: Add jaxtyping documentation for array annotations and dtype specifications
- Introduced comprehensive documentation for jaxtyping, detailing array shape annotations, dtype options, and modifiers.
- Included examples for using symbolic expressions and runtime checks with jaxtyping.
- Enhanced clarity on supported array types and their usage in type annotations.
2025-04-24 18:44:21 +08:00
ba551d2f5d refactor: Enhance play notebook and camera module with undistortion functionality
- Updated the play notebook to reset execution counts and remove unnecessary output displays for clarity.
- Introduced a new `undistort_points` function in the camera module to handle point undistortion using OpenCV.
- Added a `keypoints_undistorted` property to the `Detection` class for lazy evaluation of undistorted keypoints.
- Improved documentation to clarify the usage of keypoints and their undistorted counterparts.
2025-04-22 11:58:06 +08:00
3ccf790bac refactor: Optimize distortion function for clarity and performance
- Added JAX Just-In-Time (JIT) compilation to the `distortion` function for improved performance.
- Reorganized variable unpacking and calculations for better readability and efficiency.
- Enhanced comments to clarify the steps involved in the distortion process, including normalization and radial/tangential distortion calculations.
- Updated the return values to directly reflect pixel coordinates after distortion.
2025-04-22 11:43:55 +08:00
cb369b35da refactor: Update distortion and projection functions for clarity and usability
- Enhanced docstrings for `distortion` and `project` functions to clarify input expectations and output formats, emphasizing pixel coordinates.
- Improved variable naming for distortion calculations to enhance readability.
- Added checks for valid points in the `project` function, ensuring proper handling of distortion parameters.
- Introduced a new method `project_ideal` in the `Camera` class for projecting 3D points without distortion, improving usability.
2025-04-22 11:41:54 +08:00
032eb684ec feat: Enhance play notebook and camera module with new projection and distortion functionalities
- Updated play notebook to include new tracking and clustering functionalities.
- Introduced `distortion` and `project` functions for applying distortion to 2D points and projecting 3D points to 2D, respectively.
- Enhanced `CameraParams` and `Camera` classes with methods for distortion and projection, improving usability.
- Cleaned up execution counts in the notebook for better organization.
2025-04-21 18:38:08 +08:00
40f3150417 feat: Enhance play notebook and camera module with new functionalities
- Updated play notebook with additional imports and new functions for point triangulation and undistortion.
- Introduced `triangulate_one_point_from_multiple_views_linear` and `triangulate_points_from_multiple_views_linear` for batch triangulation of points.
- Added `triangle_from_cluster` function to facilitate triangulation from detection clusters.
- Enhanced `CameraParams` and `Detection` dataclasses with a projection matrix property for improved usability.
- Cleaned up imports and execution counts in the notebook for better organization.
2025-04-17 11:48:53 +08:00
3cc93e5eae feat: Enhance play notebook with new data structures and visualization utilities
- Added new TypedDict classes for camera parameters, including Resolution, Intrinsic, and Extrinsic.
- Updated dataset reading logic to accommodate new camera parameters structure.
- Introduced functions for reading datasets by port and visualizing whole body keypoints.
- Improved the affinity matrix calculation logic in the camera module.
- Updated dependencies in pyproject.toml to include Plotly and SciPy for enhanced functionality.
2025-04-16 18:53:05 +08:00
3f32333de4 refactor: Update camera module for improved type handling and utility functions
- Reorganized imports for better clarity and consistency.
- Renamed variables in distance calculation functions for improved readability.
- Enhanced `compute_affinity_epipolar_constraint_with_pairs` function with detailed docstring explaining its purpose and parameters.
- Updated function signature to accept both list and dictionary formats for detections, improving flexibility.
- Adjusted affinity calculation logic to ensure consistent naming conventions for parameters.
2025-04-15 11:06:34 +08:00
92477b18d2 feat: Enhance camera module with new data structures and utility functions
- Introduced dataclass structures for CameraParams and Camera to improve type safety and clarity.
- Added Detection dataclass to encapsulate detection data, including keypoints and timestamps.
- Implemented classify_by_camera function to organize detections by camera.
- Added utility functions for converting points to homogeneous coordinates and calculating distances to lines.
- Updated dependencies in pyproject.toml to include new libraries for enhanced functionality.
2025-04-15 10:20:49 +08:00
3ce5b564bf feat: Add beartype for runtime type checking and update dependencies
- Add beartype dependency to pyproject.toml and uv.lock
- Replace typeguard with beartype in type checking
- Create camera module with type-safe camera parameter definitions
- Migrate utility function to use beartype and JAX numpy
2025-03-06 18:35:43 +08:00
245c4b502d docs: Improve readability of section 3.1 in Chen et al. paper
- Reformatted text for better clarity and structure
- Preserved original content and technical details
- Enhanced visual separation of key points
- Maintained consistent markdown formatting
2025-03-06 12:08:49 +08:00
ed4eb75b7f docs: Update mathematical notation and formatting in Chen et al. paper
- Improved LaTeX formatting for mathematical equations
- Added bold notation for vectors and matrices
- Corrected superscript and subscript formatting
- Enhanced readability of mathematical expressions in the paper
2025-03-04 17:55:21 +08:00
a06b3e8399 feat: Add perpendicular distance calculation utility function
Implemented a utility function `calculate_perpendicular_distance` in the `app/utils/__init__.py` module. The function calculates the perpendicular distance between a point and a line using NumPy, with type hints and runtime type checking using jaxtyping and typeguard.
2025-03-04 17:34:27 +08:00
ab64051237 Add GLPK paper PDF to repository
Former-commit-id: b9a541d69b1110a167209d05db818ded89fe58e1
2025-03-04 11:00:31 +08:00
2496e65aab markdown paper
Former-commit-id: 590a637315
2025-03-04 10:21:44 +08:00