configura fps preview e yolo
This commit is contained in:
70
aggiornamento-2026-05-16-09-03.md
Normal file
70
aggiornamento-2026-05-16-09-03.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Aggiornamento 2026-05-16 09:03
|
||||
|
||||
## Decisione
|
||||
|
||||
Separare il ritmo della preview dal ritmo di inferenza YOLO.
|
||||
|
||||
Motivo: il video sorgente e' circa 30 fps, ma la pipeline completa non deve necessariamente elaborare ogni frame. Per la demo e per la futura pipeline reale e' piu' utile mantenere bassa la latenza, lasciando che la visualizzazione e YOLO abbiano frequenze configurabili.
|
||||
|
||||
## Implementazione
|
||||
|
||||
Aggiunti due parametri in `flywms_navigation.ini` e nel parser di `flywms_navigation.py`:
|
||||
|
||||
- `preview_fps`: FPS massimo per lettura/preview realtime. `0` usa il framerate della sorgente.
|
||||
- `yolo_fps`: FPS massimo per inferenza YOLO. `0` esegue YOLO su ogni frame di preview.
|
||||
|
||||
Valori iniziali:
|
||||
|
||||
```ini
|
||||
preview_fps = 24.0
|
||||
yolo_fps = 15.0
|
||||
```
|
||||
|
||||
La stessa logica e' stata applicata anche alla shell DearPyGUI `flywms_navigation_gui.py`.
|
||||
|
||||
## Nota su video e camera reale
|
||||
|
||||
Con un file video, questi parametri simulano il ritmo desiderato della preview e limitano l'inferenza YOLO. In questa versione single-thread, se YOLO e' piu' lento del target, non si puo' arrivare al target.
|
||||
|
||||
Con una camera reale, il codice prova anche a impostare `CAP_PROP_FPS` quando la sorgente e' webcam/camera. Questo e' best effort: molti driver ignorano il valore. Il metodo robusto resta scartare frame lato software e usare sempre il frame piu' recente disponibile.
|
||||
|
||||
## Verifiche
|
||||
|
||||
Compilazione:
|
||||
|
||||
```powershell
|
||||
python -m py_compile flywms_navigation.py flywms_navigation_gui.py
|
||||
```
|
||||
|
||||
Lettura config:
|
||||
|
||||
```text
|
||||
24.0 15.0
|
||||
```
|
||||
|
||||
Run headless con `yolo_fps=15` su CPU:
|
||||
|
||||
```text
|
||||
fps=5.5 yolo_fps=5.5
|
||||
```
|
||||
|
||||
Interpretazione: su CPU il ciclo non raggiunge 15 fps, quindi YOLO gira comunque su ogni frame effettivamente processato.
|
||||
|
||||
Run headless con `yolo_fps=2`:
|
||||
|
||||
```text
|
||||
fps=13.7 yolo_fps=2.0
|
||||
```
|
||||
|
||||
Interpretazione: il throttling YOLO funziona; la preview procede piu' veloce dell'inferenza.
|
||||
|
||||
## Prossimo passo
|
||||
|
||||
Quando arrivera' la GPU, rimisurare con:
|
||||
|
||||
- `preview_fps = 24.0`;
|
||||
- `yolo_fps = 15.0`;
|
||||
- device GPU Ultralytics;
|
||||
- GUI DearPyGUI attiva.
|
||||
|
||||
Se il costo GUI diventera' dominante, separare in seguito thread inferenza e thread GUI con stato latest-frame.
|
||||
Reference in New Issue
Block a user