Sync loitering-detection from metro-analytics-catalog
Browse files
README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
| 6 |
|---|---|
|
| 7 |
| **Category** | Object Detection + Tracking + Zone Analytics |
|
| 8 |
| **Source Framework** | PyTorch (Ultralytics) |
|
| 9 |
-
| **Supported Precisions** | FP32, FP16,
|
| 10 |
| **Inference Engine** | OpenVINO |
|
| 11 |
| **Hardware** | CPU, GPU, NPU |
|
| 12 |
| **Detected Class** | `person` (COCO class 0) |
|
|
@@ -44,6 +44,10 @@ python3 -m venv .venv --system-site-packages
|
|
| 44 |
source .venv/bin/activate
|
| 45 |
```
|
| 46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
---
|
| 48 |
|
| 49 |
## Getting Started
|
|
@@ -155,7 +159,7 @@ pipeline_str = (
|
|
| 155 |
f"gvametaconvert add-empty-results=true ! queue ! "
|
| 156 |
f"gvafpscounter ! "
|
| 157 |
f"gvawatermark ! videoconvert ! video/x-raw,format=I420 ! "
|
| 158 |
-
f"
|
| 159 |
f"mp4mux ! filesink name=sink location=output.mp4"
|
| 160 |
)
|
| 161 |
pipeline = Gst.parse_launch(pipeline_str)
|
|
@@ -231,16 +235,28 @@ bus.timed_pop_filtered(
|
|
| 231 |
pipeline.set_state(Gst.State.NULL)
|
| 232 |
```
|
| 233 |
|
| 234 |
-
Expected output with the sample video and the zone/threshold above
|
|
|
|
|
|
|
| 235 |
|
| 236 |
```text
|
| 237 |
-
LOITERING id=
|
| 238 |
-
LOITERING id=
|
|
|
|
|
|
|
| 239 |
```
|
| 240 |
|
|
|
|
|
|
|
| 241 |
The annotated video is saved to `output.mp4` with green bounding boxes and
|
| 242 |
track IDs drawn by `gvawatermark` around every detected person.
|
| 243 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 244 |
---
|
| 245 |
|
| 246 |
## License
|
|
|
|
| 6 |
|---|---|
|
| 7 |
| **Category** | Object Detection + Tracking + Zone Analytics |
|
| 8 |
| **Source Framework** | PyTorch (Ultralytics) |
|
| 9 |
+
| **Supported Precisions** | FP32, FP16, INT8 (mixed-precision) |
|
| 10 |
| **Inference Engine** | OpenVINO |
|
| 11 |
| **Hardware** | CPU, GPU, NPU |
|
| 12 |
| **Detected Class** | `person` (COCO class 0) |
|
|
|
|
| 44 |
source .venv/bin/activate
|
| 45 |
```
|
| 46 |
|
| 47 |
+
> **Note:** The `--system-site-packages` flag is required so the virtual
|
| 48 |
+
> environment can access the system-installed OpenVINO and DLStreamer Python
|
| 49 |
+
> packages.
|
| 50 |
+
|
| 51 |
---
|
| 52 |
|
| 53 |
## Getting Started
|
|
|
|
| 159 |
f"gvametaconvert add-empty-results=true ! queue ! "
|
| 160 |
f"gvafpscounter ! "
|
| 161 |
f"gvawatermark ! videoconvert ! video/x-raw,format=I420 ! "
|
| 162 |
+
f"openh264enc ! h264parse ! "
|
| 163 |
f"mp4mux ! filesink name=sink location=output.mp4"
|
| 164 |
)
|
| 165 |
pipeline = Gst.parse_launch(pipeline_str)
|
|
|
|
| 235 |
pipeline.set_state(Gst.State.NULL)
|
| 236 |
```
|
| 237 |
|
| 238 |
+
Expected output with the sample video and the zone/threshold above
|
| 239 |
+
(exact track IDs and anchor coordinates may vary between runs due to
|
| 240 |
+
tracker non-determinism):
|
| 241 |
|
| 242 |
```text
|
| 243 |
+
LOITERING id=26 dwell=5.0s anchor=(147,341)
|
| 244 |
+
LOITERING id=27 dwell=5.0s anchor=(122,337)
|
| 245 |
+
LOITERING id=29 dwell=5.0s anchor=(90,322)
|
| 246 |
+
...
|
| 247 |
```
|
| 248 |
|
| 249 |
+
Approximately 10–12 loitering events are expected over the full video.
|
| 250 |
+
|
| 251 |
The annotated video is saved to `output.mp4` with green bounding boxes and
|
| 252 |
track IDs drawn by `gvawatermark` around every detected person.
|
| 253 |
|
| 254 |
+
> **Known warning:** The `openh264enc` element prints
|
| 255 |
+
> `[OpenH264] this = 0x..., Error:CWelsH264SVCEncoder::EncodeFrame(), cmInitParaError.`
|
| 256 |
+
> on the first frame. This is a benign initialization message — the output
|
| 257 |
+
> video is encoded correctly. The warning comes from the OpenH264 library's
|
| 258 |
+
> internal logging and does not indicate a real error.
|
| 259 |
+
|
| 260 |
---
|
| 261 |
|
| 262 |
## License
|