pyppbox 3.5b2__tar.gz → 3.6b2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. {pyppbox-3.5b2 → pyppbox-3.6b2}/GETSTARTED.md +17 -26
  2. {pyppbox-3.5b2/pyppbox.egg-info → pyppbox-3.6b2}/PKG-INFO +3 -5
  3. {pyppbox-3.5b2 → pyppbox-3.6b2}/README.md +2 -2
  4. {pyppbox-3.5b2 → pyppbox-3.6b2}/RELEASENOTES.md +28 -0
  5. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/__init__.py +1 -1
  6. pyppbox-3.6b2/pyppbox/config/cfg/cfg.zip +0 -0
  7. pyppbox-3.6b2/pyppbox/config/strings/strings.zip +0 -0
  8. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/guitools.py +11 -12
  9. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/detectors/yolocls/__init__.py +10 -10
  10. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/detectors/yoloult/__init__.py +6 -6
  11. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/facenet/__init__.py +1 -1
  12. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/torchreid/__init__.py +1 -1
  13. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/__init__.py +1 -1
  14. {pyppbox-3.5b2/pyppbox/standalone → pyppbox-3.6b2/pyppbox/ppb}/__init__.py +24 -24
  15. {pyppbox-3.5b2/pyppbox/standalone → pyppbox-3.6b2/pyppbox/ppb}/mt.py +7 -7
  16. pyppbox-3.6b2/pyppbox/standalone/__init__.py +37 -0
  17. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/gttools.py +2 -2
  18. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/visualizetools.py +3 -3
  19. {pyppbox-3.5b2 → pyppbox-3.6b2/pyppbox.egg-info}/PKG-INFO +3 -5
  20. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox.egg-info/SOURCES.txt +4 -2
  21. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox.egg-info/requires.txt +0 -2
  22. {pyppbox-3.5b2 → pyppbox-3.6b2}/requirements/requirements.txt +0 -3
  23. pyppbox-3.5b2/pyppbox/config/cfg/cfg.7z +0 -0
  24. {pyppbox-3.5b2 → pyppbox-3.6b2}/LICENSE +0 -0
  25. {pyppbox-3.5b2 → pyppbox-3.6b2}/MANIFEST.in +0 -0
  26. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/__init__.py +0 -0
  27. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/cfg/detectors.yaml +0 -0
  28. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/cfg/main.yaml +0 -0
  29. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/cfg/reiders.yaml +0 -0
  30. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/cfg/trackers.yaml +0 -0
  31. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/configtools.py +0 -0
  32. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/myconfig.py +0 -0
  33. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/strings/strings.yaml +0 -0
  34. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/unifiedstrings.py +0 -0
  35. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/datasets/.gitignore +0 -0
  36. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/logs/.gitignore +0 -0
  37. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/modules/.gitignore +0 -0
  38. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/res/.gitignore +0 -0
  39. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/res/idmap.txt +0 -0
  40. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/__init__.py +0 -0
  41. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/assets/TReID.png +0 -0
  42. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/assets/icon.ico +0 -0
  43. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/assets/settings.ico +0 -0
  44. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/guidemo.py +0 -0
  45. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/guihub.py +0 -0
  46. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/tmp/input.tmp +0 -0
  47. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/tmp/ui.tmp +0 -0
  48. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_centroid.py +0 -0
  49. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_deepsort.py +0 -0
  50. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_facenet.py +0 -0
  51. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_gt.py +0 -0
  52. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_launcher.py +0 -0
  53. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_sort.py +0 -0
  54. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_torchreid.py +0 -0
  55. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_yolocls.py +0 -0
  56. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_yoloult.py +0 -0
  57. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/__init__.py +0 -0
  58. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/detectors/__init__.py +0 -0
  59. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/__init__.py +0 -0
  60. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/facenet/origin/align_dataset_mtcnn.py +0 -0
  61. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/facenet/origin/detect_face.py +0 -0
  62. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/facenet/origin/facenet.py +0 -0
  63. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/torchreid/model_dict.py +0 -0
  64. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/torchreid/model_dict.yaml +0 -0
  65. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/torchreid/utils.py +0 -0
  66. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/__init__.py +0 -0
  67. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/centroid/__init__.py +0 -0
  68. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/detection.py +0 -0
  69. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/detection_yolo.py +0 -0
  70. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/generate_detections.py +0 -0
  71. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/iou_matching.py +0 -0
  72. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/kalman_filter.py +0 -0
  73. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/linear_assignment.py +0 -0
  74. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/nn_matching.py +0 -0
  75. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/preprocessing.py +0 -0
  76. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/track.py +0 -0
  77. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/tracker.py +0 -0
  78. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/voc_classes.txt +0 -0
  79. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/sort/__init__.py +0 -0
  80. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/sort/origin/sort.py +0 -0
  81. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/__init__.py +0 -0
  82. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/commontools.py +0 -0
  83. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/evatools.py +0 -0
  84. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/logtools.py +0 -0
  85. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/mot2pyppbox.py +0 -0
  86. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/persontools.py +0 -0
  87. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/restools.py +0 -0
  88. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox.egg-info/dependency_links.txt +0 -0
  89. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox.egg-info/top_level.txt +0 -0
  90. {pyppbox-3.5b2 → pyppbox-3.6b2}/pyproject.toml +0 -0
  91. {pyppbox-3.5b2 → pyppbox-3.6b2}/requirements/README.md +0 -0
  92. {pyppbox-3.5b2 → pyppbox-3.6b2}/requirements/test_gpu.py +0 -0
  93. {pyppbox-3.5b2 → pyppbox-3.6b2}/setup.cfg +0 -0
  94. {pyppbox-3.5b2 → pyppbox-3.6b2}/setup.py +0 -0
  95. {pyppbox-3.5b2 → pyppbox-3.6b2}/setup_extra.yaml +0 -0
