pyppbox 3.6b6__tar.gz → 3.6b7__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.
- {pyppbox-3.6b6 → pyppbox-3.6b7}/GETSTARTED.md +22 -23
- {pyppbox-3.6b6/pyppbox.egg-info → pyppbox-3.6b7}/PKG-INFO +2 -3
- {pyppbox-3.6b6 → pyppbox-3.6b7}/README.md +1 -1
- {pyppbox-3.6b6 → pyppbox-3.6b7}/RELEASENOTES.md +11 -2
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/__init__.py +1 -1
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/myconfig.py +13 -11
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/detectors/yolocls/__init__.py +1 -1
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/detectors/yoloult/__init__.py +1 -1
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/centroid/__init__.py +5 -3
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/__init__.py +5 -3
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/sort/__init__.py +5 -3
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/ppb/mt.py +9 -6
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/evatools.py +1 -1
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/gttools.py +3 -3
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/persontools.py +10 -10
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/restools.py +7 -7
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/visualizetools.py +2 -2
- {pyppbox-3.6b6 → pyppbox-3.6b7/pyppbox.egg-info}/PKG-INFO +2 -3
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox.egg-info/requires.txt +0 -1
- {pyppbox-3.6b6 → pyppbox-3.6b7}/requirements/requirements.txt +0 -1
- {pyppbox-3.6b6 → pyppbox-3.6b7}/LICENSE +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/MANIFEST.in +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/cfg/cfg.zip +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/cfg/detectors.yaml +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/cfg/main.yaml +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/cfg/reiders.yaml +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/cfg/trackers.yaml +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/configtools.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/strings/strings.yaml +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/strings/strings.zip +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/config/unifiedstrings.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/data/datasets/.gitignore +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/data/logs/.gitignore +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/data/modules/.gitignore +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/data/res/.gitignore +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/data/res/idmap.txt +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/assets/TReID.png +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/assets/icon.ico +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/assets/settings.ico +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/guidemo.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/guihub.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/guitools.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/tmp/input.tmp +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/tmp/ui.tmp +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_centroid.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_deepsort.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_facenet.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_gt.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_launcher.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_sort.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_torchreid.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_yolocls.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/gui/ui_yoloult.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/detectors/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/facenet/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/facenet/origin/align_dataset_mtcnn.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/facenet/origin/detect_face.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/facenet/origin/facenet.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/torchreid/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/torchreid/model_dict.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/torchreid/model_dict.yaml +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/torchreid/utils.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/detection.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/detection_yolo.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/generate_detections.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/iou_matching.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/kalman_filter.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/linear_assignment.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/nn_matching.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/preprocessing.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/track.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/tracker.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/voc_classes.txt +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/sort/origin/sort.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/ppb/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/standalone/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/__init__.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/commontools.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/logtools.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/utils/mot2pyppbox.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox.egg-info/SOURCES.txt +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox.egg-info/dependency_links.txt +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox.egg-info/top_level.txt +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/pyproject.toml +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/requirements/README.md +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/requirements/test_gpu.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/setup.cfg +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/setup.py +0 -0
- {pyppbox-3.6b6 → pyppbox-3.6b7}/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:
|
|
@@ -25,44 +25,41 @@ All requirements are not strictly limited. However, some specific modules might
|
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
* Install dependencies/requirments under `pyppbox/requirements/`:
|
|
28
|
-
- On Windows
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
3
|
+
Version: 3.6b7
|
|
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) | [▶️
|
|
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) | [▶️
|
|
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,19 @@
|
|
|
12
12
|
|
|
13
13
|
## **pyppbox V3 - Make Simpler and Faster**
|
|
14
14
|
|
|
15
|
-
* `pyppbox` [v3.
|
|
15
|
+
* `pyppbox` [v3.6b7](https://github.com/rathaumons/pyppbox/tree/v3.6b7) - The Last V3
|
|
16
|
+
|
|
17
|
+
- Improve examples
|
|
18
|
+
- Improve requirements
|
|
19
|
+
- Update and improve `GETSTARTED.md`
|
|
20
|
+
- Update and improve documentations
|
|
21
|
+
- **Known issue/limitation**:
|
|
22
|
+
- You tell me :)
|
|
23
|
+
|
|
24
|
+
* `pyppbox` [v3.6b6](https://github.com/rathaumons/pyppbox/tree/v3.6b6) - ~~The Last V3~~
|
|
16
25
|
|
|
17
26
|
- Add proper supports for YOLOv9, YOLOv10, and YOLOv11
|
|
18
|
-
- Update
|
|
27
|
+
- Update requirements and documentations
|
|
19
28
|
- **Known issue/limitation**:
|
|
20
29
|
- You tell me :)
|
|
21
30
|
|
|
@@ -47,7 +47,7 @@ from pyppbox.gui.guitools import (
|
|
|
47
47
|
)
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
__version__ = '3.
|
|
50
|
+
__version__ = '3.6b7'
|
|
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
|
|
225
|
-
Check :func:`findRepspoint()` in
|
|
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`
|
|
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`
|
|
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
|
|
717
|
-
respoint :code:`(X, Y)` are used to find
|
|
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
|
|
721
|
-
respoint :code:`(X, Y)` are used to find
|
|
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
|
"""
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
"""
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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`
|
|
176
|
-
:code:`box_xyxy` of :code:`[x1, y1, x2, y2]`. The :obj:`calibrate_weight`
|
|
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`
|
|
201
|
-
:code:`box_xyxy` of :code:`[x1, y1, x2, y2]`. :code:`x` is the middle
|
|
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`
|
|
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`
|
|
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`
|
|
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.
|
|
3
|
+
Version: 3.6b7
|
|
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) | [▶️
|
|
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
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|
{pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/reiders/facenet/origin/align_dataset_mtcnn.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/generate_detections.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyppbox-3.6b6 → pyppbox-3.6b7}/pyppbox/modules/trackers/deepsort/origin/linear_assignment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|