pyppbox 3.6b6__tar.gz → 3.6b8__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 (94) hide show
  1. {pyppbox-3.6b6 → pyppbox-3.6b8}/GETSTARTED.md +23 -24
  2. {pyppbox-3.6b6/pyppbox.egg-info → pyppbox-3.6b8}/PKG-INFO +2 -3
  3. {pyppbox-3.6b6 → pyppbox-3.6b8}/README.md +1 -1
  4. {pyppbox-3.6b6 → pyppbox-3.6b8}/RELEASENOTES.md +18 -2
  5. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/__init__.py +1 -1
  6. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/myconfig.py +13 -11
  7. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/detectors/yolocls/__init__.py +1 -1
  8. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/detectors/yoloult/__init__.py +1 -1
  9. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/facenet/origin/align_dataset_mtcnn.py +4 -3
  10. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/centroid/__init__.py +5 -3
  11. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/__init__.py +5 -3
  12. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/sort/__init__.py +5 -3
  13. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/ppb/mt.py +14 -11
  14. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/evatools.py +1 -1
  15. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/gttools.py +3 -3
  16. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/persontools.py +10 -10
  17. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/restools.py +7 -7
  18. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/visualizetools.py +2 -2
  19. {pyppbox-3.6b6 → pyppbox-3.6b8/pyppbox.egg-info}/PKG-INFO +2 -3
  20. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox.egg-info/requires.txt +0 -1
  21. {pyppbox-3.6b6 → pyppbox-3.6b8}/requirements/requirements.txt +0 -1
  22. {pyppbox-3.6b6 → pyppbox-3.6b8}/LICENSE +0 -0
  23. {pyppbox-3.6b6 → pyppbox-3.6b8}/MANIFEST.in +0 -0
  24. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/__init__.py +0 -0
  25. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/cfg/cfg.zip +0 -0
  26. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/cfg/detectors.yaml +0 -0
  27. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/cfg/main.yaml +0 -0
  28. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/cfg/reiders.yaml +0 -0
  29. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/cfg/trackers.yaml +0 -0
  30. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/configtools.py +0 -0
  31. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/strings/strings.yaml +0 -0
  32. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/strings/strings.zip +0 -0
  33. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/config/unifiedstrings.py +0 -0
  34. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/data/datasets/.gitignore +0 -0
  35. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/data/logs/.gitignore +0 -0
  36. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/data/modules/.gitignore +0 -0
  37. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/data/res/.gitignore +0 -0
  38. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/data/res/idmap.txt +0 -0
  39. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/__init__.py +0 -0
  40. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/assets/TReID.png +0 -0
  41. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/assets/icon.ico +0 -0
  42. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/assets/settings.ico +0 -0
  43. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/guidemo.py +0 -0
  44. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/guihub.py +0 -0
  45. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/guitools.py +0 -0
  46. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/tmp/input.tmp +0 -0
  47. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/tmp/ui.tmp +0 -0
  48. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_centroid.py +0 -0
  49. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_deepsort.py +0 -0
  50. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_facenet.py +0 -0
  51. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_gt.py +0 -0
  52. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_launcher.py +0 -0
  53. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_sort.py +0 -0
  54. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_torchreid.py +0 -0
  55. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_yolocls.py +0 -0
  56. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/gui/ui_yoloult.py +0 -0
  57. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/__init__.py +0 -0
  58. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/detectors/__init__.py +0 -0
  59. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/__init__.py +0 -0
  60. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/facenet/__init__.py +0 -0
  61. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/facenet/origin/detect_face.py +0 -0
  62. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/facenet/origin/facenet.py +0 -0
  63. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/torchreid/__init__.py +0 -0
  64. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/torchreid/model_dict.py +0 -0
  65. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/torchreid/model_dict.yaml +0 -0
  66. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/reiders/torchreid/utils.py +0 -0
  67. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/__init__.py +0 -0
  68. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/detection.py +0 -0
  69. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/detection_yolo.py +0 -0
  70. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/generate_detections.py +0 -0
  71. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/iou_matching.py +0 -0
  72. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/kalman_filter.py +0 -0
  73. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/linear_assignment.py +0 -0
  74. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/nn_matching.py +0 -0
  75. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/preprocessing.py +0 -0
  76. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/track.py +0 -0
  77. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/tracker.py +0 -0
  78. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/deepsort/origin/voc_classes.txt +0 -0
  79. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/modules/trackers/sort/origin/sort.py +0 -0
  80. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/ppb/__init__.py +0 -0
  81. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/standalone/__init__.py +0 -0
  82. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/__init__.py +0 -0
  83. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/commontools.py +0 -0
  84. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/logtools.py +0 -0
  85. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox/utils/mot2pyppbox.py +0 -0
  86. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox.egg-info/SOURCES.txt +0 -0
  87. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox.egg-info/dependency_links.txt +0 -0
  88. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyppbox.egg-info/top_level.txt +0 -0
  89. {pyppbox-3.6b6 → pyppbox-3.6b8}/pyproject.toml +0 -0
  90. {pyppbox-3.6b6 → pyppbox-3.6b8}/requirements/README.md +0 -0
  91. {pyppbox-3.6b6 → pyppbox-3.6b8}/requirements/test_gpu.py +0 -0
  92. {pyppbox-3.6b6 → pyppbox-3.6b8}/setup.cfg +0 -0
  93. {pyppbox-3.6b6 → pyppbox-3.6b8}/setup.py +0 -0
  94. {pyppbox-3.6b6 → pyppbox-3.6b8}/setup_extra.yaml +0 -0
