Livestream anonymisation: blur buildings and optimise the pipeline
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- audio-video-rtc, computer-vision
Direzione di ricerca
Start with the linked pyro-engine issues #465, #466, and #467, which divide this work into study, model training and deployment, and pipeline optimisation. Read the listed datasets and model options, then measure the current 640x360, 10 fps stream on a station. Done means choosing blur classes, matching current FPS with the new model, measuring and merging useful pipeline optimisations, and closing the linked issues.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Related to pyronear/roadmap#37 (Privacy mask: a fixed mask per camera. This epic is about blurring objects live).
Context & Objective
During a doubt removal, the station streams the camera live and blurs it on the fly. A YOLO11n (pyronear/yolov11n on Hugging Face, NCNN on the Pi) detects persons and vehicles, and we paint a black box on them. Buildings are not blurred: YOLO has no such class.
We want to blur buildings too, and other classes if useful (houses, gardens, pools), and keep the stream real time on a Raspberry Pi. Two parts: train a new model with these classes, as fast as today, and optimise the stream code in pyro-engine, which is simple today.
What has to be done
Issues in pyro-engine: pyronear/pyro-engine#465 (study), pyronear/pyro-engine#466 (train and deploy), pyronear/pyro-engine#467 (optimise the pipeline).
1. Study: models and datasets
- Datasets with a building class: ADE20K (https://datasetninja.com/ade20k#class-sizes), COCO-Stuff, Cityscapes, Mapillary Vistas, Open Images. Our cameras look at landscapes from a tower, buildings are small and far. Most datasets are street level.
- Models: YOLO11n retrained on a merged dataset, YOLO11n-seg or a small segmentation model, or a big open-vocabulary model to label our own images and train a small YOLO on them.
- Choose the classes to blur and the target speed on the Pi (today: 640x360 at 10 fps, model input 640).
2. Train and deploy the new model
- Build the dataset, train, export NCNN and ONNX, publish on Hugging Face.
- Update
Anonymizerinpyro-engine. Measure FPS and latency on a station.
3. Optimise the stream pipeline
Today: one ffmpeg decodes the RTSP to raw frames, Python runs the model on the last frame in a thread, and an encoder thread paints the boxes and sends the frames to a second ffmpeg (x264 to SRT). Leads:
- Fewer copies per frame: give the raw frame to the model directly, paint the boxes in place.
- Boxes are painted on the current frame, not on the frame they come from. A moving object can show for a few frames. Delay the encoder, or keep the boxes longer and make them bigger.
- Hardware decode and encode on the Pi, or use a smaller camera substream.
- Smaller model input, or run the model one frame out of N.
- Measure before and after.
Done when
- The study is done and the classes to blur are chosen
- The new model runs on a station at the same FPS as today
- The pipeline is measured and the useful optimisations are merged
- The listed issues are closed
Theme Engine · Priority P2 · Period to be set
- Lingua principale
- Nessun dato sulla lingua
- Stelle
- 0
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pyronear/roadmap
-
P2 T1-27
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
P2 T2-27
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
epic P2 T1-27
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
-
P2 T1-27
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Visibility analysisApertaepic P3 T2-AprMay-27
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
Tutte le issue di pyronear/roadmap
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
eliasstravik/herdr-projects#785 ·
-
A WebTransport session reaped after its client leaves says "idle: WebRTC transport lost"Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
media-use transcribe.mjs: add --language so non-English audio isn't translated by small.enForse già presa @sx4im l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
heygen-com/hyperframes#7371 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
transit-audio/transit#369 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
victoralvesf/aonsoku#477 ·