Colorize
Languages en svDin kompis Leo gillar att ta bilder med sin nya kamera. Efter att ha tagit en massa bilder insåg han att några av dem var skadade och han kunde bara spara gråskaleversioner. Han vill nu färglägga dessa bilder så att de ser ut som originalen.
För att göra detta vill han träna en AI-modell på de oskadade bilderna och använda den för att färglägga de skadade. Det enda problemet är att Leo inte kan så mycket om AI, så han har bett dig om hjälp.
Input
Attachments innehåller följande filer:
-
train.zip - En zip-fil med oskadade bilder, tillsammans med deras skadade version.
-
test.zip - En zip-fil med de skadade bilderna som Leo vill reparera.
-
baseline.ipynb - En enkel grundlösning på problemet. Den lägger till sin egen källkod i slutet av inlämningen.
-
print_source_code.py - Ett hjälpskript för att skriva ut din källkod som en kommentar, användbart för att inkludera din lösning i inlämningsfilen. Fungerar inte i en Jupyter Notebook.
-
LICENSE.txt - Licens- och attributionsmeddelande för bildresurserna (CC BY-NC 4.0).
Bildresurser i denna uppgift är licensierade under CC BY-NC 4.0, och attributionsposter underhålls av arrangörerna.
Output
För varje skadad bild i test.zip, skriv ut dina förutsagda färgvärden för vissa pixlar som heltal. Värdena kan separeras med mellanslag eller radbrytningar.
Exakt hur du ska göra, vilket är implementerat i baseline.ipynb, är som följande:
-
Läs testbilder i sorterad filnamnsordning.
-
För varje bild, loopa över pixlar med x först och y sedan.
-
Behåll bara de pixlar där den löpande räknaren är delbar med 131 (samma regel som baseline.ipynb).
-
För varje behållen pixel, skriv ut R G B.
Varje utskrivet värde måste vara ett heltal i intervallet $0$ till $255$ inklusive.
Scoring
Din lösning kommer att poängsättas baserat på medelkvadratfel (MSE) mellan dina förutsagda färgvärden och originalbildens färgvärden för varje utvärderad pixel i bilden.
MSE beräknas på en mängd samples enligt följande. Låt $N$ vara antalet samples, $g_i$ vara ditt förutsagda värde för den $i$:e posten och $t_i$ vara det sanna värdet från originalbilden. Då,
\[ \text{MSE} = \frac{1}{N} \sum _{i=1}^{N} (g_i - t_i)^2. \]Din poäng ökar linjärt från $0$ till $100$ när din MSE minskar från $666$ till $567$. Specifikt ger en MSE på $666$ eller högre $0$ poäng, och $567$ eller lägre ger $100$ poäng.
Mer formellt beräknas poängen med formeln:
\[ \text{Poäng} = 100 \cdot \max \left(0, \min \left(1, \frac{666 - \text{MSE}}{99} \right)\right) \]Testning
Under tävlingen kommer din lösning att poängsättas på $30\% $ av datan i test.zip. Efter att tävlingen är slut kommer alla lösningar att om-poängsättas på de återstående $70\% $ av datan. Det garanteras att test.zip delades upp i de två mängderna likformigt slumpmässigt och utan överlapp mellan mängderna. Detta innebär att din poäng under tävlingen bör ses som en stark indikator på din slutliga poäng, men den kan skilja sig om du överanpassar (overfit).