@@ -5,10 +5,10 @@ Installing `pyppbox` is very easy and straightforward. You can install it from [
5
5
 
6
6
  ## ⚙️ Requirements
7
7
 
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.
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 (CUDA) 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 (CUDA) support.
9
9
 
10
10
  * Prerequisite:
11
- - Python [[3.9-3.12]](https://www.python.org/downloads/)
11
+ - Python [[3.9-3.12]](https://www.python.org/downloads/) (For ***macOS*** -> Use Python 3.11 for bug-free GUI)
12
12
  - Local pyppbox repo: `git clone https://github.com/rathaumons/pyppbox.git`
13
13
 
14
14
  * Before you install dependencies/requirements:
@@ -24,45 +24,42 @@ All requirements are not strictly limited. However, some specific modules might
24
24
  pip uninstall -y ultralytics
25
25
  ```
26
26
 
27
- * Install dependencies/requirments under `pyppbox/requirements/`:
28
- - On Windows, recommend using the `cmd` installer:
29
- - For GPU: `install_req_py3_cuda121.cmd` (Or `install_req_py3_cuda.cmd` for CUDA 11.8)
30
- - For CPU-only: `install_req_py3_cpu.cmd`
31
- - On Linux:
32
- - For GPU:
27
+ * Install dependencies/requirements under `pyppbox/requirements/`:
28
+ - On ***Windows***, recommend using the `cmd` installer:
29
+ - For GPU (CUDA): `install_req_py3_cuda121.cmd` (Or `install_req_py3_cuda.cmd` for CUDA 11.8)
30
+ - For CPU-only: `install_req_py3_cpu.cmd` (Or skip this and go straight to Setup section below)
31
+ - On ***Linux***:
32
+ - For GPU (CUDA):
33
33
  ```
34
34
  python -m pip install tensorflow[and-cuda] # TensorFlow GPU
35
- pip install torch torchvision torchaudio
35
+ pip install torch torchvision
36
36
  pip install -r requirements.txt
37
37
  ```
38
- - For CPU-only:
38
+ - For CPU-only (Or skip this and go straight to Setup section below):
39
39
  ```
40
40
  python -m pip install tensorflow # TensorFlow CPU
41
- pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
41
+ pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
42
42
  pip install -r requirements.txt
43
43
  ```
44
- - On macOS:
45
- - For GPU: Not available
46
- - For CPU:
44
+ - On ***macOS***:
45
+ - For GPU (CUDA): Not available
46
+ - For CPU (Or skip this and go straight to Setup section below):
47
47
  ```
48
- pip install torch torchvision torchaudio
48
+ pip install torch torchvision
49
49
  pip install -r requirements.txt
50
50
  ```
51
51
 
52
- * (Optional) For GPU-Only -> Verify the installed dependencies:
52
+ * (Optional) For GPU-Only (CUDA) -> Verify the installed dependencies:
53
53
  - Execute the `test_gpu.py`
54
54
  - On Windows -> `test_gpu.cmd`
55
55
  - On Linux -> `python test_gpu.py`
56
56
  - If there is no error, then you are all good and ready to go.
57
57
  - 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.
58
58
 
59
- * ***ATTENTION*** ⚠️⚠️⚠️
60
- - If you use YOLO Ultralytics without GPU, you need to set `cpu` as string for the parameter `device` in its configuration.
61
-
62
59
 
63
60
  ## 💽 Setup
64
61
 
65
- You need to install the main package which is `pyppbox` and the data for the modules you need `pyppbox-data-xxx`. If you want to have some fun for the demo on our [GTA_V_DATASET](https://github.com/rathaumons/PoseTReID_DATASET), you also need to install `pyppbox-data-gta5`.
62
+ You need to install the main package which is `pyppbox` and the data for the modules you need `pyppbox-data-xxx`. If you want to have some fun with the demo on our [GTA_V_DATASET](https://github.com/rathaumons/PoseTReID_DATASET), you also need to install `pyppbox-data-gta5`.
66
63
 
67
64
  * Install `pyppbox`
68
65
  - Use the latest `.whl` from [releases](https://github.com/rathaumons/pyppbox/releases) or install from [PyPI](https://pypi.org/project/pyppbox/):
@@ -80,8 +77,7 @@ You need to install the main package which is `pyppbox` and the data for the mod
80
77
  ```
81
78
 
82
79
  * Install [`pyppbox-data-xxx`](https://github.com/rathaumons/pyppbox-data/)
83
- - Download the latest from [releases](https://github.com/rathaumons/pyppbox-data/releases)
84
- - Or install the ones you need directly:
80
+ - Download the latest from [releases](https://github.com/rathaumons/pyppbox-data/releases) or install the ones you need directly:
85
81
  ```
86
82
  pip install https://github.com/rathaumons/pyppbox-data/releases/download/v1.2.0/pyppbox_data_yolocls-1.2.0-py3-none-any.whl
87
83
  pip install https://github.com/rathaumons/pyppbox-data/releases/download/v1.2.0/pyppbox_data_yoloult-1.2.0-py3-none-any.whl
@@ -91,8 +87,7 @@ You need to install the main package which is `pyppbox` and the data for the mod
91
87
  ```
92
88
 
93
89
  * Install [`pyppbox-data-gta5`](https://github.com/rathaumons/PoseTReID_DATASET#-introducing-pyppbox-data-gta5)
94
- - Download the latest from [releases](https://github.com/rathaumons/PoseTReID_DATASET/releases)
95
- - Or install directly:
90
+ - Download the latest from [releases](https://github.com/rathaumons/PoseTReID_DATASET/releases) or install directly:
96
91
  ```
97
92
  pip install https://github.com/numediart/PoseTReID_DATASET/releases/download/v2.0/pyppbox_data_gta5-2.0-py3-none-any.whl
98
93
  ```
@@ -107,8 +102,12 @@ You need to install the main package which is `pyppbox` and the data for the mod
107
102
  <img src="https://raw.githubusercontent.com/rathaROG/screenshot/master/pyppbox/pyppbox_gui.jpg">
108
103
  - For related GUI functions and other configurations, check the [Configurations page](https://rathaumons.github.io/pyppbox/pyppbox/config.html).
109
104
  - Check the [Examples page](https://rathaumons.github.io/pyppbox/examples.html) for some real coding!
105
+ - ⚠️ ***ATTENTION*** ⚠️
106
+ * If you use ***YOLO Ultralytics*** without GPU/CUDA, you must set `cpu` as string for the parameter `device` in its configuration.
107
+ * The same for ***Torchreid*** without GPU/CUDA, you must set `cpu` as string for the parameter `device` in its configuration.
110
108
 
111
109
  * Troubleshooting
110
+ - For ***macOS***, if the GUI does not work, you may try Python 3.11 as suggested in Prerequisite section above.
112
111
  - For ***Linux***, if the GUI does not work, you might need to install these:
113
112
  ```
114
113
  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.6b6
3
+ Version: 3.6b8
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
@@ -51,7 +51,6 @@ Requires-Dist: protobuf
51
51
  Requires-Dist: tensorflow
52
52
  Requires-Dist: torch
53
53
  Requires-Dist: torchvision
54
- Requires-Dist: torchaudio
55
54
  Requires-Dist: filterpy
56
55
  Requires-Dist: lapx
57
56
  Requires-Dist: PyQt6
@@ -69,7 +68,7 @@ Requires-Dist: vsensebox-ultralytics>=8.3.5
69
68
 
70
69
  <img src="https://raw.githubusercontent.com/rathaROG/screenshot/master/pyppbox/pyppbox_new_wide.png"><br />
71
70
 
72
- **[📗 Documentation](https://rathaumons.github.io/pyppbox/) | [🚀 Getting started](https://rathaumons.github.io/pyppbox/getstarted.html) | [💡 Examples](https://rathaumons.github.io/pyppbox/examples.html) | [▶️ Demo](https://github.com/rathaumons/pyppbox-demo)**
71
+ **[📗 Documentation](https://rathaumons.github.io/pyppbox/) | [🚀 Getting started](https://rathaumons.github.io/pyppbox/getstarted.html) | [💡 Examples](https://rathaumons.github.io/pyppbox/examples.html) | [▶️ More demo](https://github.com/rathaumons/pyppbox-demo)**
73
72
 
74
73
  </div>
75
74
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  <img src="https://raw.githubusercontent.com/rathaROG/screenshot/master/pyppbox/pyppbox_new_wide.png"><br />
10
10
 
11
- **[📗 Documentation](https://rathaumons.github.io/pyppbox/) | [🚀 Getting started](https://rathaumons.github.io/pyppbox/getstarted.html) | [💡 Examples](https://rathaumons.github.io/pyppbox/examples.html) | [▶️ Demo](https://github.com/rathaumons/pyppbox-demo)**
11
+ **[📗 Documentation](https://rathaumons.github.io/pyppbox/) | [🚀 Getting started](https://rathaumons.github.io/pyppbox/getstarted.html) | [💡 Examples](https://rathaumons.github.io/pyppbox/examples.html) | [▶️ More demo](https://github.com/rathaumons/pyppbox-demo)**
12
12
 
13
13
  </div>
14
14
 
@@ -12,10 +12,26 @@
12
12
 
13
13
  ## **pyppbox V3 - Make Simpler and Faster**
14
14
 
15
- * `pyppbox` [v3.6b6](https://github.com/rathaumons/pyppbox/tree/v3.6b6)
15
+ * `pyppbox` [v3.6b8](https://github.com/rathaumons/pyppbox/tree/v3.6b8) - The Last V3
16
+
17
+ - Fix FaceNet alignment issue in data preparation for training
18
+ - Update and improve documentations
19
+ - **Known issue/limitation**:
20
+ - You tell me :)
21
+
22
+ * `pyppbox` [v3.6b7](https://github.com/rathaumons/pyppbox/tree/v3.6b7) - ~~The Last V3~~
23
+
24
+ - Improve examples
25
+ - Improve requirements
26
+ - Update and improve `GETSTARTED.md`
27
+ - Update and improve documentations
28
+ - **Known issue/limitation**:
29
+ - You tell me :)
30
+
31
+ * `pyppbox` [v3.6b6](https://github.com/rathaumons/pyppbox/tree/v3.6b6) - ~~The Last V3~~
16
32
 
17
33
  - Add proper supports for YOLOv9, YOLOv10, and YOLOv11
18
- - Update requirments and documentations
34
+ - Update requirements and documentations
19
35
  - **Known issue/limitation**:
20
36
  - You tell me :)
21
37
 
@@ -47,7 +47,7 @@ from pyppbox.gui.guitools import (
47
47
  )
48
48
 
49
49
 
50
- __version__ = '3.6b6'
50
+ __version__ = '3.6b8'
51
51
  __author__ = 'Ratha SIV'
52
52
  __description__ = 'Toolbox for people detecting, tracking, and re-identifying.'
53
53
  __homepage__ = 'https://rathaumons.github.io/pyppbox'
@@ -221,8 +221,9 @@ class DCFGYOLOCLS(BaseCGF):
221
221
  model_resolution : tuple(int, int)
222
222
  Input image resolution of YOLO Classic.
223
223
  repspoint_calibration : float
224
- Internal parameter, weight for calibatrating the repspoint of a :class:`Person` object.
225
- Check :func:`findRepspoint()` in :py:mod:`pyppbox.persontools` for more details.
224
+ Internal parameter, weight for calibatrating the repspoint of a
225
+ :class:`pyppbox.utils.persontools.Person` object. Check :func:`findRepspoint()` in
226
+ :py:mod:`pyppbox.persontools` for more details.
226
227
  from_dir : str
227
228
  Path of the root directory, relative to path of :attr:`model_weights`.
228
229
  """
@@ -328,8 +329,8 @@ class DCFGYOLOULT(BaseCGF):
328
329
  model_file : str
329
330
  Path of :attr:`model_file` for YOLO_Ultralytics.
330
331
  repspoint_calibration : float
331
- Weight for calibatrating the repspoint of a :class:`Person` object.
332
- Check :func:`findRepspoint()` in :py:mod:`pyppbox.persontools` for more details.
332
+ Weight for calibatrating the repspoint of a :class:`pyppbox.utils.persontools.Person`
333
+ object. Check :func:`findRepspoint()` in :py:mod:`pyppbox.persontools` for more details.
333
334
  from_dir : str
334
335
  Path of the root directory, relative to path of :attr:`model_file`.
335
336
  """
@@ -499,7 +500,8 @@ class TCFGCentroid(BaseCGF):
499
500
  tk_name : str
500
501
  Configured name of tracker Centroid.
501
502
  max_spread : int
502
- Maximum distance of the being tracked :class:`Person` object of previous and current state.
503
+ Maximum distance of the being tracked :class:`pyppbox.utils.persontools.Person`
504
+ object of previous and current state.
503
505
  """
504
506
 
505
507
  def set(self, input):
@@ -713,13 +715,13 @@ class RCFGFaceNet(BaseCGF):
713
715
  min_confidence : float
714
716
  Mininum confidence of the prediction.
715
717
  yl_h_calibration : list[int, int], default=[-125, 75]
716
- When YOLO is used as the detector, this list of :code:`[val_1, val_2]` and a :class:`Person`'s
717
- respoint :code:`(X, Y)` are used to find the from-to :code:`Y` for cropping the face:
718
- :code:`[Y + val_1 : Y + val_2, ...]`.
718
+ When YOLO is used as the detector, this list of :code:`[val_1, val_2]` and a
719
+ :class:`pyppbox.utils.persontools.Person`'s respoint :code:`(X, Y)` are used to find
720
+ the from-to :code:`Y` for cropping the face: :code:`[Y + val_1 : Y + val_2, ...]`.
719
721
  yl_w_calibration : list[int, int], default=[-55, 55]
720
- When YOLO is used as the detector, this list of :code:`[val_1, val_2]` and a :class:`Person`'s
721
- respoint :code:`(X, Y)` are used to find the from-to :code:`X` for cropping the face:
722
- :code:`[..., X + val_1 : X + val_2]`.
722
+ When YOLO is used as the detector, this list of :code:`[val_1, val_2]` and a
723
+ :class:`pyppbox.utils.persontools.Person`'s respoint :code:`(X, Y)` are used to find
724
+ the from-to :code:`X` for cropping the face: :code:`[..., X + val_1 : X + val_2]`.
723
725
  from_dir : str
724
726
  Path of the root directory, relative to path of :attr:`model_file`.
725
727
  """
@@ -127,7 +127,7 @@ class MyYOLOCLS(object):
127
127
  Returns
128
128
  -------
129
129
  list[Person, ...]
130
- A list of detected :class:`Person` object.
130
+ A list of detected :class:`pyppbox.utils.persontools.Person` object.
131
131
  Mat
132
132
  A :obj:`Mat` like image.
133
133
  """
@@ -223,7 +223,7 @@ class MyYOLOULT(object):
223
223
  Returns
224
224
  -------
225
225
  list[Person, ...]
226
- A list of detected :class:`Person` object.
226
+ A list of detected :class:`pyppbox.utils.persontools.Person` object.
227
227
  Mat
228
228
  A :obj:`Mat` like image.
229
229
  """
@@ -48,8 +48,8 @@ def main(args):
48
48
  if not os.path.exists(output_dir):
49
49
  os.makedirs(output_dir)
50
50
  # Store some git revision info in a text file in the log directory
51
- src_path,_ = os.path.split(os.path.realpath(__file__))
52
- facenet.store_revision_info(src_path, output_dir, ' '.join(sys.argv))
51
+ # src_path,_ = os.path.split(os.path.realpath(__file__))
52
+ # facenet.store_revision_info(src_path, output_dir, ' '.join(sys.argv))
53
53
  dataset = facenet.get_dataset(args.input_dir)
54
54
 
55
55
  print('Creating networks and loading parameters')
@@ -87,7 +87,7 @@ def main(args):
87
87
  print(image_path)
88
88
  if not os.path.exists(output_filename):
89
89
  try:
90
- img = imageio.imread(image_path)
90
+ img = imageio.v2.imread(image_path)
91
91
  except (IOError, ValueError, IndexError) as e:
92
92
  errorMessage = '{}: {}'.format(image_path, e)
93
93
  print(errorMessage)
@@ -135,6 +135,7 @@ def main(args):
135
135
  output_filename_n = "{}_{}{}".format(filename_base, i, file_extension)
136
136
  else:
137
137
  output_filename_n = "{}{}".format(filename_base, file_extension)
138
+ scaled = (scaled * 255).astype(np.uint8)
138
139
  imageio.imwrite(output_filename_n, scaled)
139
140
  text_file.write('%s %d %d %d %d\n' % (output_filename_n, bb[0], bb[1], bb[2], bb[3]))
140
141
  else:
@@ -63,19 +63,21 @@ class MyCentroid(object):
63
63
  return pindex
64
64
 
65
65
  def update(self, person_list, img=None):
66
- """Update the tracker and return the updated list of :class:`Person`.
66
+ """Update the tracker and return the updated list of
67
+ :class:`pyppbox.utils.persontools.Person`.
67
68
 
68
69
  Parameters
69
70
  ----------
70
71
  person_list : list[Person, ...]
71
- A list of :class:`Person` object which stores the detected people in the given :obj:`img`.
72
+ A list of :class:`pyppbox.utils.persontools.Person` object which stores
73
+ the detected people in the given :obj:`img`.
72
74
  img : any, default=None
73
75
  Being consistent with other trackers, will be ignored.
74
76
 
75
77
  Returns
76
78
  -------
77
79
  list[Person, ...]
78
- The updated list of :class:`Person` object.
80
+ The updated list of :class:`pyppbox.utils.persontools.Person` object.
79
81
  """
80
82
  self.previous_list = self.current_list
81
83
  self.current_list = []
@@ -87,12 +87,14 @@ class MyDeepSORT(object):
87
87
 
88
88
 
89
89
  def update(self, person_list, img=None, max_spread=128):
90
- """Update the tracker and return the updated list of :class:`Person`.
90
+ """Update the tracker and return the updated list of
91
+ :class:`pyppbox.utils.persontools.Person`.
91
92
 
92
93
  Parameters
93
94
  ----------
94
95
  person_list : list[Person, ...]
95
- A list of :class:`Person` object which stores the detected people in the given :obj:`img`.
96
+ A list of :class:`pyppbox.utils.persontools.Person` object which stores
97
+ the detected people in the given :obj:`img`.
96
98
  img : any, default=None
97
99
  A :obj:`Mat` like image.
98
100
  max_spread : int, default=5
@@ -103,7 +105,7 @@ class MyDeepSORT(object):
103
105
  Returns
104
106
  -------
105
107
  list[Person, ...]
106
- The updated list of :class:`Person` object.
108
+ The updated list of :class:`pyppbox.utils.persontools.Person` object.
107
109
  """
108
110
  self.previous_list = self.current_list
109
111
  self.current_list = []
@@ -80,19 +80,21 @@ class MySORT(object):
80
80
 
81
81
 
82
82
  def update(self, person_list, img=None):
83
- """Update the tracker and return the updated list of :class:`Person`.
83
+ """Update the tracker and return the updated list of
84
+ :class:`pyppbox.utils.persontools.Person`.
84
85
 
85
86
  Parameters
86
87
  ----------
87
88
  person_list : list[Person, ...]
88
- A list of :class:`Person` object which stores the detected people in the given :obj:`img`.
89
+ A list of :class:`pyppbox.utils.persontools.Person` object which stores
90
+ the detected people in the given :obj:`img`.
89
91
  img : any, default=None
90
92
  Being consistent with other trackers, will be ignored.
91
93
 
92
94
  Returns
93
95
  -------
94
96
  list[Person, ...]
95
- The updated list of :class:`Person` object.
97
+ The updated list of :class:`pyppbox.utils.persontools.Person` object.
96
98
  """
97
99
  self.previous_list = self.current_list
98
100
  self.current_list = []
@@ -444,7 +444,7 @@ class MT(object):
444
444
  Returns
445
445
  -------
446
446
  list[Person, ...]
447
- A list of :class:`Person` object.
447
+ A list of :class:`pyppbox.utils.persontools.Person` object.
448
448
  Mat
449
449
  A :obj:`Mat` like image.
450
450
  """
@@ -621,14 +621,16 @@ class MT(object):
621
621
  img : str or Mat
622
622
  Set an image file or a :obj:`Mat` like image.
623
623
  people : list[Person, ...]
624
- Set a list of :class:`Person` object which stores the detected people in the input :obj:`img`.
624
+ Set a list of :class:`pyppbox.utils.persontools.Person` object which stores the detected
625
+ people in the input :obj:`img`.
625
626
  img_is_mat : bool, default=False
626
627
  Speed up the function by telling whether the :obj:`img` is :obj:`Mat` like image.
627
628
 
628
629
  Returns
629
630
  -------
630
631
  list[Person, ...]
631
- A list of :class:`Person` object which stores people with updated IDs.
632
+ A list of :class:`pyppbox.utils.persontools.Person` object which stores people with
633
+ updated IDs.
632
634
  """
633
635
  res = []
634
636
  if self.__tk_is_set__:
@@ -793,8 +795,8 @@ class MT(object):
793
795
  img : str or Mat
794
796
  Set an image file or a :obj:`Mat` like image.
795
797
  people : list[Person, ...]
796
- Set a list of :class:`Person` object which stores the detected or tracked people in
797
- the input :obj:`img`.
798
+ Set a list of :class:`pyppbox.utils.persontools.Person` object which stores
799
+ the detected or tracked people in the input :obj:`img`.
798
800
  deduplicate : bool, default=True
799
801
  Indicate whether to re-reid people who have the same face ids or deep ids.
800
802
  img_is_mat : bool, default=False
@@ -803,7 +805,8 @@ class MT(object):
803
805
  Returns
804
806
  -------
805
807
  list[Person, ...]
806
- A list of :class:`Person` object which stores people with the updated IDs.
808
+ A list of :class:`pyppbox.utils.persontools.Person` object which stores people
809
+ with the updated IDs.
807
810
  tuple(int, int)
808
811
  A tuple of (ReID count, ReID deduplicate count).
809
812
  """
@@ -963,15 +966,15 @@ class MT(object):
963
966
  ----------
964
967
  reider : str or dict, default="Default"
965
968
  A supported name, a raw/ready dictionary, or a YAML/JSON file which is passed to
966
- :func:`setMainReIDer(reider=reider, auto_load=False)`.
969
+ :func:`setMainReIDer()`, where `reider=reider`, and `auto_load=False`.
967
970
  train_data : str, default=""
968
- A path of data to train, where consists of 2 or more sub-folders which classify
971
+ A path of data used for training, where consists of 2 or more sub-folders which classify
969
972
  2 or more people. Set :code:`train_data=""` or keep default to use the configured
970
- :obj:`train_data` according to the input :code:`reider`. All images in this the sub-folders
973
+ :obj:`train_data` as set in the given :code:`reider`. All images in this sub-folders
971
974
  must be 128x256 for Torchreid and 182x182 for FaceNet.
972
975
  classifier_pkl : str, default=""
973
- A file path for the classifier PKL file. Set :code:`classifier_pkl=""` or keep default
974
- to use the configured :obj:`classifier_pkl` in the input :obj:`reider`.
976
+ A file path for the output classifier PKL file. Set :code:`classifier_pkl=""` or keep the
977
+ default to use the configured :obj:`classifier_pkl` as set in the given :obj:`reider`.
975
978
  """
976
979
  self.setMainReIDer(reider=reider, auto_load=False)
977
980
  if self.__ri_is_set__:
@@ -260,7 +260,7 @@ class MyEVA(object):
260
260
  Parameters
261
261
  ----------
262
262
  people : list[Person, ...]
263
- A list of :class:`Person` object.
263
+ A list of :class:`pyppbox.utils.persontools.Person` object.
264
264
  frame_id : int, default=-1, optional
265
265
  An indication of which frame index is used for the validation.
266
266
  """
@@ -181,9 +181,9 @@ class GTInterpreter(object):
181
181
  gtIO : GTIO
182
182
  GT (Ground-truth) IO, :class:`GTIO` object.
183
183
  unknownFID : str
184
- A string for setting unknown :obj:`faceid` of a :class:`Person` object.
184
+ A string for setting unknown :obj:`faceid` of a :class:`pyppbox.utils.persontools.Person` object.
185
185
  unknownDID : str
186
- A string for setting unknown :obj:`deepid` of a :class:`Person` object.
186
+ A string for setting unknown :obj:`deepid` of a :class:`pyppbox.utils.persontools.Person` object.
187
187
  gt_frames : list[list[list[int, tuple(int, int), str, [int, int, int, int], [int, int, int, int]], ...], ...]
188
188
  A list of GT frames, each frame is a list of GT-format person, and
189
189
  each GT-format person is a list carrying info of a person in a frame like
@@ -280,7 +280,7 @@ class GTInterpreter(object):
280
280
  Returns
281
281
  -------
282
282
  list[Person, ...]
283
- A list of :class:`Person` object.
283
+ A list of :class:`pyppbox.utils.persontools.Person` object.
284
284
  Mat
285
285
  A :obj:`Mat` like image.
286
286
  """
@@ -45,7 +45,7 @@ class Person(object):
45
45
  repspoint : tuple(int, int), default=(0, 0)
46
46
  Respesented 2D point (x, y).
47
47
  det_conf : float, default=0.5
48
- Confience of detection.
48
+ Confidence of detection.
49
49
  faceid : str, default="Unknown"
50
50
  Face ID.
51
51
  deepid : str, default="Unknown"
@@ -93,7 +93,7 @@ class Person(object):
93
93
  repspoint : tuple(int, int), default=(0, 0)
94
94
  Respesented 2D point (x, y).
95
95
  det_conf : float, default=0.5
96
- Confience of detection.
96
+ Confidence of detection.
97
97
  faceid : str, default="Unknown"
98
98
  Face ID.
99
99
  deepid : str, default="Unknown"
@@ -172,9 +172,9 @@ class Person(object):
172
172
 
173
173
 
174
174
  def findRepspoint(box_xyxy, calibrate_weight):
175
- """Find respesented point :code:`(x, y)` of a :class:`Person` object by its bounding
176
- :code:`box_xyxy` of :code:`[x1, y1, x2, y2]`. The :obj:`calibrate_weight` indicates,
177
- in between :code:`min(y1, y2)` and :code:`max(y1, y2)`, where the :code:`y` is.
175
+ """Find respesented point :code:`(x, y)` of a :class:`pyppbox.utils.persontools.Person`
176
+ object by its bounding :code:`box_xyxy` of :code:`[x1, y1, x2, y2]`. The :obj:`calibrate_weight`
177
+ indicates, in between :code:`min(y1, y2)` and :code:`max(y1, y2)`, where the :code:`y` is.
178
178
 
179
179
  Parameters
180
180
  ----------
@@ -197,9 +197,9 @@ def findRepspoint(box_xyxy, calibrate_weight):
197
197
 
198
198
 
199
199
  def findRepspointBB(box_xyxy, prefer_top=True):
200
- """Find respesented point :code:`(x, y)` of a :class:`Person` object by its bounding
201
- :code:`box_xyxy` of :code:`[x1, y1, x2, y2]`. :code:`x` is the middle of :code:`x1`
202
- and :code:`x2` while :code:`y` is the min or max of :code:`(y1, y2)`.
200
+ """Find respesented point :code:`(x, y)` of a :class:`pyppbox.utils.persontools.Person`
201
+ object by its bounding :code:`box_xyxy` of :code:`[x1, y1, x2, y2]`. :code:`x` is the middle
202
+ of :code:`x1` and :code:`x2` while :code:`y` is the min or max of :code:`(y1, y2)`.
203
203
 
204
204
  Parameters
205
205
  ----------
@@ -226,8 +226,8 @@ def findRepspointBB(box_xyxy, prefer_top=True):
226
226
 
227
227
 
228
228
  def findRepspointUP(keypoint, box_xyxy, calibrate_weight, prefer_box=True):
229
- """Find respesented point :code:`(x, y)` of a :class:`Person` object by its
230
- YOLOv8 pose :code:`keypoint` (17 keypoints) or by the bounding :code:`box_xyxy`
229
+ """Find respesented point :code:`(x, y)` of a :class:`pyppbox.utils.persontools.Person`
230
+ object by its YOLOv8 pose :code:`keypoint` (17 keypoints) or by the bounding :code:`box_xyxy`
231
231
  of :code:`[x1, y1, x2, y2]`. The :obj:`calibrate_weight` indicates, in between
232
232
  :code:`min(y1, y2)` and :code:`max(y1, y2)`, where the :code:`y` is.
233
233
 
@@ -41,7 +41,7 @@ class ResIO(object):
41
41
  frames : list[str, ...]
42
42
  a list of frame indexes.
43
43
  people : list[Person, ...]
44
- A list of object :class:`Person`.
44
+ A list of object :class:`pyppbox.utils.persontools.Person`.
45
45
  sorted_people : list[Person, ...]
46
46
  A list used to store the sorted list of :attr:`people`.
47
47
  """
@@ -51,15 +51,15 @@ class ResIO(object):
51
51
  self.people = []
52
52
 
53
53
  def addPerson(self, frame, person):
54
- """Add a :obj:`frame` index and a :class:`Person` object in that
55
- :attr:`frame` index into :attr:`frames` and :attr:`people`.
54
+ """Add a :obj:`frame` index and a :class:`pyppbox.utils.persontools.Person`
55
+ object in that :attr:`frame` index into :attr:`frames` and :attr:`people`.
56
56
 
57
57
  Parameters
58
58
  ----------
59
59
  frame : int
60
60
  A frame index.
61
61
  person : Person
62
- An object of :class:`Person` class.
62
+ An object of :class:`pyppbox.utils.persontools.Person` class.
63
63
  """
64
64
  if isinstance(person, Person):
65
65
  self.frames.append(str(frame))
@@ -68,15 +68,15 @@ class ResIO(object):
68
68
  raise ValueError("RESIO : addPerson() -> Input 'person' is not valid.")
69
69
 
70
70
  def addPeople(self, frame, people):
71
- """Add a frame index and a list of :class:`Person` object in that :obj:`frame`
72
- index into :attr:`frames` and :attr:`people`.
71
+ """Add a frame index and a list of :class:`pyppbox.utils.persontools.Person`
72
+ object in that :obj:`frame` index into :attr:`frames` and :attr:`people`.
73
73
 
74
74
  Parameters
75
75
  ----------
76
76
  frame : int
77
77
  A frame index.
78
78
  people : list[Person, ...]
79
- A list of object :class:`Person`.
79
+ A list of object :class:`pyppbox.utils.persontools.Person`.
80
80
  """
81
81
  if isinstance(people, list):
82
82
  if len(people) > 0:
@@ -109,7 +109,7 @@ def visualizePeople(img, people, show_box=True, show_skl=(True,True,5), show_ids
109
109
  img : str or Mat
110
110
  An image file or a :obj:`Mat` like image.
111
111
  people : list[Person, ...]
112
- Set a list of :class:`Person` object found in the input :obj:`img`.
112
+ Set a list of :class:`pyppbox.utils.persontools.Person` object found in the input :obj:`img`.
113
113
  show_box : bool, default=True
114
114
  Indicate whether to visualize bounding boxes.
115
115
  show_skl : tuple(bool, bool, int), default=(True,True,5)
@@ -126,7 +126,7 @@ def visualizePeople(img, people, show_box=True, show_skl=(True,True,5), show_ids
126
126
  :obj:`show_reid` is corresponding to :obj:`reid_count` in :func:`reidPeople()`
127
127
  Tuple of (ReID count, ReID deduplicate count)
128
128
  show_repspoint : bool, default=True
129
- Indicate whether to show the :obj:`repspoint` of :class:`Person` object.
129
+ Indicate whether to show the :obj:`repspoint` of :class:`pyppbox.utils.persontools.Person` object.
130
130
  img_is_mat : bool, default=True
131
131
  Speed up the function by telling whether the :obj:`img` is :obj:`Mat` like image.
132
132
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyppbox
3
- Version: 3.6b6
3
+ Version: 3.6b8
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
@@ -51,7 +51,6 @@ Requires-Dist: protobuf
51
51
  Requires-Dist: tensorflow
52
52
  Requires-Dist: torch
53
53
  Requires-Dist: torchvision
54
- Requires-Dist: torchaudio
55
54
  Requires-Dist: filterpy
56
55
  Requires-Dist: lapx
57
56
  Requires-Dist: PyQt6
@@ -69,7 +68,7 @@ Requires-Dist: vsensebox-ultralytics>=8.3.5
69
68
 
70
69
  <img src="https://raw.githubusercontent.com/rathaROG/screenshot/master/pyppbox/pyppbox_new_wide.png"><br />
71
70
 
72
- **[📗 Documentation](https://rathaumons.github.io/pyppbox/) | [🚀 Getting started](https://rathaumons.github.io/pyppbox/getstarted.html) | [💡 Examples](https://rathaumons.github.io/pyppbox/examples.html) | [▶️ Demo](https://github.com/rathaumons/pyppbox-demo)**
71
+ **[📗 Documentation](https://rathaumons.github.io/pyppbox/) | [🚀 Getting started](https://rathaumons.github.io/pyppbox/getstarted.html) | [💡 Examples](https://rathaumons.github.io/pyppbox/examples.html) | [▶️ More demo](https://github.com/rathaumons/pyppbox-demo)**
73
72
 
74
73
  </div>
75
74
 
@@ -18,7 +18,6 @@ protobuf
18
18
  tensorflow
19
19
  torch
20
20
  torchvision
21
- torchaudio
22
21
  filterpy
23
22
  lapx
24
23
  PyQt6
@@ -29,7 +29,6 @@ tensorflow
29
29
  # https://pytorch.org/get-started/
30
30
  torch
31
31
  torchvision
32
- torchaudio
33
32
  ### Tracker: SORT
34
33
  filterpy
35
34
  lapx
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