71 lines
2.1 KiB
Markdown
71 lines
2.1 KiB
Markdown
# 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.
|