@@ -1,24 +1,28 @@
1
1
  # 🚀 Getting Started
2
2
 
3
- Installing `pyppbox` is very easy and straightforward. You can install it from [PyPI](https://pypi.org/project/pyppbox/) directly or use the prebuilt `.whl` files on [GitHub releases](https://github.com/rathaumons/pyppbox/releases) or install from GitHub directly or build it from source on your own machine. However, in order to get it work, you need to install all the necessary dependencies or requirements for the modules you needs.
3
+ Installing `pyppbox` is very easy and straightforward. You can install it from [PyPI](https://pypi.org/project/pyppbox/) directly or use the prebuilt `.whl` files on [GitHub releases](https://github.com/rathaumons/pyppbox/releases) or install from GitHub directly or build it from source on your own machine. However, in order to get it work, you need to install all the necessary dependencies or requirements for the modules you need.
4
4
 
5
- 🆕 `pyppbox` `v3.0b2+` supports all Windows, Linux and macOS. ***Use the most recent version of `pyppbox` for smoother experience!***
6
5
 
7
6
  ## ⚙️ Requirements
8
7
 
9
8
  All requirements are not strictly limited. However, some specific modules might need some special dependencies. For example, `YOLO_Classic` (With `.weights` model) relies on [OpenCV DNN](https://docs.opencv.org/4.x/d2/d58/tutorial_table_of_content_dnn.html) in order to make use of GPU power. In this case, you might need to build OpenCV from source by yourself or use our [`pyppbox-opencv`](https://github.com/rathaumons/opencv-for-pyppbox) instead of the official `opencv-contrib-python` which does not include GPU support.
10
9
 
11
10
  * Prerequisite:
12
- - (Optional) For NVIDIA GPU: [CUDA Toolkit 11.x/12.x](https://developer.nvidia.com/cuda-downloads) with default installation path
13
- - (Optional) For NVIDIA GPU: [cuDNN 8.x.x](https://developer.nvidia.com/rdp/cudnn-download) with default installation path
14
11
  - Python [[3.9-3.12]](https://www.python.org/downloads/)
15
12
  - Local pyppbox repo: `git clone https://github.com/rathaumons/pyppbox.git`
16
13
 
17
14
  * Before you install dependencies/requirements:
18
15
  - For Linux, recommend changing `python3` to `python`: `sudo apt install python-is-python3`
19
16
  - If you prefer conda + Python [3.9-3.12]: `conda create --name pyppbox_env python=3.11`
20
- - If you don't know whether to install only Tensorflow or PyTorch or both -> Check [Supported Modules](https://rathaumons.github.io/pyppbox/pyppbox/modules.html)
21
- - For Tensorflow with GPU support -> [See here](https://www.tensorflow.org/install/pip)
17
+ - Upgrade `pip` and `setuptools`:
18
+ ```
19
+ python -m pip install --upgrade pip
20
+ pip install "setuptools>=67.2.0"
21
+ ```
22
+ - Recommend removing the official `ultralytics`:
23
+ ```
24
+ pip uninstall -y ultralytics
25
+ ```
22
26
 
23
27
  * Install dependencies/requirments under `pyppbox/requirements/`:
24
28
  - On Windows, recommend using the `cmd` installer:
@@ -27,17 +31,11 @@ All requirements are not strictly limited. However, some specific modules might
27
31
  - On Linux:
28
32
  - For GPU:
29
33
  ```
30
- python -m pip install --upgrade pip
31
- pip uninstall -y ultralytics # Remove the official ultralytics
32
- pip install "setuptools>=67.2.0"
33
34
  pip install torch torchvision torchaudio
34
35
  pip install -r requirements.txt
35
36
  ```
36
37
  - For CPU-only:
37
38
  ```
38
- python -m pip install --upgrade pip
39
- pip uninstall -y ultralytics # Remove the official ultralytics
40
- pip install "setuptools>=67.2.0"
41
39
  pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
42
40
  pip install -r requirements.txt
43
41
  ```
@@ -45,9 +43,6 @@ All requirements are not strictly limited. However, some specific modules might
45
43
  - For GPU: Not available
46
44
  - For CPU:
47
45
  ```
48
- python -m pip install --upgrade pip
49
- pip uninstall -y ultralytics # Remove the official ultralytics
50
- pip install "setuptools>=67.2.0"
51
46
  pip install torch torchvision torchaudio
52
47
  pip install -r requirements.txt
53
48
  ```
@@ -59,9 +54,8 @@ All requirements are not strictly limited. However, some specific modules might
59
54
  - If there is no error, then you are all good and ready to go.
60
55
  - For OpenCV, the official `opencv-contrib-python` (No GPU support) is set in the `requirements.txt` file. If you need GPU support, check our [`pyppbox-opencv`](https://github.com/rathaumons/opencv-for-pyppbox) or build one from source by yourself.
61
56
 
62
- * ⚠️ ***Notes:***
63
- - For CPU-Only, YOLO Ultralytics uses GPU by default, you must set `cpu` as string for the parameter `device` in its configuration.
64
- - For GPU on Windows, [Tensorflow 2.11+ no long provides native GPU support](https://www.tensorflow.org/install/pip#windows-native).
57
+ * ***ATTENTION*** ⚠️⚠️⚠️
58
+ - If you use YOLO Ultralytics without GPU, you need to set `cpu` as string for the parameter `device` in its configuration.
65
59
 
66
60
 
67
61
  ## 💽 Setup
@@ -79,11 +73,8 @@ You need to install the main package which is `pyppbox` and the data for the mod
79
73
  ```
80
74
  - Or build from source:
81
75
  ```
82
- pip install "setuptools>=67.2.0"
83
76
  pip install wheel build PyYAML
84
77
  python -m build --wheel --skip-dependency-check --no-isolation
85
- cd dist
86
- pip install pyppbox-xxx.whl
87
78
  ```
88
79
 
89
80
  * Install [`pyppbox-data-xxx`](https://github.com/rathaumons/pyppbox-data/)
@@ -104,15 +95,15 @@ You need to install the main package which is `pyppbox` and the data for the mod
104
95
  pip install https://github.com/rathaumons/PoseTReID_DATASET/releases/download/v2.0/pyppbox_data_gta5-2.0-py3-none-any.whl
105
96
  ```
106
97
 
107
- * (Optional) Quick Test
108
- - On your terminal or CMD:
98
+ * Quick Test
99
+ - In your Python terminal:
109
100
  ```
110
- python
111
101
  import pyppbox
112
102
  pyppbox.launchGUI()
113
103
  ```
114
- - Now you should see the GUI of pyppbox for easy demo.
115
- <details><summary><ins>Show GUI example!</ins></summary><img src="https://raw.githubusercontent.com/rathaROG/screenshot/master/pyppbox/pyppbox_gui.jpg"></details>
104
+ Now you should see the GUI demo like this screenshot:
105
+ <img src="https://raw.githubusercontent.com/rathaROG/screenshot/master/pyppbox/pyppbox_gui.jpg">
106
+ - For related GUI functions and other configurations, check the [Configurations page](https://rathaumons.github.io/pyppbox/pyppbox/config.html).
116
107
  - For ***Linux***, if the GUI does not work, you might need to install these:
117
108
  ```
118
109
  sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyppbox
3
- Version: 3.5b2
3
+ Version: 3.6b2
4
4
  Summary: Toolbox for people detecting, tracking, and re-identifying.
5
5
  Home-page: https://github.com/rathaumons/pyppbox
6
6
  Author: Ratha SIV
@@ -55,8 +55,6 @@ Requires-Dist: torchvision
55
55
  Requires-Dist: torchaudio
56
56
  Requires-Dist: filterpy
57
57
  Requires-Dist: lapx
58
- Requires-Dist: pyunpack
59
- Requires-Dist: patool
60
58
  Requires-Dist: PyQt6
61
59
  Requires-Dist: pyppbox-torchreid
62
60
  Requires-Dist: pyppbox-ultralytics>=8.0.218
@@ -79,8 +77,8 @@ Requires-Dist: pyppbox-ultralytics>=8.0.218
79
77
 
80
78
  * ` pyppbox = Python + People + Toolbox `
81
79
  * Design for both short and long term people detecting, tracking, and re-identifying.
82
- * Integrate GUI for easy configurations and demo.
83
- * Support dictionary and YAML/JSON configurations.
80
+ * Integrate GUI for easy configuration and demo.
81
+ * Support dictionary and YAML/JSON configuration.
84
82
  * Support [[GTA_V_Dataset]](https://github.com/rathaumons/PoseTReID_DATASET) -> Real-time online and offline evaluation.
85
83
  * Check our papers: 1 [[IEEE]](https://ieeexplore.ieee.org/document/9271712) | 2 [[IEEE]](https://ieeexplore.ieee.org/document/9946587) [[arxiv]](https://doi.org/10.48550/arxiv.2205.10086)
86
84
 
@@ -16,8 +16,8 @@
16
16
 
17
17
  * ` pyppbox = Python + People + Toolbox `
18
18
  * Design for both short and long term people detecting, tracking, and re-identifying.
19
- * Integrate GUI for easy configurations and demo.
20
- * Support dictionary and YAML/JSON configurations.
19
+ * Integrate GUI for easy configuration and demo.
20
+ * Support dictionary and YAML/JSON configuration.
21
21
  * Support [[GTA_V_Dataset]](https://github.com/rathaumons/PoseTReID_DATASET) -> Real-time online and offline evaluation.
22
22
  * Check our papers: 1 [[IEEE]](https://ieeexplore.ieee.org/document/9271712) | 2 [[IEEE]](https://ieeexplore.ieee.org/document/9946587) [[arxiv]](https://doi.org/10.48550/arxiv.2205.10086)
23
23
 
@@ -1,7 +1,35 @@
1
1
  # Release Notes
2
2
 
3
+ ## **pyppbox V4 - Even Smaller**
4
+
5
+ * `pyppbox` v4.0b1 (COMING SOON 🚀)
6
+
7
+ - `pyppbox` will leverage [`vsensebox`](https://github.com/rathaumons/vsensebox) for detection and tracking
8
+ - `pyppbox.utils.persontools` will change to adapt [`vsensebox`](https://github.com/rathaumons/vsensebox)
9
+ - `pyppbox.ppb` will replace `pyppbox.standalone`
10
+ - All configuration files will also change
11
+ - More changes will be added here! Stay tuned!
12
+
3
13
  ## **pyppbox V3 - Make Simpler and Faster**
4
14
 
15
+ * `pyppbox` [v3.6b2](https://github.com/rathaumons/pyppbox/tree/v3.6b2)
16
+
17
+ - Add a warning for the changes in the coming major version 4
18
+ - Update documentations
19
+ - **Known issue/limitation**:
20
+ - You tell me :)
21
+
22
+ * `pyppbox` [v3.6b1](https://github.com/rathaumons/pyppbox/tree/v3.6b1)
23
+
24
+ - Replace `pyunpack` & `patool` with `shutil`
25
+ - Improve Example 9 - example_09_eva_offline.py
26
+ - Add `pyppbox.gui.guitools` to the documentations
27
+ - Fix `useInternalConfigDir()` in `pyppbox.gui.guitools`
28
+ - Fix sphinx-build warning for utils.rst
29
+ - Fix and improve documentations
30
+ - **Known issue/limitation**:
31
+ - You tell me :)
32
+
5
33
  * `pyppbox` [v3.5b2](https://github.com/rathaumons/pyppbox/tree/v3.5b2)
6
34
 
7
35
  - Increase default random ID range in evatools
@@ -47,7 +47,7 @@ from pyppbox.gui.guitools import (
47
47
  )
48
48
 
49
49
 
50
- __version__ = '3.5b2'
50
+ __version__ = '3.6b2'
51
51
  __author__ = 'Ratha SIV'
52
52
  __description__ = 'Toolbox for people detecting, tracking, and re-identifying.'
53
53
  __homepage__ = 'https://rathaumons.github.io/pyppbox'
Binary file
@@ -23,7 +23,7 @@ import os
23
23
  import sys
24
24
  import subprocess as sp
25
25
 
26
- from pyppbox.utils.logtools import add_warning_log, add_error_log
26
+ from pyppbox.utils.logtools import add_info_log, add_warning_log, add_error_log
27
27
  from pyppbox.config.configtools import PYPPBOXStructure, loadDocument, loadListDocument
28
28
  from pyppbox.utils.commontools import getAbsPathFDS, joinFPathFull, isExist
29
29
  from pyppbox.gui.guihub import writeUITMP
@@ -52,8 +52,9 @@ def useThisConfigDir(cfg_dir):
52
52
  def useInternalConfigDir():
53
53
  """Use the internal config directory, :code:`{pyppbox root}/confog/cfg` inside pyppbox package.
54
54
  """
55
- global pyppbox_struct
55
+ global pyppbox_struct, __cfgdir__
56
56
  pyppbox_struct = PYPPBOXStructure()
57
+ __cfgdir__ = pyppbox_struct.cfg_dir
57
58
  add_warning_log("FYI: This basic method only serves GUI submodule `pyppbox.gui`.")
58
59
 
59
60
  def showMainConfig():
@@ -85,9 +86,10 @@ def resetInternalConfig():
85
86
  """
86
87
  global pyppbox_struct
87
88
  pyppbox_struct = PYPPBOXStructure()
88
- from pyunpack import Archive
89
- Archive(os.path.join(pyppbox_struct.cfg_dir, 'cfg.7z')).extractall(pyppbox_struct.cfg_dir)
90
- print("Reset successfully!")
89
+ cfg_zip = os.path.join(pyppbox_struct.cfg_dir, 'cfg.zip')
90
+ import shutil
91
+ shutil.unpack_archive(cfg_zip, pyppbox_struct.cfg_dir)
92
+ add_info_log("Reset successfully!")
91
93
  add_warning_log("FYI: This basic method only serves GUI submodule `pyppbox.gui`.")
92
94
 
93
95
  def launchGUI():
@@ -112,15 +114,12 @@ def generateConfig(cfg_dir, auto_launch_gui=True):
112
114
  An indication of whether to load and launch GUI from the :obj:`config_dir`.
113
115
  """
114
116
  if isExist(cfg_dir):
115
- abspath = getAbsPathFDS(cfg_dir)
116
117
  global pyppbox_struct
118
+ abspath = getAbsPathFDS(cfg_dir)
119
+ cfg_zip = os.path.join(pyppbox_struct.cfg_dir, 'cfg.zip')
117
120
  try:
118
- from pyunpack import Archive
119
- Archive(os.path.join(pyppbox_struct.cfg_dir, 'cfg.7z')).extractall(abspath)
120
- try:
121
- os.remove(joinFPathFull(abspath, 'strings.yaml'))
122
- except Exception:
123
- pass
121
+ import shutil
122
+ shutil.unpack_archive(cfg_zip, abspath)
124
123
  if auto_launch_gui:
125
124
  useThisConfigDir(abspath)
126
125
  launchGUI()
@@ -56,25 +56,25 @@ class MyYOLOCLS(object):
56
56
  self.model = cv2.dnn_DetectionModel(net)
57
57
  self.model.setInputParams(size=cfg.model_resolution, scale=1/255.0)
58
58
 
59
- def detect(self, img, visual=True, class_filter=0, min_width_filter=35):
59
+ def detect(self, img, visual=True, class_filter=[0], min_width_filter=35):
60
60
  """Detect general object with object's class filter :obj:`class_filter` in a
61
- given cv :obj:`Mat` image.
61
+ given :obj:`Mat` like image.
62
62
 
63
63
  Parameters
64
64
  ----------
65
65
  img : Mat
66
- A cv :obj:`Mat` image.
66
+ A :obj:`Mat` like image.
67
67
  visual : bool, default=True
68
68
  An indication of whether to visualize the detected objects.
69
- class_filter : int, defualt=0
70
- Object's class filter, 0 means person only
69
+ class_filter : list[int, ...], defualt=0
70
+ Object's class filter, [0] = Person only.
71
71
  min_width_filter : int, default=35
72
72
  Mininum width filter of a detected object.
73
73
 
74
74
  Returns
75
75
  -------
76
76
  Mat
77
- A cv :obj:`Mat` image.
77
+ A :obj:`Mat` like image.
78
78
  list[ndarray[int, int, int, int], ...]
79
79
  A list of bounding box :code:`ndarray[x, y, width, height]`.
80
80
  list[ndarray[int, int, int, int], ...]
@@ -93,7 +93,7 @@ class MyYOLOCLS(object):
93
93
  nmsThreshold=float(self.cfg.nms))
94
94
  if len(classes) > 0:
95
95
  for class_id, conf, box_xywh in zip(classes.flatten(), confidences, boxes):
96
- if class_id == class_filter and box_xywh[2] >= min_width_filter:
96
+ if class_id in class_filter and box_xywh[2] >= min_width_filter:
97
97
  box_xywh = box_xywh.astype(int)
98
98
  pboxes_xywh.append(box_xywh)
99
99
  box_xyxy = to_xyxy(box_xywh)
@@ -109,12 +109,12 @@ class MyYOLOCLS(object):
109
109
  return img, pboxes_xywh, pboxes_xyxy, repspoints, confs
110
110
 
111
111
  def detectPeople(self, img, visual=True, min_width_filter=35, alt_repspoint=False, alt_repspoint_top=True):
112
- """Detect person(s) in a given cv :obj:`Mat` image.
112
+ """Detect person(s) in a given :obj:`Mat` like image.
113
113
 
114
114
  Parameters
115
115
  ----------
116
116
  img : Mat
117
- A cv :obj:`Mat` image.
117
+ A :obj:`Mat` like image.
118
118
  visual : bool, default=True
119
119
  An indication of whether to visualize the detected people.
120
120
  min_width_filter : int, default=35
@@ -129,7 +129,7 @@ class MyYOLOCLS(object):
129
129
  list[Person, ...]
130
130
  A list of detected :class:`Person` object.
131
131
  Mat
132
- A cv :obj:`Mat` image.
132
+ A :obj:`Mat` like image.
133
133
  """
134
134
  people = []
135
135
  classes, confidences, boxes = self.model.detect(
@@ -117,12 +117,12 @@ class MyYOLOULT(object):
117
117
 
118
118
  def detect(self, img, visual=True, classes=0, min_width_filter=35):
119
119
  """Detect general object with object's class filter :obj:`class_filter`
120
- in a given cv :obj:`Mat` image.
120
+ in a given :obj:`Mat` like image.
121
121
 
122
122
  Parameters
123
123
  ----------
124
124
  img : Mat
125
- A cv :obj:`Mat` image.
125
+ A :obj:`Mat` like image.
126
126
  visual : bool, default=True
127
127
  An indication of whether to visualize the detected objects.
128
128
  classes : int, defualt=0
@@ -133,7 +133,7 @@ class MyYOLOULT(object):
133
133
  Returns
134
134
  -------
135
135
  Mat
136
- A cv :obj:`Mat` image.
136
+ A :obj:`Mat` like image.
137
137
  list[ndarray[int, int, int, int], ...]
138
138
  A list of bounding box :code:`ndarray[x, y, width, height]`.
139
139
  list[ndarray[int, int, int, int], ...]
@@ -205,12 +205,12 @@ class MyYOLOULT(object):
205
205
  return img, pboxes_xywh, pboxes_xyxy, repspoints, keypoints, confs
206
206
 
207
207
  def detectPeople(self, img, visual=True, min_width_filter=35, alt_repspoint=False, alt_repspoint_top=True):
208
- """Detect person(s) in a given cv :obj:`Mat` image.
208
+ """Detect person(s) in a given :obj:`Mat` like image.
209
209
 
210
210
  Parameters
211
211
  ----------
212
212
  img : Mat
213
- A cv :obj:`Mat` image.
213
+ A :obj:`Mat` like image.
214
214
  visual : bool, default=True
215
215
  An indication of whether to visualize the detected people.
216
216
  min_width_filter : int, default=35
@@ -225,7 +225,7 @@ class MyYOLOULT(object):
225
225
  list[Person, ...]
226
226
  A list of detected :class:`Person` object.
227
227
  Mat
228
- A cv :obj:`Mat` image.
228
+ A :obj:`Mat` like image.
229
229
  """
230
230
  numpy_dets = []
231
231
  people = []
@@ -120,7 +120,7 @@ class MyFaceNet(object):
120
120
  Parameters
121
121
  ----------
122
122
  img : Mat
123
- A cv :obj:`Mat` image.
123
+ A :obj:`Mat` like image.
124
124
  is_bgr : bool, default=True
125
125
  An indication of whether the color channel of given :obj:`img` is BGR.
126
126
 
@@ -85,7 +85,7 @@ class MyTorchreid(object):
85
85
  Parameters
86
86
  ----------
87
87
  img : Mat
88
- A cv :obj:`Mat` image.
88
+ A :obj:`Mat` like image.
89
89
  is_bgr : bool, default=True
90
90
  An indication of whether the color channel of given :obj:`img` is BGR.
91
91
 
@@ -94,7 +94,7 @@ class MyDeepSORT(object):
94
94
  person_list : list[Person, ...]
95
95
  A list of :class:`Person` object which stores the detected people in the given :obj:`img`.
96
96
  img : any, default=None
97
- A cv :obj:`Mat` image.
97
+ A :obj:`Mat` like image.
98
98
  max_spread : int, default=5
99
99
  Max spread or max margin used to decide whether 2 bounding boxes are the same by comparing
100
100
  the differences between the elements in the bounding box given by the embedded SORT and the
@@ -23,7 +23,7 @@
23
23
  Standalone is designed for easy detect, track, and reid people in a single thread
24
24
  enviroment or in command line.
25
25
 
26
- For multithreading application, see :py:class:`pyppbox.standalone.mt.MT`.
26
+ For multithreading application, see :py:class:`pyppbox.ppb.mt.MT`.
27
27
 
28
28
  Example:
29
29
 
@@ -69,27 +69,27 @@ Example:
69
69
 
70
70
  from .mt import MT
71
71
 
72
- __stdmt__ = MT()
72
+ _mt = MT()
73
73
 
74
74
  def setConfigDir(config_dir=None, load_all=False):
75
- """See :func:`pyppbox.standalone.mt.MT.setConfigDir`"""
76
- __stdmt__.setConfigDir(config_dir=config_dir, load_all=load_all)
75
+ """See :func:`pyppbox.ppb.mt.MT.setConfigDir`"""
76
+ _mt.setConfigDir(config_dir=config_dir, load_all=load_all)
77
77
 
78
78
  def setMainModules(main_yaml=None, load_all=True):
79
- """See :func:`pyppbox.standalone.mt.MT.setMainModules`"""
80
- __stdmt__.setMainModules(main_yaml=main_yaml, load_all=load_all)
79
+ """See :func:`pyppbox.ppb.mt.MT.setMainModules`"""
80
+ _mt.setMainModules(main_yaml=main_yaml, load_all=load_all)
81
81
 
82
82
  def getConfig():
83
- """See :func:`pyppbox.standalone.mt.MT.getConfig`"""
84
- return __stdmt__.getConfig()
83
+ """See :func:`pyppbox.ppb.mt.MT.getConfig`"""
84
+ return _mt.getConfig()
85
85
 
86
86
  def forceFullGTMode():
87
- """See :func:`pyppbox.standalone.mt.MT.forceFullGTMode`"""
88
- __stdmt__.forceFullGTMode()
87
+ """See :func:`pyppbox.ppb.mt.MT.forceFullGTMode`"""
88
+ _mt.forceFullGTMode()
89
89
 
90
90
  def setMainDetector(detector=""):
91
- """See :func:`pyppbox.standalone.mt.MT.setMainDetector`"""
92
- __stdmt__.setMainDetector(detector=detector)
91
+ """See :func:`pyppbox.ppb.mt.MT.setMainDetector`"""
92
+ _mt.setMainDetector(detector=detector)
93
93
 
94
94
  def detectPeople(img,
95
95
  img_is_mat=False,
@@ -99,8 +99,8 @@ def detectPeople(img,
99
99
  min_width_filter=35,
100
100
  alt_repspoint=False,
101
101
  alt_repspoint_top=True):
102
- """See :func:`pyppbox.standalone.mt.MT.detectPeople`"""
103
- return __stdmt__.detectPeople(img,
102
+ """See :func:`pyppbox.ppb.mt.MT.detectPeople`"""
103
+ return _mt.detectPeople(img,
104
104
  img_is_mat=img_is_mat,
105
105
  visual=visual,
106
106
  save=save,
@@ -110,24 +110,24 @@ def detectPeople(img,
110
110
  alt_repspoint_top=alt_repspoint_top)
111
111
 
112
112
  def setMainTracker(tracker=""):
113
- """See :func:`pyppbox.standalone.mt.MT.setMainTracker`"""
114
- __stdmt__.setMainTracker(tracker=tracker)
113
+ """See :func:`pyppbox.ppb.mt.MT.setMainTracker`"""
114
+ _mt.setMainTracker(tracker=tracker)
115
115
 
116
116
  def trackPeople(img, people, img_is_mat=False):
117
- """See :func:`pyppbox.standalone.mt.MT.trackPeople`"""
118
- return __stdmt__.trackPeople(img, people, img_is_mat=img_is_mat)
117
+ """See :func:`pyppbox.ppb.mt.MT.trackPeople`"""
118
+ return _mt.trackPeople(img, people, img_is_mat=img_is_mat)
119
119
 
120
120
  def setMainReIDer(reider="", auto_load=True):
121
- """See :func:`pyppbox.standalone.mt.MT.setMainReIDer`"""
122
- __stdmt__.setMainReIDer(reider=reider, auto_load=auto_load)
121
+ """See :func:`pyppbox.ppb.mt.MT.setMainReIDer`"""
122
+ _mt.setMainReIDer(reider=reider, auto_load=auto_load)
123
123
 
124
124
  def reidPeople(img, people, deduplicate=True, img_is_mat=False):
125
- """See :func:`pyppbox.standalone.mt.MT.reidPeople`"""
126
- return __stdmt__.reidPeople(img, people, deduplicate=deduplicate, img_is_mat=img_is_mat)
125
+ """See :func:`pyppbox.ppb.mt.MT.reidPeople`"""
126
+ return _mt.reidPeople(img, people, deduplicate=deduplicate, img_is_mat=img_is_mat)
127
127
 
128
128
  def trainReIDClassifier(reider="Default", train_data="", classifier_pkl=""):
129
- """See :func:`pyppbox.standalone.mt.MT.trainReIDClassifier`"""
130
- __stdmt__.trainReIDClassifier(reider=reider, train_data=train_data, classifier_pkl=classifier_pkl)
129
+ """See :func:`pyppbox.ppb.mt.MT.trainReIDClassifier`"""
130
+ _mt.trainReIDClassifier(reider=reider, train_data=train_data, classifier_pkl=classifier_pkl)
131
131
 
132
132
  __all__ = ['setConfigDir', 'setMainModules', 'getConfig', 'forceFullGTMode',
133
133
  'setMainDetector', 'detectPeople', 'setMainTracker', 'trackPeople',
@@ -424,9 +424,9 @@ class MT(object):
424
424
  Parameters
425
425
  ----------
426
426
  img : str or Mat
427
- Set an image file or a cv :obj:`Mat`.
427
+ Set an image file or a :obj:`Mat` like image.
428
428
  img_is_mat : bool, default=False
429
- Speed up the function by telling whether the :obj:`img` is cv :obj:`Mat`.
429
+ Speed up the function by telling whether the :obj:`img` is :obj:`Mat` like image.
430
430
  visual : bool, default=False
431
431
  Decide whether to visualize like drawing bounding boxes and keypoints to the
432
432
  return :obj:`img`.
@@ -446,7 +446,7 @@ class MT(object):
446
446
  list[Person, ...]
447
447
  A list of :class:`Person` object.
448
448
  Mat
449
- A cv :obj:`Mat` image.
449
+ A :obj:`Mat` like image.
450
450
  """
451
451
  people = []
452
452
  if self.__dt_is_set__:
@@ -619,11 +619,11 @@ class MT(object):
619
619
  Parameters
620
620
  ----------
621
621
  img : str or Mat
622
- Set an image file or a cv :obj:`Mat`.
622
+ Set an image file or a :obj:`Mat` like image.
623
623
  people : list[Person, ...]
624
624
  Set a list of :class:`Person` object which stores the detected people in the input :obj:`img`.
625
625
  img_is_mat : bool, default=False
626
- Speed up the function by telling whether the :obj:`img` is cv :obj:`Mat`.
626
+ Speed up the function by telling whether the :obj:`img` is :obj:`Mat` like image.
627
627
 
628
628
  Returns
629
629
  -------
@@ -791,14 +791,14 @@ class MT(object):
791
791
  Parameters
792
792
  ----------
793
793
  img : str or Mat
794
- Set an image file or a cv :obj:`Mat`.
794
+ Set an image file or a :obj:`Mat` like image.
795
795
  people : list[Person, ...]
796
796
  Set a list of :class:`Person` object which stores the detected or tracked people in
797
797
  the input :obj:`img`.
798
798
  deduplicate : bool, default=True
799
799
  Indicate whether to re-reid people who have the same face ids or deep ids.
800
800
  img_is_mat : bool, default=False
801
- Speed up the function by telling whether the :obj:`img` is cv :obj:`Mat`.
801
+ Speed up the function by telling whether the :obj:`img` is :obj:`Mat` like image.
802
802
 
803
803
  Returns
804
804
  -------
@@ -0,0 +1,37 @@
1
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
2
+ # #
3
+ # pyppbox: Toolbox for people detecting, tracking, and re-identifying. #
4
+ # Copyright (C) 2022 UMONS-Numediart #
5
+ # #
6
+ # This program is free software: you can redistribute it and/or modify #
7
+ # it under the terms of the GNU General Public License as published by #
8
+ # the Free Software Foundation, either version 3 of the License, or #
9
+ # (at your option) any later version. #
10
+ # #
11
+ # This program is distributed in the hope that it will be useful, #
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of #
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14
+ # GNU General Public License for more details. #
15
+ # #
16
+ # You should have received a copy of the GNU General Public License #
17
+ # along with this program. If not, see <https://www.gnu.org/licenses/>. #
18
+ # #
19
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
20
+
21
+
22
+ from pyppbox.ppb import *
23
+ from pyppbox.utils.logtools import add_warning_log
24
+
25
+ msg = ("\n! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !\n"
26
+ "! !\n"
27
+ "! For the coming major version 4: !\n"
28
+ "! * 'pyppbox' will leverage 'vsensebox' for detection and tracking !\n"
29
+ "! * 'pyppbox.utils.persontools' will change to adapt 'vesensebox' !\n"
30
+ "! * 'pyppbox.ppb' will replace 'pyppbox.standalone' !\n"
31
+ "! * All configuration files will also change !\n"
32
+ "! * More changes will be added to release notes !\n"
33
+ "! !\n"
34
+ "! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !\n")
35
+
36
+ add_warning_log(msg)
37
+
@@ -273,7 +273,7 @@ class GTInterpreter(object):
273
273
  Parameters
274
274
  ----------
275
275
  img : Mat
276
- A cv :obj:`Mat` image.
276
+ A :obj:`Mat` like image.
277
277
  visual :
278
278
  An indication of whether to draw bounding boxes on the return :obj:`img`.
279
279
 
@@ -282,7 +282,7 @@ class GTInterpreter(object):
282
282
  list[Person, ...]
283
283
  A list of :class:`Person` object.
284
284
  Mat
285
- A cv :obj:`Mat` image.
285
+ A :obj:`Mat` like image.
286
286
  """
287
287
  people = []
288
288
  tmp_id = 0
@@ -107,7 +107,7 @@ def visualizePeople(img, people, show_box=True, show_skl=(True,True,5), show_ids
107
107
  Parameters
108
108
  ----------
109
109
  img : str or Mat
110
- An image file or a cv :obj:`Mat`.
110
+ An image file or a :obj:`Mat` like image.
111
111
  people : list[Person, ...]
112
112
  Set a list of :class:`Person` object found in the input :obj:`img`.
113
113
  show_box : bool, default=True
@@ -128,12 +128,12 @@ def visualizePeople(img, people, show_box=True, show_skl=(True,True,5), show_ids
128
128
  show_repspoint : bool, default=True
129
129
  Indicate whether to show the :obj:`repspoint` of :class:`Person` object.
130
130
  img_is_mat : bool, default=True
131
- Speed up the function by telling whether the :obj:`img` is cv :obj:`Mat`.
131
+ Speed up the function by telling whether the :obj:`img` is :obj:`Mat` like image.
132
132
 
133
133
  Returns
134
134
  -------
135
135
  Mat
136
- A visualized cv :obj:`Mat`.
136
+ A visualized :obj:`Mat` like image.
137
137
  """
138
138
  # Overwrite `img_is_mat` to False when `img` is a file.
139
139
  if img_is_mat and isinstance(img, str): img_is_mat = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyppbox
3
- Version: 3.5b2
3
+ Version: 3.6b2
4
4
  Summary: Toolbox for people detecting, tracking, and re-identifying.
5
5
  Home-page: https://github.com/rathaumons/pyppbox
6
6
  Author: Ratha SIV
@@ -55,8 +55,6 @@ Requires-Dist: torchvision
55
55
  Requires-Dist: torchaudio
56
56
  Requires-Dist: filterpy
57
57
  Requires-Dist: lapx
58
- Requires-Dist: pyunpack
59
- Requires-Dist: patool
60
58
  Requires-Dist: PyQt6
61
59
  Requires-Dist: pyppbox-torchreid
62
60
  Requires-Dist: pyppbox-ultralytics>=8.0.218
@@ -79,8 +77,8 @@ Requires-Dist: pyppbox-ultralytics>=8.0.218
79
77
 
80
78
  * ` pyppbox = Python + People + Toolbox `
81
79
  * Design for both short and long term people detecting, tracking, and re-identifying.
82
- * Integrate GUI for easy configurations and demo.
83
- * Support dictionary and YAML/JSON configurations.
80
+ * Integrate GUI for easy configuration and demo.
81
+ * Support dictionary and YAML/JSON configuration.
84
82
  * Support [[GTA_V_Dataset]](https://github.com/rathaumons/PoseTReID_DATASET) -> Real-time online and offline evaluation.
85
83
  * Check our papers: 1 [[IEEE]](https://ieeexplore.ieee.org/document/9271712) | 2 [[IEEE]](https://ieeexplore.ieee.org/document/9946587) [[arxiv]](https://doi.org/10.48550/arxiv.2205.10086)
86
84
 
@@ -16,12 +16,13 @@ pyppbox/config/__init__.py
16
16
  pyppbox/config/configtools.py
17
17
  pyppbox/config/myconfig.py
18
18
  pyppbox/config/unifiedstrings.py
19
- pyppbox/config/cfg/cfg.7z
19
+ pyppbox/config/cfg/cfg.zip
20
20
  pyppbox/config/cfg/detectors.yaml
21
21
  pyppbox/config/cfg/main.yaml
22
22
  pyppbox/config/cfg/reiders.yaml
23
23
  pyppbox/config/cfg/trackers.yaml
24
24
  pyppbox/config/strings/strings.yaml
25
+ pyppbox/config/strings/strings.zip
25
26
  pyppbox/data/datasets/.gitignore
26
27
  pyppbox/data/logs/.gitignore
27
28
  pyppbox/data/modules/.gitignore
@@ -74,8 +75,9 @@ pyppbox/modules/trackers/deepsort/origin/tracker.py
74
75
  pyppbox/modules/trackers/deepsort/origin/voc_classes.txt
75
76
  pyppbox/modules/trackers/sort/__init__.py
76
77
  pyppbox/modules/trackers/sort/origin/sort.py
78
+ pyppbox/ppb/__init__.py
79
+ pyppbox/ppb/mt.py
77
80
  pyppbox/standalone/__init__.py
78
- pyppbox/standalone/mt.py
79
81
  pyppbox/utils/__init__.py
80
82
  pyppbox/utils/commontools.py
81
83
  pyppbox/utils/evatools.py
@@ -22,8 +22,6 @@ torchvision
22
22
  torchaudio
23
23
  filterpy
24
24
  lapx
25
- pyunpack
26
- patool
27
25
  PyQt6
28
26
  pyppbox-torchreid
29
27
  pyppbox-ultralytics>=8.0.218
@@ -34,9 +34,6 @@ torchaudio
34
34
  ### Tracker: SORT
35
35
  filterpy
36
36
  lapx
37
- ### Compression
38
- pyunpack
39
- patool
40
37
  ### GUI
41
38
  PyQt6
42
39
  ### Customized pyppbox-torchreid
Binary file
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