Programozói elődöntő feladat 2016
Főtámogató
Arany fokozatú támogatók
Szervezők
BeeSmarter #4 elődöntő feladat (24h) Feladat előzménye Egyre több olyan mobil platformon futó szoftver érhető el a különböző alkalmazásboltokból, amely
egy adott nyelven írott, vagy elhangzó szöveg fordítását végzi. Ez lehetséges a szavak szintjén, de a
jelenleg elérhető fordítók akár teljes mondatok fordítását is elvégzik egy másik tetszőleges nyelvre. Ezen alkalmazások között is speciálisak azok, amelyek egy képen látható feliratot, szöveget fordítanak
le, a képen látható szöveg felismerését követően. Nemrégiben olyan megoldások váltak elérhetővé, amelyek a feliratot a készülék képernyőjén megjelenítik, az eredeti kontextusban, tehát lecserélve a képen az idegen nyelvű feliratot a fordítással – mindezt valós időben. Ehhez a problémához csatlakozva ad kiegészítő megoldást a BeeSmarter #4 elődöntőjében csapatod azzal, hogy alkalmazást készít a következő problémára.
A feliratban szereplő karakterek felismerésén túl egy, a kényelmet szolgáló funkciója az applikációnak a felirat betűtípusának meghatározása. Amennyiben a pontos betűtípus meghatározásra kerül, úgy a fordítást is azonos betűtípussal lehet megjeleníteni, ezáltal megtartva a képi világ kohézióját.
A feladat tehát egy adott fényképen szereplő felirat betűtípusának meghatározása, bizonyos megszorítások mellett, amelyet a feladat részletes leírásában lehet elolvasni. Jó munkát és sok sikert az applikáció elkészítéséhez!
A feladat Adott egy fénykép, amelyen egy felirat található tetszőleges színnel. A felirat lokalizálása és a feliratban
szereplő karakterek elemzésének segítségével kell eldönteni, hogy a feliratban milyen betűtípussal szerepelnek a karakterek.
A limitált 60 órás időkeretre tekintettel, a megoldhatóság érdekében a következő megszorításokat tesszük:
A képen szereplő felirat csak egyetlen betűtípust használ.
A lehetséges betűtípusok halmazát szűkítettük, a feladatleírás végén megadjuk, hogy milyen betűkészleteket használtunk.
A betűtípusokból csak a normál, dőlt és félkövér verziókat használtuk (például aláhúzottat
nem), egy feliratban mindig csak az egyiket. Ezen változatok mindegyikét fel kell ismerni, azonban azt nem kell eldönteni, hogy az adott betűtípus normál / dőlt / felkövér.
A felirat orientációja szerint a vízszintestől nem tér el jelentősen, maximálisan 30° lejtést/emelkedést engedünk meg.
A felirat nem szerepel tükrözve.
A feliratban szereplő karakterek kitöltöttsége 100%. A felirat értelmes szavakat is tartalmazhat.
A feliratban használt karakterek a latin abc karakterei, numerikus karakterek, alapvető írásjelek. Unicode tartomány: U+0020 … U+U007E.
A felirat egy, vagy több szóból áll, legfeljebb két sorban.
A feliratban a karakterek nincsenek fedésben, a karakterköz, valamint a sorköz azonban lehet nagyobb a szokásosnál.
Mind a kiadott teszthalmazt, mind a szerveren a verseny ideje alatt illetve a verseny végén használt kiértékelő halmazt azonos módon rögzítettük. A rögzítés menete, szimulálva éles használati esetet a következők szerint történt:
o Mobil eszközzel fényképeztünk (fekvő orientációval) olyan fekete feliratokat, amelyeket projektor segítségével vetítettünk ki fehér falfelületre. (Ennek ellenére a módszer nem garantálja, hogy fehér alapon fekete karakterek találhatók.)
o A használt módszer miatt a kép szemcsés, homályos (nem pontosan történt a fókuszálás), illetve (enyhén) bemozdult lehet.
o A képeket utómunkával vágtuk és átméreteztük úgy, hogy HD 1080p felbontású legyen. Az átméretezés során az oldalarányon nem torzítottunk.
o A képek JPEG képek.
Az elkészült algoritmusra vonatkozó megkötések
A kiértékelés folyamatának a mobilkészüléken kell történnie, és az alkalmazásnak reszponzívnak kell lennie - a kiértékelés nem tarthat tovább, mint 4 másodperc.
Az elkészült programra vonatkozó megkötések
A verseny elődöntőjére olyan szoftvert kell beadni, amely a következő feltételeknek is megfelel (az automata kiértékelés végrehajtása érdekében).
Az elkészült szoftvernek két üzemmódja legyen a következők szerint:
Teszt mód, amely során a szoftver egy TCP/IP kapcsolat felett képeket fogad és a képeken látszódó feliratokról eldönti, hogy milyen betűtípussal íródtak.
o A teszt módhoz legyen lehetőség megadni az automata kiértékelő IP címét egy szövegbeviteli mezőben, majd a tesztelés gombnyomásra induljon el.
o A tesztelés során minden egyes képre választ kell generálni, amelyet a tesztszervernek kell visszaküldeni.
o A szerver a teszt végén egy results.txt fájlban összegzi a megadott válaszokat, a fájlt lehet felküldeni kiértékelésre az elődöntő ideje alatt.
o Kérjük a teszt mód protokollját jól implementálni, mivel a megoldás kiértékelését
automatikusan végezzük el. Ennek érdekében a feladat mellett megtalálható egy teszt-szerver implementáció.
Használati üzemmód, amely során fénykép készíthető és a fénykép elemzésével a képen látható felirat betűtípusát a szoftver eldönti.
o A kép készítése felhasználói interakcióra történjen. o Az eredmény megjelenítése egyértelmű legyen.
Tesztszerver protokoll a teszt módhoz A csatlakozás a 8888-as porton történik.
Egy példa kommunikáció: Szerver: BeeZZZ 1.0 SERVER HELLO Kliens: BeeZZZ 1.0 CLIENT HELLO Szerver: SEND YOUR ID Kliens:
Szerver: ID ACK – IMAGES LEFT: nnn Itt nnn jelenti a hátralevő, kiértékelendő képek számát. A szám tetszőleges pozitív egész szám lehet. Kliens: RQSTNEXTPICTURE Szerver: A képfájlt átküldés előtt a következő módon kódoljuk. A képfájl minden egyes bájtját, kétjegyű hexadecimális számként – bájtonként küldi át a szerver. Az első két karakter „>>” a záró karakterek: „<<”. Kliens: Szerver: FONT ACK – IMAGES LEFT: nnn Utolsó tesztadatra adott válasz után: Szerver: FONT ACK – NO IMAGE LEFT - GOODBYE A szerverprogram a megadott válaszokat kiírja a results.txt fájlba.
Verseny ideje alatti kiértékelés Az elődöntő ideje alatt 10 percenként kiértékeljük a csapatok teljesítményét, megadva, hogy hány kép esetén határozták meg pontosan a rajta szereplő felirat betűtípusát.
Ehhez a kiadott szerverprogram által létrehozott results.txt fájl tartalmát kell feltölteni a verseny weboldalán.
Végleges pontszám
A pontok 20 %-át az alapfeladat teljesítése – a felhasználói interakcióra történő kamerakép rögzítése, valamint a teszteléshez szükséges interfész implementálása jelenti.
A pontok 80%-át az applikációval elérhető betűtípus detekció pontossága alapján lehet kapni, amelyet automatikusan értékelünk a kiértékelő halmazunk segítségével. Ezek után a csapatokat a következő arány alapján rangsoroljuk:
Helyes döntések száma . Fotók száma A rangsor alapján a pontokat a következő formulával alapján számítjuk: Beadott megoldások száma - Rangsorban helyezés +1 80 . Beadott megoldások száma Például ha egy applikáció az alapfeladatot teljesíti, akkor már a 20%-ot elérte. Ha a detekciót sikerül
implementálnia, és 150 fotóból 90-et helyesen detektál, amivel a rangsorban a 6. helyet szerzi meg, akkor itt például 20 regisztrált csapat esetén 60%-ot ér el, és az összpontszáma 20+60=80% lesz.
Használt betűtípusok listája A tesztek során előforduló lehetséges betűtípusokat a következő táblázat adja meg. Minden egyes felsorolt betűtípushoz kiadunk ttf illetve otf fájlokat, aminek felhasználásával tetszőleges számú tanuló / tesztelő / stb. képet lehet létrehozni.
A betűtípusokat névvel azonosítjuk, tehát a kiértékelésnél a név egyezését nézzük. A betűtípusok normál / dőlt / félkövér változatait nem különböztetjük meg, de a Sans és Serif változatokat igen! Név
Fájlnév
Akiza Sans
AkizaSans*.ttf
Anonymus Pro
AnonymusPro*.ttf
Autonym
Automnym.ttf
Averia Sans
AveriaSans*.ttf
Averia Serif
AveriaSerif-*.ttf
Comic Relief
ComicRelief*.ttf
Courier Code
CourierCode*.ttf
Coval
Coval*.ttf
Crimson
Crimson*.ttf
Cursive Sans
CursiveSans.ttf
Cursive Serif
CursiveSerif.ttf
Dancing Script
DancingScript*.ttf
Deja Vu Sans
DejaVuSans*.ttf
Deja Vu Serif
DejaVuSerif*.ttf
Fanwood
Fanwod*.otf
Fibel Nord
FibelNord*.ttf
Free Universal
FreeUniversal*.ttf
GFS Artemisia
GFSArtemisia*.ttf
Katamotz Ikasi
KatamotzIkasi.ttf
Khmer OS Classic
KhmerOSclassic.ttf
Liberation Sans
LiberationSans*.ttf
Liberation Serif
LiberationSerif*.ttf
Libre Bodoni
LibreBodoni*.ttf
Petit Formal Script
PetitFormalScript-Regular.ttf
Quattrocento
Quattrocento-Regular.ttf
Segoe UI Symbol
SegoeUISymbol.ttf
Beadási információk A beadott megoldásokat tesztelését emulátorban/szimulátorban, illetve fizikai eszközökön fogjuk tesztelni a következők szerint:
Android 6.0.1 rendszeren, Nexus 5-ös és 6-os telefonokon iPhone 6 készülékeken, iOS 9.2.1 használatával
Beadandó a teljes forráskód, azaz a fordításhoz szükséges összes fájl, hogy az alkalmazást mi magunk
is képesek legyünk lefordítani. Továbbá kérjük az lefordított alkalmazás fájlt is. Mindezt egyetlen zip fájlban, a verseny weboldalán feltöltve kell beadni.