Problemă #310
Autor:Echipa științifică ONIA
Dificultate
Maximul tău
N/A
O echipă de siguranță urbană monitorizează secvențe sonore scurte înregistrate
noaptea. Un transformator audio înghețat a convertit deja fiecare înregistrare
în câte un embedding pentru fiecare cadru temporal. Sarcina ta este să detectezi
ce evenimente sonore sunt active în fiecare cadru.
Mai multe evenimente se pot suprapune: cineva poate vorbi în timp ce trece o
mașină, ploaia poate acoperi pașii, iar o alarmă poate continua pe mai multe
cadre. Primele 16 clase sunt cunoscute din studiul anterior. Alte 13 clase sunt
noi și au mai puține exemple etichetate. O parte dintre scenele de test provin
și de la microfoane și locații nevăzute în datele de antrenare.
Nu primești sunetul brut și nu trebuie să îl reconstruiești. Lucrează direct cu
embedding-urile înghețate furnizate.
Fiecare scenă conține exact 24 de cadre ordonate. Fiecare cadru are un embedding
float32 cu 48 de dimensiuni. Etichetele sunt vectori multi-hot cu 29 de
dimensiuni:
0–15: clase vechi, relativ frecvente;16–28: clase noi, relativ rare;1 înseamnă că evenimentul este activ în cadrul respectiv;1.Arhiva ZIP a setului de date conține directorul nightwatch_data/:
| Fișier | Formă | Semnificație |
|---|---|---|
train_embeddings.npy | (640, 24, 48) | embedding-uri de antrenare etichetate |
train_labels.npy | (640, 24, 29) | etichete multi-hot de antrenare |
train_domain_ids.npy | (640,) | ID-urile microfonului/locației |
train_scene_ids.npy | (640,) | identificatorii scenelor de antrenare |
validation_embeddings.npy | (160, 24, 48) | embedding-uri de validare etichetate |
validation_labels.npy | (160, 24, 29) | etichete multi-hot de validare |
validation_domain_ids.npy | (160,) | ID-urile domeniilor de validare |
validation_scene_ids.npy | (160,) | identificatorii scenelor de validare |
test_embeddings.npy | (360, 24, 48) | embedding-uri de test neetichetate |
test_scene_ids.npy | (360,) | ordinea canonică a scenelor de test |
metadata.json | — | numele claselor și contractul datelor |
Încarcă toate fișierele NumPy cu allow_pickle=False.
Rândurile de test sunt amestecate intenționat. Clasamentul public/parțial
folosește 144 de scene din domenii familiare. Clasamentul final/complet folosește
216 scene din domenii deplasate și nevăzute anterior. Apartenența la aceste
două mulțimi este ascunsă.
Încarcă o arhivă ZIP care conține exact un singur fișier la rădăcină:
submission.zip└── predictions.npypredictions.npy trebuie să fie un array NumPy C-contiguous cu:
float32;(360, 24, 29);[0, 1];test_embeddings.npy / test_scene_ids.npy;0–28.Exemplu:
import ioimport zipfileimport numpy as nppredictions = model_predictions.astype(np.float32)assert predictions.shape == (360, 24, 29)assert np.isfinite(predictions).all()assert ((0 <= predictions) & (predictions <= 1)).all()buffer = io.BytesIO()np.save(buffer, np.ascontiguousarray(predictions), allow_pickle=False)with zipfile.ZipFile("submission.zip", "w", zipfile.ZIP_DEFLATED) as archive: archive.writestr("predictions.npy", buffer.getvalue())Fișierele suplimentare, directoarele, linkurile simbolice, alte tipuri de date,
array-urile invalide, valorile NaN/Infinity și valorile din afara intervalului
[0, 1] sunt respinse și primesc scorul 0.
Fiecare parte a clasamentului este evaluată separat prin:
0–15;16–28;0.5.Pentru fiecare parte:
composite = 0.35 × old_macro_AP + 0.35 × new_macro_AP + 0.30 × temporal_micro_F1@0.5scor = 100 × compositeScorul este cuprins între 0 și 100. Nu există subtask-uri configurate separat
în platformă. În timpul concursului se afișează numai scorul pe partea
parțială; partea completă stabilește rezultatul final.
Average precision recompensează ordonarea bună a probabilităților, iar F1
temporal cere și probabilități calibrate. Un model care ordonează corect
evenimentele, dar nu depășește niciodată pragul 0.5, pierde componenta F1.
Este evaluat doar array-ul trimis; codul concurentului nu este executat.
Evaluatorul este proiectat pentru limita platformei de 30 de secunde și 3 GiB
RAM.
Problema este o simulare sintetică originală și deterministă. Consultă
SOURCE.md și metadatele setului de date pentru proveniență și versiunea
generatorului.