בעיה #310
מחבר:Echipa științifică ONIA
רמת קושי
הציון הטוב ביותר שלך
לא זמין
A city safety team monitors short nighttime soundscapes. A frozen audio
transformer has already converted every recording into one embedding per time
frame. Your task is to detect which sound events are active in every frame.
Several events may overlap: speech can occur while a car passes, rain can mask
footsteps, and an alarm can continue across many frames. The first 16 event
classes are familiar from the earlier study; 13 newly introduced classes have
fewer labeled examples. Some test scenes also come from unseen microphones and
venues.
You do not receive raw audio and should not reconstruct it. Work directly
with the supplied frozen embeddings.
Every scene contains exactly 24 ordered frames. Every frame has a 48-dimensional
float32 embedding. Labels are 29-dimensional multi-hot vectors:
0–15: old, comparatively frequent classes;16–28: new, comparatively rare classes;1 means the event is active in that frame;1.The dataset ZIP contains a nightwatch_data/ directory:
| File | Shape | Meaning |
|---|---|---|
train_embeddings.npy | (640, 24, 48) | labeled training embeddings |
train_labels.npy | (640, 24, 29) | training multi-hot labels |
train_domain_ids.npy | (640,) | training microphone/venue IDs |
train_scene_ids.npy | (640,) | training scene identifiers |
validation_embeddings.npy | (160, 24, 48) | labeled validation embeddings |
validation_labels.npy | (160, 24, 29) | validation multi-hot labels |
validation_domain_ids.npy | (160,) | validation domain IDs |
validation_scene_ids.npy | (160,) | validation scene identifiers |
test_embeddings.npy | (360, 24, 48) | unlabeled test embeddings |
test_scene_ids.npy | (360,) | canonical test order |
metadata.json | — | class names and dataset contract |
Load all NumPy files with allow_pickle=False.
The test rows are deliberately interleaved. The public/partial leaderboard uses
144 familiar-domain scenes. The final/complete leaderboard uses 216 scenes from
shifted, previously unseen domains. Split membership is hidden.
Upload a ZIP archive containing exactly one root-level file:
submission.zip└── predictions.npypredictions.npy must be a C-contiguous NumPy array with:
float32;(360, 24, 29);[0, 1];test_embeddings.npy / test_scene_ids.npy;0 through 28.Example:
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())Additional files, folders, symbolic links, other dtypes, malformed arrays,
NaN/Infinity, and values outside [0, 1] are rejected and receive score 0.
Each leaderboard split is scored independently using:
0–15;16–28;0.5.For one split:
composite = 0.35 × old_macro_AP + 0.35 × new_macro_AP + 0.30 × temporal_micro_F1@0.5score = 100 × compositeThe score is between 0 and 100. There are no separately configured platform
subtasks. During the competition, the visible score is computed only on the
partial split; the complete split determines the final result.
Average precision rewards good probability ranking, while temporal F1 also
requires calibrated probabilities. A model that ranks events correctly but
never crosses 0.5 will lose the F1 component.
Only the submitted array is evaluated: participant code is not executed. The
evaluator is designed for the platform limit of 30 seconds and 3 GiB RAM.
The task is an original, deterministic synthetic simulation. See SOURCE.md
and the dataset metadata for provenance and generator version.