L'obiettivo di questo assegnamento è creare uno strumento per navigare immagini catturate da camere a 360° (immagini equirettangolari).
- Input:
- Un'immagine (o video) catturata da una camera a 360°.
- Una vista iniziale espressa in latitudine e longitudine (in gradi).
- Un campo visivo (FOV) espresso in gradi (default: 60°).
- Output:
- Visualizzazione dell'immagine rettificata proiettata su un piano tangente alla sfera nella vista iniziale.
- Navigazione:
- L'utente può modificare la vista iniziale utilizzando, ad esempio, i tasti freccia (sinistra/destra/su/giù) per cambiare la vista di un numero discreto di gradi predefiniti.
- Zoom digitale:
- Opzionale: implementare uno zoom digitale per mettere a fuoco oggetti vicini o lontani.
- È consentito utilizzare solo codice sviluppato autonomamente (non si possono usare librerie che eseguono automaticamente la proiezione).
- Lo strumento deve funzionare indipendentemente dalla dimensione dell'immagine/frame.
L'obiettivo di questo assegnamento è addestrare un rilevatore di pedoni basato su HOG (Histogram of Oriented Gradients) e SVM (Support Vector Machine) utilizzando:
- OpenCV per l'estrazione delle caratteristiche HOG.
- Scikit-learn per l'addestramento di un SVM lineare.
Il rilevatore deve essere addestrato, validato e testato utilizzando il dataset WiderPerson (http://www.cbsr.ia.ac.cn/users/sfzhang/WiderPerson/).
- Preparazione dei dati:
- Positivi: Usa i bounding box della classe "pedestrian" (classe 1) annotati nei file
.txtforniti. - Negativi: Usa finestre casuali estratte da un file scaricabile fornito (vedi link nell'assegnamento).
- Ridimensiona le immagini a
64x128pixel per estrarre i descrittori HOG concv2.HOGDescriptor().
- Positivi: Usa i bounding box della classe "pedestrian" (classe 1) annotati nei file
- Pipeline attesa:
- Preparazione dei dati (crop e ridimensionamento).
- Estrazione dei descrittori HOG.
- Addestramento di un SVM lineare con Scikit-learn (
svm.LinearSVC). - Implementazione di una procedura multi-scala con sliding window e stride per rilevare pedoni a diverse scale.
- Implementazione di una procedura di soppressione delle non-massime (NMS) basata su una soglia IoU (
T).
- Metriche di valutazione:
- Usa
TP,FP,FNper valutare le prestazioni (IoU > 0.5 è considerato un rilevamento corretto). - Calcola precisione e richiamo.
- Usa
- Confronto con il rilevatore predefinito di OpenCV:
- Usa il rilevatore predefinito
cv2.HOGDescriptor_getDefaultPeopleDetector(). - Confronta le prestazioni con il tuo modello.
- Usa il rilevatore predefinito
L'obiettivo è sviluppare un Multi-Object Tracker online basato sul paradigma tracking-by-detection, con focus sul tracciamento di pedoni.
- Rilevatore di pedoni:
Utilizza il modello DETR (End-to-End Object Detection with Transformers).- Installa
torchetorchvision. - Crea il modello con i pesi pre-addestrati:
model = torch.hub.load('facebookresearch/detr:main', 'detr_resnet50', pretrained=True)
- Installa
- Gestione dei tracciamenti:
- Implementa una strategia per aggiungere nuovi tracciamenti quando nuovi pedoni entrano nella scena.
- Rimuovi tracciamenti quando i pedoni lasciano la scena.
- Associazione dei tracciamenti:
- Usa il metodo di maximum bipartite matching per associare i bounding box rilevati alle identità conosciute.
- Implementa il metodo usando
scipy.optimize.linear_sum_assignment. - Definisci una metrica di distanza personalizzata (puoi utilizzare le uscite del trasformatore di DETR o una rete pre-addestrata).
Usa il dataset MOT17 (https://motchallenge.net/data/MOT17/) per validare e testare il metodo.
- Calcola le metriche HOTA e CLEAR MOT usando il framework TrackEval (https://github.com/JonathonLuiten/TrackEval).
- Valuta il modello su un set di validazione per selezionare i migliori iperparametri (come soglie). Usa questi stessi iperparametri per il test set.
- Riporta i risultati medi sulle metriche per diversi valori di iperparametri sul set di validazione.