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.
- {pyppbox-3.5b2 → pyppbox-3.6b2}/GETSTARTED.md +17 -26
- {pyppbox-3.5b2/pyppbox.egg-info → pyppbox-3.6b2}/PKG-INFO +3 -5
- {pyppbox-3.5b2 → pyppbox-3.6b2}/README.md +2 -2
- {pyppbox-3.5b2 → pyppbox-3.6b2}/RELEASENOTES.md +28 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/__init__.py +1 -1
- pyppbox-3.6b2/pyppbox/config/cfg/cfg.zip +0 -0
- pyppbox-3.6b2/pyppbox/config/strings/strings.zip +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/guitools.py +11 -12
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/detectors/yolocls/__init__.py +10 -10
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/detectors/yoloult/__init__.py +6 -6
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/facenet/__init__.py +1 -1
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/torchreid/__init__.py +1 -1
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/__init__.py +1 -1
- {pyppbox-3.5b2/pyppbox/standalone → pyppbox-3.6b2/pyppbox/ppb}/__init__.py +24 -24
- {pyppbox-3.5b2/pyppbox/standalone → pyppbox-3.6b2/pyppbox/ppb}/mt.py +7 -7
- pyppbox-3.6b2/pyppbox/standalone/__init__.py +37 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/gttools.py +2 -2
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/visualizetools.py +3 -3
- {pyppbox-3.5b2 → pyppbox-3.6b2/pyppbox.egg-info}/PKG-INFO +3 -5
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox.egg-info/SOURCES.txt +4 -2
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox.egg-info/requires.txt +0 -2
- {pyppbox-3.5b2 → pyppbox-3.6b2}/requirements/requirements.txt +0 -3
- pyppbox-3.5b2/pyppbox/config/cfg/cfg.7z +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/LICENSE +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/MANIFEST.in +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/cfg/detectors.yaml +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/cfg/main.yaml +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/cfg/reiders.yaml +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/cfg/trackers.yaml +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/configtools.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/myconfig.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/strings/strings.yaml +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/config/unifiedstrings.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/datasets/.gitignore +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/logs/.gitignore +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/modules/.gitignore +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/res/.gitignore +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/data/res/idmap.txt +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/assets/TReID.png +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/assets/icon.ico +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/assets/settings.ico +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/guidemo.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/guihub.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/tmp/input.tmp +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/tmp/ui.tmp +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_centroid.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_deepsort.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_facenet.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_gt.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_launcher.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_sort.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_torchreid.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_yolocls.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/gui/ui_yoloult.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/detectors/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/facenet/origin/align_dataset_mtcnn.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/facenet/origin/detect_face.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/facenet/origin/facenet.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/torchreid/model_dict.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/torchreid/model_dict.yaml +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/reiders/torchreid/utils.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/centroid/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/detection.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/detection_yolo.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/generate_detections.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/iou_matching.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/kalman_filter.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/linear_assignment.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/nn_matching.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/preprocessing.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/track.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/tracker.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/voc_classes.txt +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/sort/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/sort/origin/sort.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/__init__.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/commontools.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/evatools.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/logtools.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/mot2pyppbox.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/persontools.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox/utils/restools.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox.egg-info/dependency_links.txt +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyppbox.egg-info/top_level.txt +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/pyproject.toml +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/requirements/README.md +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/requirements/test_gpu.py +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/setup.cfg +0 -0
- {pyppbox-3.5b2 → pyppbox-3.6b2}/setup.py +0 -0
- {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
|
|
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
|
-
-
|
|
21
|
-
|
|
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
|
-
*
|
|
63
|
-
-
|
|
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
|
-
*
|
|
108
|
-
-
|
|
98
|
+
* Quick Test
|
|
99
|
+
- In your Python terminal:
|
|
109
100
|
```
|
|
110
|
-
python
|
|
111
101
|
import pyppbox
|
|
112
102
|
pyppbox.launchGUI()
|
|
113
103
|
```
|
|
114
|
-
|
|
115
|
-
<
|
|
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.
|
|
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
|
|
83
|
-
* Support dictionary and YAML/JSON
|
|
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
|
|
20
|
-
* Support dictionary and YAML/JSON
|
|
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.
|
|
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
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
119
|
-
|
|
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
|
|
61
|
+
given :obj:`Mat` like image.
|
|
62
62
|
|
|
63
63
|
Parameters
|
|
64
64
|
----------
|
|
65
65
|
img : Mat
|
|
66
|
-
A
|
|
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
|
|
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
|
|
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
|
|
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
|
|
112
|
+
"""Detect person(s) in a given :obj:`Mat` like image.
|
|
113
113
|
|
|
114
114
|
Parameters
|
|
115
115
|
----------
|
|
116
116
|
img : Mat
|
|
117
|
-
A
|
|
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
|
|
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
|
|
120
|
+
in a given :obj:`Mat` like image.
|
|
121
121
|
|
|
122
122
|
Parameters
|
|
123
123
|
----------
|
|
124
124
|
img : Mat
|
|
125
|
-
A
|
|
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
|
|
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
|
|
208
|
+
"""Detect person(s) in a given :obj:`Mat` like image.
|
|
209
209
|
|
|
210
210
|
Parameters
|
|
211
211
|
----------
|
|
212
212
|
img : Mat
|
|
213
|
-
A
|
|
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
|
|
228
|
+
A :obj:`Mat` like image.
|
|
229
229
|
"""
|
|
230
230
|
numpy_dets = []
|
|
231
231
|
people = []
|
|
@@ -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
|
|
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.
|
|
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
|
-
|
|
72
|
+
_mt = MT()
|
|
73
73
|
|
|
74
74
|
def setConfigDir(config_dir=None, load_all=False):
|
|
75
|
-
"""See :func:`pyppbox.
|
|
76
|
-
|
|
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.
|
|
80
|
-
|
|
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.
|
|
84
|
-
return
|
|
83
|
+
"""See :func:`pyppbox.ppb.mt.MT.getConfig`"""
|
|
84
|
+
return _mt.getConfig()
|
|
85
85
|
|
|
86
86
|
def forceFullGTMode():
|
|
87
|
-
"""See :func:`pyppbox.
|
|
88
|
-
|
|
87
|
+
"""See :func:`pyppbox.ppb.mt.MT.forceFullGTMode`"""
|
|
88
|
+
_mt.forceFullGTMode()
|
|
89
89
|
|
|
90
90
|
def setMainDetector(detector=""):
|
|
91
|
-
"""See :func:`pyppbox.
|
|
92
|
-
|
|
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.
|
|
103
|
-
return
|
|
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.
|
|
114
|
-
|
|
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.
|
|
118
|
-
return
|
|
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.
|
|
122
|
-
|
|
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.
|
|
126
|
-
return
|
|
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.
|
|
130
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
83
|
-
* Support dictionary and YAML/JSON
|
|
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.
|
|
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
|
|
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
|
|
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.5b2 → pyppbox-3.6b2}/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.5b2 → pyppbox-3.6b2}/pyppbox/modules/trackers/deepsort/origin/generate_detections.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyppbox-3.5b2 → pyppbox-3.6b2}/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
|
|
File without changes
|