Autor: Mihai Nan
Macarie este pasionat de puzzle-uri. Îi place să stea ore întregi în fața mesei, să întoarcă piesele pe toate părțile și să refacă imaginea ascunsă.
Sora lui, AntONIA, este pasionată de imagini, tehnologie și jocuri de logică. Într-o zi, AntONIA decide să-i pregătească lui Macarie o colecție de puzzle-uri speciale. Numai că nu vrea să fie prea ușor: pentru fiecare puzzle, amestecă piesele corecte cu câteva piese greșite.
Unele piese greșite provin din alte imagini, altele sunt transformate, rotite sau modificate astfel încât să pară convingătoare.
AntONIA îi pune lui Macarie în față câte 12 piese și îi spune:
„Doar 9 dintre ele aparțin imaginii. Celelalte 3 sunt capcane. Găsește piesele bune și pune-le la loc!”
Macarie acceptă provocarea, dar puzzle-urile sunt multe. Are nevoie de un program care să îl ajute să refacă imaginile.
În dataset există două tipuri de puzzle-uri:
3 × 3.
Indiferent de tipul pieselor, cerința rămâne aceeași: pentru fiecare test sunt oferite 12 piese, dintre care exact 9 aparțin imaginii originale și 3 sunt distractori. Răspunsul trebuie să conțină cele 9 piese corecte în ordinea pozițiilor din grila 3 × 3.
Pentru fiecare test, primești exact 12 piese de puzzle.
Dintre acestea:
Imaginea originală a fost împărțită într-o grilă de forma .
Trebuie să alegi cele 9 piese corecte și să le plasezi în ordinea în care trebuie așezate în grilă.
Ordinea pozițiilor este prezentată în următoarea figură:
Așadar, răspunsul pentru un test este o listă cu 9 piese:
0;1;8.Cele 3 piese care nu apar în răspuns sunt considerate distractori.
Datele sunt organizate în trei directoare:
train/val/test/Fiecare director conține un fișier CSV și un folder samples/:
puzzle_dataset.zip├── train/│ ├── train.csv│ └── samples/├── val/│ ├── val.csv│ └── samples/└── test/ ├── test.csv └── samples/În folderul samples/, fiecare test are propriul director, identificat prin sample_id, care conține cele 12 piese ale puzzle-ului.
train/├── train.csv└── samples/ ├── sample_000000/ │ ├── piece_00.png │ ├── piece_01.png │ ├── ... │ └── piece_11.png ├── sample_000001/ │ ├── piece_00.png │ ├── piece_01.png │ ├── ... │ └── piece_11.png └── ...Fișierele CSV conțin lista pieselor disponibile pentru fiecare test.
În train.csv și val.csv sunt disponibile și coloanele cu soluția corectă:
target_0, target_1, ..., target_8Acestea reprezintă cele 9 piese corecte, în ordinea în care trebuie așezate în grila 3 × 3.
De asemenea, în train.csv și val.csv există coloanele:
distractor_0, distractor_1, distractor_2care indică cele 3 piese care nu aparțin imaginii.
În test.csv, coloanele target_* și distractor_* nu sunt disponibile.
Participanții trebuie să trimită un fișier submission.csv cu următorul format:
sampleID,subtaskID,piece_00,piece_01,piece_02,piece_03,piece_04,piece_05,piece_06,piece_07,piece_08test_000000,1,piece_08.png,piece_00.png,piece_07.png,piece_05.png,piece_09.png,piece_06.png,piece_01.png,piece_11.png,piece_02.pngtest_000001,1,piece_03.png,piece_10.png,piece_01.png,piece_05.png,piece_07.png,piece_00.png,piece_11.png,piece_02.png,piece_08.pngPentru fiecare test trebuie completate exact 9 piese.
Coloanele piece_00, ..., piece_08 reprezintă piesele alese, în ordinea pozițiilor din puzzle, de la stânga la dreapta și de sus în jos.
Pentru fiecare test, scorul are două componente.
Se verifică câte dintre cele 9 piese alese aparțin imaginii originale.
Dacă numărul de piese corecte alese este mai mic decât 7, atunci:
selection_score = 0altfel:
selection_score = numărul de piese corecte alese / 9Această componentă valorează 40 de puncte:
selection_points = 40 × selection_scoreSe verifică câte dintre cele 9 piese sunt puse exact pe poziția corectă.
arrangement_score = numărul de piese aflate pe poziția corectă / 9Această componentă valorează 60 de puncte:
arrangement_points = 60 × arrangement_scoreScorul pentru un test este:
score = 40 × selection_score + 60 × arrangement_scoreScorul maxim pentru un test este:
100 puncteScorul final al unei soluții este media scorurilor obținute pe toate testele.
Dacă pentru un test sunt alese 8 piese corecte din 9, iar 6 dintre ele sunt puse pe poziția exactă, atunci:
selection_score = 8 / 9arrangement_score = 6 / 9Scorul este:
40 × 8/9 + 60 × 6/9 = 75.55...