Spaces:
Sleeping
Sleeping
| # CPU-Optimized Stable Baseline | |
| This repository contains a CPU-optimized pipeline variant that preserves exact | |
| functional equivalence against `main` on the validated videos below. | |
| ## Stable runtime decisions | |
| - OpenCV CPU threads are fixed to `2` in `bat_tracker/pipeline.py`. | |
| - Frame prefetch queue depth is fixed to `64` in `bat_tracker/video.py`. | |
| - The video reader keeps the stable `BGR -> gray` path in `bat_tracker/video.py`. | |
| - Detection preprocessing reuses buffers and applies a separable Gaussian blur | |
| in `bat_tracker/detection.py`. | |
| These values are not generic tuning advice. They are the best stable settings | |
| measured on the benchmark videos used during validation. | |
| ## Reproducible commands | |
| Run from the repository root with the project virtualenv activated. | |
| Video `/home/joan/BORRAR/2023_0919_212201_007.MOV`: | |
| ```bash | |
| python -m bat_tracker.cli \ | |
| --input /home/joan/BORRAR/2023_0919_212201_007.MOV \ | |
| --output /tmp/bat_tracker_run_2023_0919_212201_007 \ | |
| --config /home/joan/Projectes/bat_tracker/config.out3_clean.yaml | |
| ``` | |
| Video `/home/joan/BORRAR/rabella_20211016_DSCF0005.mp4`: | |
| ```bash | |
| python -m bat_tracker.cli \ | |
| --input /home/joan/BORRAR/rabella_20211016_DSCF0005.mp4 \ | |
| --output /tmp/bat_tracker_run_rabella_20211016_DSCF0005 \ | |
| --config /home/joan/Projectes/bat_tracker/config.out3_clean.yaml | |
| ``` | |
| The commands are stateless apart from their output directories. Removing the | |
| target output directory before re-running gives a clean, reproducible run. | |
| ## Accepted optimizations | |
| - Reused preprocessing buffers in detection. | |
| - Switched frame blur to a separable Gaussian implementation. | |
| - Added reader-thread prefetch for grayscale frames. | |
| - Fixed OpenCV CPU worker count to `2`. | |
| ## Rejected experiments | |
| - Larger decoder thread counts through the OpenCV FFMPEG constructor. | |
| - External `ffmpeg` pipe decoding. | |
| - Direct backend gray output with `CAP_PROP_CONVERT_RGB=0`. | |
| - Additional queue-size tuning beyond the accepted stable point. | |
| - Extra ROI tightening based on the valid-region mask. | |
| ## Known limits | |
| - OpenCV/FFMPEG file decoding remains a dominant cost. | |
| - `cvtColor` has no remaining low-risk optimization that preserves exact output. | |
| - Blur is already materially optimized, but still expensive. | |