Video Shazam
Autor: Antonio Bărbălău (Bitdefender)

Cerință
Dându-se un audio, să se găsească video-ul corespondent.
Date
Pentru antrenarea acestui model au fost preprocesate video-uri în felul următor:
- Din fiecare video au fost extrase secvențe random de 10 secunde.
- Secvențele video și audio au fost separate.
- Fiecare video de 10s a fost encodat folosind V-JEPA 2 [1].
- Fiecare audio de 10s a fost encodat folosind WavLM [2].
- Pentru train au fost alese ~30000 de perechi audio-video.
- Pentru validare (public score) au fost alese perechi audio-video din aceleași video-uri folosite pentru train.
- Pentru testare (private score) au fost alese atât secvențe din video-urile folosite la train și validare, cât și secvențe din video-uri noi.
Evaluare
Secvențele de test sunt grupate în "samples" formate din 20 de audios și 20 de videos. Pentru fiecare audio din "sample" trebuie să găsiți video-ul corespondent din cele 20. Metrica de evaluare este acuratețea. Acuratețile între 0 și 70 vor primi un scor între 0 și 20, iar cele între 70 și 98 vor primi un scor între 20 și 100. Distribuția scorurilor este uniformă pentru ambele intervale de acuratețe. Atenție! Datele de test conțin și secvențe din video-uri ce nu există în train și validare. În consecință, acuratețea privată poate fi mai mică decât cea publică.
Date de intrare
Fișierul main.py încarcă:
audio_embeddingso matrice numpy de dimensiune , unde este numărul de perechi de antrenare.video_embeddingso matrice numpy de dimensiune .
Acestea conțin, în ordine, embedding-urile audio și video. Embedding-urile de pe aceeași poziție corespund; primul embedding de audio și primul embedding video provin din aceeași secvență de 10s.
Format submisie
Fișierul main.py conține o secvență de cod ce scrie o submise în formatul corect. Puteți să o rescrieți sau doar să introduceți funcția voastră de inferență acolo.
În fișierul main.py este de asemenea încărcată variabla test_data. Aceasta este o listă de "samples". Fiecare sample este un dicționar ce conține sample_id, audio_embeddings și video_embeddings. Embedding-urile de audio și video sunt matrici de dimensiune respectiv . Pentru fiecare din cele 20 de audios, trebuie prezis index-ul video-ului corespunzător din sample; acesta va fi un întreg între și . Submisia va avea un header format din subtaskID, sample_id și apoi numerele de la la reprezentând index-ul audio-ului. Apoi, pentru fiecare sample, va exista un rând în csv, unde prima valoare va fi tot timpul 1 (pentru singurul subtask), a doua valoare va fi id-ul sample-ului, iar următoarele 20 de valori vor fi predicțiile voastre pentru cele 20 de audios din sample.
Exemplu submisie:
subtaskID,sample_id,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,191,0,14,6,9,13,15,7,10,2,16,5,8,19,17,3,18,0,12,1,4,111,1,......Referințe
[1] Assran et al., "V-JEPA 2: Self-Supervised Video Models Enable Understanding, Prediction and Planning", 2025.
[2] Chen et al., "WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing", 2022.