Diplomaterv
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer Srancsik Bálint Témavezető: Takács György
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar 2006.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
3
Nyilatkozat Alulírott Srancsik Bálint, a Pázmány Péter Katolikus Egyetem Információs Technológiai Karának hallgatója kijelentem, hogy ezt a diplomatervet meg nem engedett segítség nélkül, saját magam készítettem, és a diplomamunkában csak a megadott forrásokat használtam fel. Minden olyan részt, melyet szó szerint, vagy azonos értelemben, de átfogalmazva más forrásból átvettem, egyértelműen a forrás megadásával megjelöltem.
......................................... Srancsik Bálint
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
4
Tartalomjegyzék:
Nyilatkozat ................................................................................................................................ 3 Tartalomjegyzék ....................................................................................................................... 4 Összefoglaló............................................................................................................................... 6 Summary ................................................................................................................................... 7 1. Bevezetés................................................................................................................................ 8 1.1 Vizuális beszéd jelentősége .............................................................................................. 8 2. Beszélő fejek .......................................................................................................................... 9 2.1 Előre tárolt képek............................................................................................................. 9 2.2 Metamorphosis............................................................................................................... 10 2.3 Geometriai arcmodellezés.............................................................................................. 10 3. A fejanimálás korlátai........................................................................................................ 11 3.1 Paraméterezés ................................................................................................................ 12 3.2 Modellfüggőség .............................................................................................................. 12 4. Az MPEG-4 Facial Animation szabvány.......................................................................... 12 4.1 FDP – Face Definition Parameter................................................................................. 13 4.2 FAP – Facial Animation Parameter .............................................................................. 14 4.3 FAPU - Facial Animation Parameter Unit .................................................................... 15 4.4 A küldött és fogadott adat értelmezése........................................................................... 16 4.5 A kódolás irányelve ........................................................................................................ 16 4.6 A dekódolás szabadsága ................................................................................................ 17 5. Előzetes felmérések............................................................................................................. 18 6. A fellelhető fejanimáló rendszerek a feladat tükrében ................................................... 19 7. A saját fej-animációs rendszerünk koncepciója .............................................................. 20 8. Audiovizuális-adatbázis összeállítása ............................................................................... 21 8.1 Audio .............................................................................................................................. 21 8.2 Video .............................................................................................................................. 21 9. Audiovizuális-adatbázis feldolgozása ............................................................................... 23 9.1 Feldolgozás lépései ........................................................................................................ 24 9.2 Feldolgozás értékelése ................................................................................................... 26 9.3 Javítás ............................................................................................................................ 26 9.4 Azonosítás ...................................................................................................................... 27
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
5
9.5 Koordináta-transzformációk .......................................................................................... 28 9.6 Főkomponens analízis (PCA)......................................................................................... 29 10. Hibák felderítése FP reprezentációkkal ......................................................................... 31 10.1 Idő ................................................................................................................................ 31 10.2 Hanghullám.................................................................................................................. 32 10.3 Ellipszis ........................................................................................................................ 33 11. A felhasznált MPEG-4 szabványú fejanimáló rendszer................................................ 33 11.1 Lucia felépítése............................................................................................................. 34 11.2 Lucia mozgása.............................................................................................................. 34 11.3 Log-Lucia konverzió..................................................................................................... 35 11.4 Skálázás és irány .......................................................................................................... 37 12. Lucia tesztelése.................................................................................................................. 38 13. Lucia értékelése ................................................................................................................ 40 14. További paraméterek kinyerése...................................................................................... 40 14.1 A nyelv és az ajkak detektálása .................................................................................... 41 14.2 Az ajak belső pontjainak azonosítása........................................................................... 42 15. Mobilon futtatható fejanimáló rendszer......................................................................... 43 15.1 A modell elkészítése...................................................................................................... 43 15.2 Megjelenítés ................................................................................................................. 44 15.3 Deformálás................................................................................................................... 44 15.4 Animálás....................................................................................................................... 45 16. Következtetés .................................................................................................................... 46 Köszönetnyilvánítás................................................................................................................ 47 Irodalomjegyzék ..................................................................................................................... 47 1. sz. melléklet ......................................................................................................................... 49 2. sz. melléklet ......................................................................................................................... 51 Függelék .................................................................................................................................. 52
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
6
Összefoglaló A diplomaterv a „Siketek beszédkommunikációját mobiltelefonnal segítő eszközök fejlesztése” projekt keretén belül végzett munkámat foglalja össze. Feladatunk a direkt speech-to-animation konverzió megoldása, vagyis hogy pusztán a beszédjelből állítsuk elő a különböző szájállásokat. A fejlesztés időszaka alatt folyamatos törekedtünk az MPEG-4 szabványra, mely leírja a komplett háromdimenziós fej-animációt. Rövid ismertetőt adok a siketekkel és nagyothallókkal végzet felméréseink eredményéről, a kutatás előmenetelét is nagyban meghatározó észrevételekről és megjegyzésekről. A rendszer tanításához audiovizuális-adatbázist készítettünk. A beszámolómban kitérek az adatbázis összeállításának részleteire és az adatbázis feldolgozásának lépéseire. A feldolgozás során a beszélőre festett MPEG-4 szabványú FP-k helyzetét határozom meg, kitérek annak hibáira, illetve, hogy ezek a hibák miből erednek, és hogyan lehet ezeket javítani. Pontosabban kitérek a FP-k azonosítására, illetve a pontosságot növelő koordináta-transzformációkra. A FP-k időbeni vizsgálatának előnyeire világítok rá, illetve, hogy a különböző reprezentációkkal milyen hibák és tulajdonságok figyelhetők és mérhetők meg. Továbbá ismertetem az MPEG-4 szabványú fej animáló rendszerekben szerzett tapasztalataimat. A konkrét Lucia modell felépítéséről számolok be, illetve, hogy annak animálása milyen kihívásokat állított elénk. Hosszabb kitérőt adok a saját és a Lucia paraméterek közti konverzióról. Beszámolok a relatív koordinátarendszerbe való áttérésről, a skálázás és az irány beállításáról. A projektben végzett munkánk során sikerült letesztelnünk az általunk összeállított adatbázis Lucián történő megjelenítésének felismerhetőségét. Megállapításra került a fejanimáló rendszer pontos működésének fontossága. Rövid elméleti hátteret adok további paraméterek kinyerésének fontosságáról, illetve beszámolok az adatbázis ezen elvek alapján történő feldolgozásáról. A dolgozatom utolsó részében egy mobiltelefonon is futtatható modell és OpenGL alapú fej-animáló motor elkészítésének főbb lépéseit foglalom össze.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
7
Summary This paper summarizes my work under „Developing mobile phone equipments as a communication aid for deaf persons” project. Our aim was to solve the direct speech-to-animation conversion, as converting the speech signal to lip movements. During that process we were always about the MPEG-4 standard, which describes the whole 3D face animation. I am going to give a short overview of our test-results which we got by the deaf people and the other footnotes given by them which defined our research. To complete the learing ability of our system we made a special audio-visual database. In my work I am going to mention the parts of building process of this database too, and the steps of its processing. While we made this processing, I am defining the positions of the MPEG-4 standardised FP-s painted on the face of the speaker, I will list their errors moreover, the origins of these errors and the ways how to correct them. I would like to pay more attention how to detect the FP-s in addittion, the coordinate-transformations which increase their precisity. I will focus on the advantages of the examination of the FP-s in time, not mentioned that, what kind of errors and properties can be observed and measured with the different representations. Moreover, I will show my experiences about MPEG-4 facial animation systems. I will represent the building-up of the modell called Lucia and the challenges which we faced during its animation. I would like to give a longer description of the conversion between Lucia’s and our parameters, put into relative coordinate-system and the setting up of the scaling and directing. During our projectwork we successfully tested the visualisation of the database made by ourselves on Lucia. We recognised the importance of the precise working of facing animation system. In nutshell, I am giving a theoretical overview about the importance of getting more parameters and the process of the database following these instructions. In the last chapter of my paper I would like to summarise the know-how of a model can be executed on a single mobile phone and the preparation of an OpenGL based facial animation engine.
8
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer 1. Bevezetés
A vizuális beszédszintézis az utóbbi években jelentős fejlődésnek indult. Lépten-nyomon találkozunk beszélőfejekkel, gondoljunk csak az animációs filmekre, játékokra vagy Internetes virtuális lényekre. Ezek szerepköre azonban jórészt a szórakoztatás köré összpontosulnak. A mi feladattunk az, hogy a szórakoztatást háttérbe szorítva, egy olyan szabványos rendszert dolgozzunk ki, mely alkalmas a hallássérültek beszédkommunikációjának fejlesztésére. Konkrétan egy olyan beszélőfej működtetését kell megoldani, mely képes a direkt speech-to-animation konverzióra, vagyis közvetlenül a beszédjelből állítja elő a szájállásokat elég pontos ahhoz, hogy arról a siket illetve nagyothalló emberek a szájmozgást le tudják olvasni, ezáltal meg tudják érteni a beszédet. Ezt egy olyan eszközön kell megvalósítani, mely kis helyet foglal, elég mobil ahhoz, hogy a felhasználó bárhová magával tudja vinni, tehát mindig kéznél van. Erre legalkalmasabb eszközök a mobiltelefonok, mert manapság már minden embernek van egy a zsebében, viszonylag olcsók, és egyre nagyobb teljesítményűek jelennek meg a piacon. De első megközelítésben a PC-s környezetet kell kialakítani a tervezés bonyolultsága és tesztelhetősége miatt. A feladatmegoldás során nem hagyhatjuk figyelmen kívül az MPEG-4 szabvány fejanimálásra vonatkozó pontjait. A rendszer kialakításában többen vettünk részt. Minden résztvevőnek meg volt a konkrét feladata, azonban ezek a feladatok sokszor keveredtek vagy megoldásuk több embert érintett. Heti
rendszeressége
történtek
egyeztetések
a
munkafolyamatok
értékeléséről
és
előrehaladásáról. Ezért egy kicsit mindenki magáénak érzi a rendszert. A teljesség kedvéért minden fontosabb rendszerelemre kitérek a dolgozatomban. A kizárólag általam önállóan elvégzett feladatok (marker követés, fejmodell működtetés és létrehozás, paraméter kinyerés, stb.) esetén részletesebben leírást adok a választott megoldásokról és bővebben indoklom azokat. 1.1 Vizuális beszéd jelentősége A beszéd vizuális csatornája rendkívül fontos lehet olyan esetekben, ahol pusztán a beszédhang alapján történő érthetőség alacsony. Gondoljunk csak a zajos környezet, például egy zsúfolt utcára vagy tömött villamosra. Ettől azonban nagyobb jelentősége van a vizuális beszédnek a halláskárosultak körében. Hiszen a siketek semmilyen információt sem kapnak magából a beszédből, csakis vizuális úton. (Elsőként 1954-ben Sumby és Pollack írt arról, hogy mekkora információt lehet szájról olvasással megérteni a jel-zaj függvényében [1].) A másik fontos dolog, hogy az emberi arc rendkívül jól visszaadja az érzéseket. A száj görbülete, a szemöldök összehúzása vagy a homlok ráncolása a hozzá tartozó hang nélkül is képesek visszaadni a karakter érzelmeit. Ezen felül megemlítendő, hogy a képi információ a beszélőről sokkal több tulajdonságot hordoz, mint pusztán a hangja. Biztosabban kiderül a beszélő személye, neme vagy épp kora.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
9
Ezek a megfontolások vezetettek olyan kutatási projektekhez, melyek komolyabban foglalkoznak a beszéd vizuális szintézisével. 2. Beszélő fejek Már a legelső rajzfilmekben is találkoztunk arcanimálásokkal. Ezek az animálások azonban csak arra szolgáltak, hogy élethűvé és ezáltal élvezhetővé tegyék a rajzfilmek. Itt még nem beszélhetünk igazán vizuális beszédszintézisről, mert kizárólag a rajzoló művészre volt bízva a száj heurisztikus és leegyszerűsített mozgása, nem is beszélve arról, hogy a hanghoz történő szinkronizálás is manuálisan történt. A grafikus számítógépes felület megjelenése azonban lehetővé tette a tudományosabb és pontosabb fej-animációt. Számos eljárás dolgoztak ki az emberi arc számítógép által vezérelt mozgatására. [2] 2.1 Előre tárolt képek Az egyik megfontolás, hogy eredeti képeket tárolnak el beszélő arcának részleteiről. (2.1 ábra) Ezeket a részletek úgy „mozgatják”, hogy a beszédnek megfelelő képrészleteket cserélgetik. Tehát lényegében előre tárolt képrészleteket cserélgetnek az emberi arcon. Erre egy tipikus példa az egyes vizémák megjelenítése. (A vizémák az egyes fonémáknak az arcon megjelenő alakját jelentik; ezek száma a magyar beszédben tizenhét. [3]) Például az „erő” szót úgy jelenítik meg, hogy a fej-animációs rendszerben a szájat ábrázoló képrészletet először az „e” fonémának megfelelő vizémára cserélik, majd az „r”-nek megfelelőre és végül az „ö”-nek megfelelő vizémát mutatják egy kicsit jobban kitartva (így lesz belőle „ő”). Ez a megoldás erősen korlátozott, hiszen nincsen mód arc részletesebb pontjainak mozgatására, illetve hogy ezek egymástól függetlenül mozogjanak, nem is beszélve arról, hogy a vizémák közti átmenetet csak a képek drasztikus növelésével lehet jól megoldani.
2.1 ábra: Előre tárol képekkel történő fejanimálás
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
10
Azonban ez a megoldás is jó lehet például olyan esetekben, ahol az egyes arckifejezések által kiváltott reakciókat vizsgálják, hiszen könnyen állítható és élethű. 2.2 Metamorphosis Létezik egy másik érdekes megoldás az eredeti fényképpel történő fejanimálásra: a metamorphosis, röviden morph. A morpholás lényege, hogy pixel alapú képeken olyan transzformációkat hajtsanak végre, mely lehetővé teszi két kép „átlagának” kiszámítását. (2.2 ábra)
2.2 ábra: Két kép közti morpholás 0-ás, 0.33-as, 0.67-es és 1-es súlytényezővel
Ha a két képen ugyan az a beszélő látható (esetleg külön vizémákkal), ekkor ez a megoldás alkalmas lehet a vizámák közti átmenetek reprezentálására azáltal, hogy más-más súlytényezőket állítanak be a két képre, ezzel mint egy időbeni interpolációt képezve a két szájállás között. Az újabb morphológiai eljárások lehetővé teszik egyetlen kép deformálását célkép nélkül. [4] Lényege, hogy az eredeti képeken kulcspontokat definiálnak és ezek környezetében lévő pixeleket mozgatják (deformálják) a megfelelő morphológiai súlytényezőkkel. Előnye, hogy rendkívül élethű beszélőt lehet vele animálni, azonban még mindig nehéz paraméterezni, a száj belső részeit rosszul közelíti és három dimenzióban megvalósíthatatlan. 2.3 Geometriai arcmodellezés Az előző eljárások hátránya főként a modell flexibilitásának hiánya volt. Vagyis hogy az arc egyes részeit nehéz külön-külön mozgatni. Ennek a problémának a kiküszöbölésére jöttek létre a geometriai alapú modellek. Lényegük, hogy az emberi arcot geometriai építőkövekből rakják össze, olyan vertexekből és polygonokból, melyek jól közelítik a fej alakját. (A térben elhelyezkedő pontokat nevezzük vertexeknek, míg a vertexek által kifeszített három, négy vagy több oldalú felületeket polygonnak.) A geometriai megfontolásnak köszönhetően az építőelemek mérete, elhelyezkedése és, adott esetben, a kapcsolódási pontjaik könnyen változtathatók lettek, ezáltal paraméterezhető lett a „talking head”. Elsőként 1982-ben Parke használta ezt a módszert a fejanimálásra [5]. Az ő modellje 800 négyszögletű polygonból állt, mely az arc részletesebb részeit is (szemek, szemöldök, fogak és
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
11
ajak) tartalmazta. (2..3 ábra) Az arc mozgatása úgy valósult meg, hogy körülbelül 50 paraméterrel mozgatta a verexeket, ezáltal a polygon felületek is deformálódtak. Ezt a deformációt használta fel a fej animálására. Parke a paraméterek meghatározásaira nem használt anatómiai megfontolásokat, inkább megfigyeléseken alapultak. Ezért Waters 1987-ben kidolgozott egy izommozgási sémát, melyet alkalmasnak talált az arckifejezések reprezentálására. [6] A módszer kiforrottabbnak tűnt, azonban alkalmatlannak volt az ajakmozgások reprezentálásához az izomzat bonyolultsága miatt. Parke direkt paraméterezési modellje megvalósíthatóbbnak látszott. Emiatt szinte az összes fejanimáló rendszernek ez lett az alapja.
2.3 ábra: Parke 800 polygonos modellje
3. A fejanimálás korlátai A huszadik század végére két részre lehetett osztani a fejanimálással (Facial Animation) foglalkozók körét; művészekre és kutatókra. [7] A kutatók leginkább a modellezési és animálási technikák kidolgozásán fáradoztak. Mások az arc jellegzetes pontjainak követését tartották szeme előtt. Megint mások a gesztusok és a vizuális beszéd szintézisével foglalkoztak. A művészek leginkább a gyors és praktikus megoldásokat szerették a jó minőségű arc animáció megteremtéséhez a filmekben, játékprogramokban és webes alkalmazásokban. Számukra a Facial Animation csak egy része a projektnek, így nem fordítanak a kellőnél több időt annak tanulmányozására. Őket csak az elérhető legjobb megoldások érdeklik. Elérhető azt jelenti, hogy a grafikai szerkesztő szoftverekbe be van építve. Sajnos a két fél nem egy nyelvet beszél. Minden fejlesztő a saját, már megszokott modelljét használja, azt a saját paraméterezésével vezérli. Igen kevés olyan publikáció jelent meg, amit később a szórakoztatóiparban használtak, és még kevesebb szórakoztató ipari eljárást publikáltak szaklapokban.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
12
3.1 Paraméterezés Két paraméterezési osztályba lehetett sorolni a fejanimáló rendszereket vezérlésük alapján: alacsony és magas szintű paraméterezésre. [7] Az alacsony paraméterezés azt jelenti, hogy a paramétereket a direkt arcmozgatás megvalósítására használják. Ezek a paraméterek egy osztályával írják le a vizuális beszédet, vagyis a paraméterek időegységekben történő változása alakítja a fejmodell megjelenését. Ilyen módszerrel használnak a már említett direkt paraméterezés vagy az izomsémák alapján működő rendszereknél. Magas szintű paraméterezés esetén a paraméterek egy sorát vezéreljük, ezáltal komplexebb, előre beállított mozgásokat lehet elérni. Erre a legjobb példa a szórakoztató iparban megfigyelhető manuális paraméterváltoztatás, mely ugyan időigényes, ám igen élethű mozgásokat tud eredményezni. A legtöbb háromdimenziós modellező és animáló szoftverbe ezt úgy valósítják meg, hogy az idő tengelyen kulcs kockákat határoznak meg, és ezen kulcsok között interpolálgatnak különböző algoritmusok alapján. Szintén ebbe az osztályba tartoznak az olyan text-to-speech rendszerek, melyek előre definiált vizémák közti átmenetekkel valósítják meg a szájmozgást. 3.2 Modellfüggőség Ám nem csak az a probléma, hogy ilyen sokrétű a paraméterezések osztálya, hanem az is előfordulhat, hogy az ugyan olyan paraméterezést használó rendszerek sem kompatibilisek, például a paraméterek számát vagy értelmezési tartományát nézve. Ezen rendszerek másik hátránya, hogy modellfüggők lettek. A paraméterek nem egy általános fejanimáló nézethez vagy szabványhoz lettek alakítva, hanem az adott modellhez. Ezek más fejformára vagy karakterre nem is működnének. Egyre nagyobb igény lett a Facial Animation valamilyen szabványosítására, főleg a paraméterezés sokszínűségének általánosítása és a modellfüggőség feloldása miatt. Az első és a mai napig egyetlen fej-animációs szabvány az MPEG-4 FA. 4. Az MPEG-4 Facial Animation szabvány Az MPEG (Moving Picture Expert Group) szabványok legfőbb célja a hang és videó jelek tömörítése. [7] A tömörítés alapkövetelménye a hatékonyság növelése az élethűség megtartása. A multimédia-alkalmazásokban már elterjedt az MPEG-2 kódolás. Az MPEG-4 kódolás célja az alacsonyabb sávszélességen történő audio-video átvitel. Az MPEG-4-et nem csak nagy tömörítésre alakították ki, hanem figyelembe vettek olyan multimédia alkalmazásokat is, mint 3D-s jelenetek, animációk, szintetizált hangok, képek, szövegek, grafikák külön vagy akár együttes kezelése és élethű megjelenítése.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
13
Az MPEG-4 szabvány egyik legösszetettebb része a fej és az emberi test megjelenítése és mozgatása (FBA - Face and Body Animation). Az FBA-ra vonatkozó szabványrész leírja az arc és a test alakjának és mozgásának kódolási alapelveit. Az FBA definiálása során igen összetett problémával álltak szemben a szabvány készítői. Hogyan valósítsák meg a kódolási és dekódolási folyamatokat. Hiszen rengetek formában és rengetek modellen kell a kódolási folyamatok végrehajtani a multimédiában. Nincs két egyforma arc. Főleg ha az arcok közé bevesszük a különféle virtuális lények és állatok arcait. Mivel az MPEG-4-et kifejezetten a multimédiás alkalmazásokhoz fejlesztették, így fel kellett készíteni azok sokszínűségére. Végül is a problémát úgy oldották meg, hogy más MPEG szabványoktól eltérően itt nem adják meg a kódolási és a dekódolási eljárást, csak a küldött adat formáját és értelmezését határozza meg az MPEG-4 FA. 4.1 FDP – Face Definition Parameter Ahány arc, annyi paraméterezés. Ezt figyelhettük meg a szabvány előtti fejanimáló rendszerekben. Azonban minden arcban van valami közös. Például hogy van szája, szemöldöke, füle, foga, nyelve, orra, stb. Az MPEG-4 FA ezeket a közös tulajdonságokat összegzi. Az arcon 86 darab Feature Point-ot (FP-t) határoz meg, mely a modell alakjának leírására szolgál. (4.1 ábra) Ezen pontok összességét nevezik FDP-nek, vagyis arcdefiníciós paraméternek. Minden MPEG-4 kompatibilis modellen meg kell határozni ezeket a pontokat. A meghatározás azt jelenti, hogy a modell terében elhelyezzük a „Feature Point”-okat.
4.1 ábra: MPEG-4 „Feature Point”-ok; z definiáló és mozgató FP, { csak definiáló FP
A szabvány az arc modelljét az arc normál állapotával írja le. Egy arc akkor van normál állapotban, ha a modell nem mutat semmilyen gesztust, nem formál semmilyen vizémát, nem pislog a szeméven, nem emeli fel a nyelvét. Pontosabban: [7]
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
14
- A koordináta rendszer jobbsodrású, a fej tengelyei párhuzamosak a világ tengelyeivel. - A tekintet z tengely irányában van. - A szemhéjak érintik az íriszt. - A pupilla átmérője az íriszének egyharmada. - Az ajkak összeérnek, a belső ajak vonala horizontális, és egy magasságban van a külső ajakszélekkel - A nyelv lapos és horizontális, a vége a felső és alsó fogak közé esik Az FDP tehát arra szolgál, hogy egy általános elrendezés alapjaként egy egyedi arcot definiáljon. Ezen felül leírja a modell textúráját és alapul szolgál az animáláshoz (hiszen animálás során a „Feature Point”-okat mozgatjuk) Annak köszönhetően, hogy minden MPEG-4 kompatibilis fejmodell tartalmazza ugyan azt a 86 tartópontot (vagy annak legalább egy részét), az animálás megvalósíthatónak látszott. A cél az, hogy a szabványos részeket mozgassuk, hiszen az minden modellre, ha nem is ugyanott van, de ugyan azt az arc részletet definiálják. Az FP-ket az animálás alapján két részre lehet osztani: közvetlenül mozgatott tartópontok és más FP-k által mozgatott tartópontok. Az előbbi pontok halmaza külön-külön mozgatható, tehát nem csak arcdefiniáló szerepe van, hanem animáló is. Ilyen pontok például az ajak körvonalán elhelyezkedő „Feature Point”-okat. Az utóbbi FP-k csak definiálják a fej alakját, de közvetlen mozgásra nem képesek. Mozgásukat más tartópontok adják meg. Ilyen pont például a fülcimpán vagy a fejtetőn elhelyezkedő FP. A kérdés az, hogy mi alapján mozogjanak a tartópontok. Erre hozták létre a FAP-okat. 4.2 FAP – Facial Animation Parameter A FAP-ok feladata, hogy egy vagy több FP-t mozgasson. FAP-ból a szabvány 68-at különböztet meg, melyet 10 csoportba sorol az alapján, hogy az arc mely részét mozgatja. Az első két FAP magas szintű, ez azt jelenti, hogy ezekkel előre beállított komplexebb mozgást lehet kivitelezni. Az első FAP egy megadott vizéma szerinti megjelenést határoz meg. Az angol fonémakészletnek megfelelő vizémákat állítják elő. Használatakor két vizémának a kódját kell megadni. Ebből a két vizémából tud kevert vizémákat előállítani. Nulla súly esetén az első, míg egyes súly esetén a második vizémát eredményezi. Köztes súlyok köztes vizémaátmeneteket képeznek. A második FAP a hat alap érzelem megjelenítésére szolgál, úgy mint öröm, bánat, harag, félelem, undor és meglepetés. Tovább érzelemkifejezéseket az alap érzelmek keveréséből lehet megjeleníteni, hasonlóan a vizémákhoz. A többi 66 FAP alacsony szintű. Ezek abban különböznek a magas szintű FAP-októl, hogy itt a mozgás irányát és amplitúdóját kell megadni, nem pedig egy összetett feladatra előre
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
15
összeszerkesztett mozgásvezérlést kell kezdeményezni. Az alacsony szintű FAP-ok általában egy-egy tartópontot mozgatnak. Előfordulhat azonban olyan mozgás is, amely az összes FP-re hatással van, de közvetlenül csak egy pontot mozgatnak, ilyen például a fej forgatása. Az alacsony szintű FAP-ok prioritása magasabb, mint a magas szintű paramétereké. [7] De hogyan valósul meg a mozgás? Az egyértelmű, hogy a FAP nem reprezentálhat egy koordináta értéket, hiszen minden modell máshol és máshogy helyezkedik el a saját világában, nem is beszélve a méretbeli különbségekről. Akkor a FAP reprezentáljon valamilyen elmozdulást. De mihez képest? Az origóhoz, vagy a modell egy adott pontjához? Mivel mind az origó, mind egy „adott” pont nem elég konkrét, vissza vezeték a problémát az FP-khez. Hiszen ezek a modellt a normál állapában reprezentálja. Ezért a FAP minden esetben a normál állapothoz képesti eltérést adja meg, nem pedig az előzőhöz képest. Ám még mindig problémát okoznak a méretbeli különbségek. Egy nagyobb és egy kisebb fejű modellt még mindig nem lehet jól animálni. Ezért találták ki a FAPU-t. 4.3 FAPU - Facial Animation Parameter Unit A FAPU értékek segítségével lehet feloldani a modell méretbeli különbségéből fakadó kompatibilitási problémákat. A jellegzetes arcpontok távolságából származtathatók. Ilyen távolság például a szemek távolsága, az orr hosszúsága vagy a száj szélessége. (4.2 ábra)
4.2 ábra: FAPU-k származtatása
A FAPU minden modellre egyedi. Ezért a dekódolási folyamat során figyelembe kell venni. Minden FAP-ra meg van határozva, hogy a hat FAPU közül melyikből származtatható az elmozdulása. Az elmozdulás egysége (FAPU) a jellegzetes távolságok 1024-ed része. IRISD=IRISD0/1024 ES=ES0/1024 ENS=ENS0/1024 MNS=MNS0/1024 MW=MW0/1024 AU=10-5 * rad
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
16
Ezek alapján egy közelítést is adhatunk a FAP-ok által generált mozgás felbontására. Ha a paraméterek egészek (ugyan a szabvány ezt nem köti ki, de a legtöbb fejanimáló rendszer egészekkel működik), akkor a mozgás felbontása a FAP-nak megfelelő jellegzetes távolság 1024-ed része, vagyis a FAPU. 4.4 A küldött és fogadott adat értelmezése Minden alacsony vagy magas szintű FAP-ra a következő tulajdonságot definiálja a szabvány: - A FAP sorszáma: Ez lényegében csak a FAP-ok azonosítására szolgálnak. A különböző FAP-okat egytől hatvannyolcig számozza meg. - A FAP neve: Az olvashatóság kedvéért pár karakteres nevet kaptak a FAP-ok. Például close_t_l_eyelid, vagyis csuk_felső_bal_szemhély. - A FAP mozgásának mértékegysége: Azt mondja meg, hogy a FAP mozgása során melyik FAPU-t kell mértékegységként venni. - Irányultság: Megadja, hogy az adott FAP Uni- vagy Bidirekt, vagyis hogy egy vagy két irányba tud-e mozogni. Ez azt jelenti, hogy a normál állapothoz képest hány irányba tudja elmozdítani az adott tartópontot. Ha belegondolunk, az áll az egyirányú, mert a normál állapothoz képest nem lehet jobban összecsukni az állkapcsot, csak lefelé mozdulhat el. Míg a fej forgása kétirányú, hiszen óramutató járásával azonos és ellentétes irányba is lehet forgatni. - Mozgás: Arra szolgál, hogy definiálja az adott FAP-re vonatkozó pozitív amplitúdójú mozgás irányát. Ez lehet fölfelé, lefelé, balra, jobbra, előre, stb. - Csoport: A FAP által mozgatott FP csoportszámát jelöli. Például a 8-as csoport jelöli az ajak külső pontjait. - Alcsoport: Az FP csoportjának alcsoportja. Például 8.4 jelöli a jobb szélső külső ajakpontot. Ennek a táblának megfelelően kell a kódolási és dekódolási folyamatokat végrehajtani. A tábla ismerete lehetővé teszi, hogy egy FAP-ról mindössze a sorszámát és értékét kelljen átküldeni. Például ha az 58-as FAP -128 értéket kap, akkor kiderül, hogy a külső szájszél középső felső pontja az orr és a száj távolságának nyolcadával mozdult felfelé. 4.5 A kódolás irányelve Mint ahogy azt már említettem, az MPEG-4 szabványban nincs meghatározva a kódolási és dekódolási folyamat. Azonban a küldött adat formája igen. Tehát a küldött adathoz kell formálni a kódolásokat. Egyre több kutatás folyik a valós idejű MPEG-4 Facial Animation megvalósításán. Ezek lényege, hogy az eredeti képekből gyorsan nyerjék ki a FP-k pozícióját. [7] A szabvány nem határozza meg a kinyerés során használt algoritmusokat és eljárásokat. A lényegkiemelés
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
17
ugyan úgy lehet hisztogram alapú, mint edge detection bázisú. Sőt, nem is fontos, hogy pusztán az eredeti videojelből nyerjék ki az adatokat. Az arcra festett marker-ek követése ugyan úgy megengedett. Ráadásul ez pontosabb eredményhez vezet. A lényeg, hogy a kódolás után az MPEG-4 alapú FAP-ok legyenek továbbítva a dekódoló felé. 4.6 A dekódolás szabadsága Talán a dekódolás még a kódolásnál is nagyobb szabadságot élvez, hiszen alig van korlátozva a küldött adat feldolgozása. A dekódolás végeredményében csak az FP-hez kell alkalmazkodni, és mint tudjuk, ezek elhelyezkedése elég szabad. Azonban a FAP-ok (és FAPU-k) mégis értelmes korlátok közé szorítják a fejanimálást, legyen az geometriai alapú vagy épp morpholással működő. Ennek következtében nagyobb szabadságot és sokszínűséget adtak a dekódoló rendszereknek. Az MPEG-4 tehát jól definiálja az FP-k mozgását, de viszonylag szabadon hagyja azok feldolgozását. (Részletesebben csak a geometriai alapú rendszerek vezérlésére térek ki, mert a legtöbb Facial Animation megvalósítás ezt a módszert alkalmazza.) A MPEG-4 szabványú geometriai alapú fejanimáló rendszereknél bevett szokás, hogy a lehető legtöbb FP köré definiáljanak hatóköröket. (4.3 ábra) Egy FP csak a saját hatókörén belüli vertexekre hat. Azonban azt már korán észrevették, hogy a távolság arányában érdemes valamilyen súlytényezőt számolni. Ugyanis e nélkül a hatókör szélén elhelyezkedő pontok a szomszédoktól igen eltérő mozgáshoz vezettek, ami a modell szakadozott mozgásához vezetett. Arra is rájöttek, hogy a távolság arányában a súlytényező nem lehet lineáris, ugyanis hasonló szakadozott animációhoz vezetett. Végül is két megoldást használnak: koszinuszos távolság arányt (1) [8], és e-ados éltávolságot (2) [9]. A koszinuszos mozgatás:
(1 − cos((1 − wij =
2
si ) *π ) rj i=1…n; j=1…86
(1)
Ahol wij a j-edik FP által mozgatott, a hatókörben i-edik vertex súlytényezője, si az FP és a hatókörben i-edik vertex Descartes távolsága, rj pedig a j-edik FP hatókörének sugara.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
18
Az e-ados mozgatás: − di 2
wij = e
rj 2
i=1…n; j=1…86
(2)
Ahol wij a j-edik FP által mozgatott, a hatókörben i-edik vertex súlytényezője, di az FP és a hatókörben i-edik vertex éltávolsága, rj pedig a j-edik FP hatókörének sugara.
4.3 ábra: Egy FP és annak hatóköre
A koszinuszos megközelítésnek az a hátránya, hogy például az ajak környékén nem jól működik. Hiszen itt nem alkalmas pusztán Descartes távolságot számolni, ugyanis előfordul, hogy az ajak belső szélének középső alsó FP-je hat a felső szélének középső felső pontjának vertexeire, melyek teljesen külön kell mozgatni. Ezt úgy küszöbölik ki, hogy ezeken a területeken nem hatókört alkalmaznak, hanem felsorolják az FP által mozgatott vertexeket (kihagyják a nem oda tartozókat). Az e-ados megoldás pedig időigényesebb, mert akkor is számol a száj környékén súlytényezőket, amikor arra az adott vertexre nem is kell hat az FP. Mindkét esetben kihívást jelent az FP-k hatókörének (oválisának) megválasztása. 5. Előzetes felmérések A kérdés az, hogy egy ilyen MPEG-4 szabványú fejanimáló rendszer alkalmas-e a siketek számára, arra hogy arról a szájmozgást le tudják olvasni. Ezért felmértük a piacon megtalálható fej-animációs rendszereket, illetve azt, hogy azok mennyire segítik a hallássérültek beszédkommunikációját. (Sajnos az egyes kutatólaborok rendszerei nem publikusak vagy épp nyelvfüggők, így csak néhány, a szórakoztató iparban felelhető fejanimáló rendszert tudtuk tesztelni.) Az interjúk során a siketek és nagyothallók elmondták, hogy ezek a rendszerek nagyon jó grafikával rendelkeznek, igen élethűek, de alkalmatlanok a
19
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
szájról olvasásra. Több programról is kikértük a véleményüket, ám egyik sem felelt meg a legcsekélyebb elvárásaiknak sem. A legnagyobb hibának azt tartották, hogy a modellek „laposan” beszélnek. Vagyis nem nyitják ki eléggé vagy nem kerekítik a szájukat. Szinte az összes modellnél problémát okozott a száj belső részének (fogak, nyelv, torok) kidolgozatlansága, mind grafikailag, mind az animációját tekintve. Ezen kívül több alkalommal tartottunk felméréssel egybekötött interjút, hogy kiderítsük, a rendszert milyen hardveren, milyen grafikával, milyen felbontásban és hogy egyáltalán milyen formában valósítsuk meg. A vizsgálatok alapján a fejlesztési folyamatot is befolyásoló tanulságokat szűrtünk le: [10] Ne legyen feltűnő: A legtöbb hallássérült nem szívesen hívja fel a figyelmet erre a tulajdonságára. Így egy olyan eszközön kell megvalósítani a rendszert, melyet előszeretettel használnak a mindennapi életben. Ezek alapján a mobiltelefon tűnt a legjobb megoldásnak. Szájról olvasás vizuális feltételei: A beszéd szájról olvashatóságának két legfontosabb kritériuma a beszéd sebessége és artikuláltsága. Lassan és jól artikuláltan kell beszélni. Szájról olvasás nyelvi feltételei: A siketek nyelvhasználata eltérő a halló emberekétől, kisebb figyelmet fordítanak a ragozásra vagy a névelőkre. Ehhez mérten kell tervezni a rendszerünket Mobilkészülék kijelzője elegendő: A Sony Ericsson P910-es készülék esetében azt találtuk, hogy felbontása, ami DPI-ben a modern monitorokkal egy kategóriába esik [11], elegendő a szájról olvasáshoz. (A kétjegyű számokat 80-90%-ban felismerték) 2D vagy 3D: Felméréseinkből arra következtettünk, hogy egy háromdimenziós modellre lenne igény az árnyékok és színáttünések miatt. A siketek az életben mindig szemből olvasnak szájról, számukra ez a nézet az ideális. Tehát elegendő lenne egy 3D-s modell szemből, ami lényegében csak 2D-ben mozog. 6. A fellelhető fejanimáló rendszerek a feladat tükrében Értelemszerű, hogy a rendszerelképzelésünk elemei automatizáltak kell hogy legyenek. Minden manuális beavatkozást ki kell zárni, így az (ugyan mutatós) manuális paraméterező rendszereket elvetettük. Két kutatási irány létezik a feladat megoldására: a vizuális text-to-speech és a speech-toanimation. A legtöbb vizuális text-to-speech rendszer a magas szintű paraméterekkel történő vezérlést használja, hiszen könnyedén megvalósíthatja a szájmozgást. Ha a rendszer már képes a szavakat
megfelelő
fonémákká
alakítani,
onnantól
egy
egyszerű
fonéma-vizéma
megfeleltetéssel már kész is a szájmozgás. [12] Azonban egyrészt a text-to-speech dinamikaromlása, másrészt a vizémaátmenetek linearitása miatt a szájmozgás töredezett és
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
20
gépies lesz. Nyílván való, hogy ebben a formában pusztán a szájról történő megértés megvalósíthatatlan. Beskow kutatásai már felismerték, hogy igen bonyolult a megfeleltetés a hanghullámok és a szájállások között. Elég bonyolult ahhoz, hogy ne lehessen konkréten leírni a kettő közti transzformációt. Ezek a rendszerek Neurális hálózatot használnak a konverzióra. [13] A Neurális hálózat egyik tulajdonsága, hogy tanító halmazt kell készíteni a súlyai beállításához. Tehát valamilyen módon jellemezni kell a beszédet. Erre a már felvett és fonéma alapon címkézett adatbázist használtak. A beszélőre markereket raktak, melyeket később lekövettek. A Neurális hálózat végeredményben az akusztikus lényegkiemelést (MFCC) és a beszéd fonéma alapú címkézését tanulta meg. A marker követésnek köszönhetően alacsony paraméterekkel tudták vezérelni a fejanimáló rendszerüket, ezáltal pontosabb szájmozgást elérve. Azonban a rendszer még mindig tartalmazta dinamikaleképzést diszkrét időlépésekre. A rendszer összehasonlították egy olyan Neurális hálózat modell eredményével, melynek kimenete nem fonémák, hanem a markerek helyzete. Azonban a méréseik és tesztelései azt az eredményt mutatták, hogy a második modell ugyan nem tartalmaz diszkretizálást, mégis rosszabbul közelíti az eredeti szájmozgást mint a text-to-speech alapú. [13] A folytonos Neurális hálózatnak az lehetett a hibája, hogy túl sok paraméter megtanulására lett kényszerítve, a tanulás folyamat és az adatbázis is viszonylag rövid volt. (40 másodperc beszéd, 500 epoch.) 7. A saját fej-animációs rendszerünk koncepciója A saját rendszerünk összeállítása során nem hagyhattuk figyelmen kívül a siketek egyedi kommunikációját.
Rendkívül
fontos
számukra
a
mindennapi
életben
megszokott
beszéddinamika, és az olvasható artikuláció. Ezért a Neurális hálózat modell tűnt járhatóbb útnak, még akkor is, ha az Beskow kutatásai alapján rosszabb eredményeket hozott, mint a vizuális text-to-speech. Az előző fejezetekben említett okok és érvek miatt döntöttünk a következő rendszer modell mellett. [14] (7.1 ábra) Acoustic feature extraction NN PCA-1 MPEG4 based facial animation model
MFCC
w1 … w6 weights of the principal components FP Feature points coordinates
7.1 ábra: A rendszerünk koncepciója
21
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
- A rendszer mobiltelefonon valósul meg, mert a mai mobiltelefonok kapacitása elegendőnek tűnik a feladat megoldására. - A beszédet a mobiltelefon feldolgozza, Mel-Frequency Cepstrum Coefficient
(MFCC) meghatározása után a már előre megtanított Neurális hálózatnak adja. - Neurális hálózat kimenetén az MPEG-4 szabványú FAP-ok jelennek meg PCA-val tömörítve. - A FAP-ok visszaállítása után egy háromdimenziós fejmodell jelennek meg a mobil kijelzőjén, mely eltátogja az FAP-okat. Erről a siketek le tudják olvasni a beszédet. Az egyéni rendszermodell további megfontolásokat hozott. Más rendszerek tanításával szemben, a mi tanítóhalmazunk nem természetes bemondók szájmozgását tartalmazta, hanem jeltolmácsokét, mert az ő beszédjük alkalmazkodott a siketek elvárásaihoz, mind a beszédtempó, mind az artikuláció tekintetében. Beskow eredményeiből kiindulva fontosnak találtuk a hosszabb idejű tanítást. A mi Neurális hálózatunk 100000 epochon keresztül tanult. [15] Ez tömörítés nélkül több hónapig is eltartott volna, mi viszont főkomponens analízist végeztünk a FP-k helyzetének tömörítésére. Így nagyobb hatásfokot tudtunk elérni. A
továbbiakban
a
rendszerünk
elméleti
elgondolásainak
gyakorlatban
történő
megvalósításairól számolok be. Részletesebben tárgyalom az általam megoldott feladatokat, azok eredményességeit és esetleges hibáit. 8. Audiovizuális-adatbázis összeállítása Első lépésben elkészítettük egy audiovizuális adatbázist. [10] Egy rendszer teszteléséhez és tanításához olyan adatbázisra van szükség, ami megfelel a teljességi, a pontossági, és a statisztikai elvárásoknak. Az előzetes felmérésekben említett szájról olvasás vizuális feltételeit leginkább a jeltolmácsok elégítik ki, hiszen mindennapi életüket a siketek és nagyothallók közt töltik, így az ő beszédjük a legoptimálisabb a rendszer tanítására. 8.1 Audio Az adatok felvétele előtt összeállítottunk példamondatokat és diádokat úgy, hogy a lehetséges fonéma együttállásokat lehető legjobban lefedje. A 60 darab példamondat a magyar fonémakészletet a nyelv átlagos eloszlásával használták. Továbbá a jeltolmácsok kb. 200 diádot mondtak el. Ezen kívül hónapok, napok neveit, egy-, két- és háromjegyű számokat. 8.2 Video Ahogy azt már említettem, az arc teljes körű modellezését már elvégezték és szabványosították MPEG-4 néven [7]. Úgy döntöttünk, hogy amennyire lehetséges, ehhez a
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
22
szabványhoz közeli adatokkal dolgozunk. A videót úgy vettük fel, hogy az arcon megjelöltük a számunkra fontos tartópontokat. Nem jelöltük meg a siketek által nem figyelt pontokat. Az igazán fontos pontok a száj külső kerülete (8 pont), száj környéke (2 pont) és az áll (2 pont). Ez eddig 12 pont. (8.1 ábra) A felvételen még 3 pontot (az orron szélein és közepén) vettünk fel, melyek a beszéd közben viszonylag fixek, így a fej esetleges elforgásakor segíthet a visszatranszformálásban. A beszélő feje puha korlátok közé lettek szorítva, ezzel is kiaknázva az esetleges elmozdulásokat. A megvilágítást úgy választottuk meg, hogy a későbbiekben automatikusan tudjuk a pontokat megkeresni a felvételen. Erre jellegzetes rikító sárga festéket használtunk. Mivel a beszéd közben ezen pontok mozgását kell megállapítani, fontos, hogy a felvétel felbontása minél jobb legyen. Ezért is szorítkoztunk a beszélő szájára és annak környékére.
8.1 ábra: Az általunk használt 15 FP
A kameráink a piacon elterjedt digitális kamerákhoz hasonlóan PAL szabványú, 720x576 képpont felbontásra képesek. A szabványos másodpercenkénti 25 képkocka mintavételezést alkalmaztuk. Mivel ezek a kamerák nem rendelkeznek kiváló minőségű hangrögzítő berendezéssel, ezért a beszélő hangját felerősített, külön PC-hez kapcsolt mikrofonnal rögzítettük. A kamera és a hang szinkronizálását a felvételen látható és hallható csapóval oldottuk meg, így az esetleges elcsúszások nem haladják meg az egy frame-et. Azzal, hogy a kamera csak a száj körüli pontokat figyelte, elértük, hogy egy FP mozgását átlagosan vízszintesen 40-60 pixel, függőlegesen 80-140 pixel felbontással lehessen rögzíteni. A kamerák képét közvetlenül a videó szalagra rögzítettük, majd a felvételek után DV AVI formátumban digitalizáltuk. A pontosság érdekében ennél jobban nem tömörítettük.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
23
9. Audiovizuális-adatbázis feldolgozása Ebben a fejezetben beszámolok arról, hogy milyen önálló megoldást dolgoztam ki az audiovizuális adatbázis feldolgozása. Készítettem egy olyan eljárást, mellyel az audiovizuális adatbázisban szereplő FP-k helyét meg lehet határozni. A projekt előrehaladtával ez az eljárás kiegészült és pontosult. (9.1 ábra)
9.1 ábra: Audiovizuális-adatbázis feldolgozásának folyamata
Az előző éves munkám során nem tartottam fontosnak a videó előszűrését, mert beépültek olyan egységek a függvénybe, melyek kiküszöbölték a szűrés hiányát. Ám méréseim és tapasztalataim alapján arra a következtetésre jutottam, hogy a szűrés elengedhetetlen. Számunkra az egyik problémát a PAL szabványban megjelenő interlace (váltottsoros) eljárás okozza. (8.3 ábra) Ugyanis ebben a szabványban lényegében nem 25 kép van másodpercenként, hanem 50 félkép. Ez akkor idéz elő hibát, ha valamilyen mozgás van a képen. A mi felvételünkben leginkább a FP-k mozognak, a felpattanásoknál nem is kis mértékben. Így a felvételen váltakozva jelennek meg a sorok, ami ahhoz vezet, hogy egy FP „foltban” minden második sor más színű. Ennek egyenes következménye a hibás detektálás. Ugyan a dilatáció ezt a problémát feloldja, de a pont közepét jobban meg lehet találni deinterlace szűréssel.
9.2 ábra: Interlace és Deinterlace
HSV adjust szűrés segítségével a telített sárgás pixeleket jobban ki tudjuk emelni, ezáltal jobban elkülönülnek.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
24
Az egyes felvételeken sajnálatos módon zavaró tárgyak jelentek meg és verték vissza a fényt. Ilyen volt a fülbevaló vagy a mikrofon. Szerencsére egy egyszerű kitakarással ezeket kilehetett szűrni, ugyanis a tárgyak közelében nem volt FP. Az előszűrés után jöhetett az MPEG-4 pontok detektálása. A feladat megoldásához MatLab 7.0.1.-es programot használtam, melyben egy .m fájlt készítettem. A működéshez szükség van Image Processing Toolboxra is. Bemenetei: 1. a videó maga, 2. hányadik frame-től, 3. hányadik frame-ig dolgozza fel. 9.1 Feldolgozás lépései A script frame-ről frame-re dolgozza fel a képet. Először az aktuális frame-et írom ki egy háromdimenziós mátrixba. Ennek mérete megegyezik a videófájl méretével. Ez az adatbázisunkban 720*576. A harmadik dimenzió az RGB színek megfeleltetése, tehát a mátrix 720*576*3-as. A kezdeti felvételeken az egész arcot rögzítettünk. Ahhoz viszont, hogy felbontást minél inkább kihasználjuk, a kamerát elforgattuk. Tehát a feldolgozás következő lépése, hogy a képet -90°-kal. (Mivel a későbbi, Neurális hálózat tanításánál is használt felvételek kizárólag a száj környékét vették, így azokat nem kellett elforgatni. Ezeknél a felvételeknél értelemszerűen ez a lépés kimarad.) A harmadik lépés vizuális lényegkiemelés vagyis, hogy a képen meghagyom az érdekes részeket. A felvétel során az MPEG-4 pontok az arcbőrtől elütő sárgás festékkel lettek elhelyezve. Tehát ami nem sárga, azt a frame-ről le kell törölni. Ehhez a kép minden egyes pixelén végig kell menni, és ott meg kell vizsgálni az RGB összetevőket. Ez egy konkrét esetben a következő feltételt jelentette: (r > 200 ) & (g>200) A sárga szín a vörös és a zöld keverékéből jön ki. Tehát mindössze ennek a két komponensnek kell külön-külön is nagynak lennie. Amelyik képpont ezt a feltételt teljesíti, azzal egyenlőre nem történik semmi, a többi pont viszont az RGB összetevők mindegyikére 255 értéket kapva törlődik, fehér lesz. Továbbiakban az aktuális (most már pucolt kép) binarizálása következik. Ennek threshold értéke 0.9999 vagyis minden ami eddig nem fehér volt, az most fekete lesz. (Tapasztalataim alapján a threshold érték nem lehet 1, mert akkor az összes pont törlődik.) Az ötödik lépésben a már bináris képet invertáljuk, ugyanis az előző lépésben az összes 255 értékű képpont 1 lett. Elegánsabb a képet úgy ábrázolni, hogy az érdekes részeket reprezentáljuk 1-el, nem pedig a hátteret. Tehát a jelen állapot szerint a kép nullákból és egyekből áll, ahol a tartópont-halmazok az egyek, és a többi nulla.
25
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
Eredeti kép
„Pucolás”
Binarizálás
Invertálás
9.3 ábra: A MatLab függvény 2-5. lépésének eredménye (képrészletek)
Ahhoz, hogy az FP-k helyét meghatározzuk, minden pontot egy pixel kell hogy reprezentáljon. Ha a képen eróziót hajtanánk végre, akkor elérhetnénk, hogy az MPEG-4 pontok széleit fokozatosan eltüntessük. Sajnos (ahogy a 9.3 ábra 4. lépése mutatja) a pontok nem lesznek homogének. Ha nem homogén, akkor az erózió végeredményeként egy FAP nem egy pixelből, hanem több különállóból fog állni. Azért, hogy ezt a problémát kiküszöböljük, először dilatálni (kövéríteni) kell a pontokat. Tehát hatodik lépésben a dilatálás következik. A dilatációs mátrix egy 5*5-ös csupa egyes mátrix. Ez azt jelenti, hogy minden pixelt, melynek értéke 1, minden irányba két pixel vastagságban kiszélesít. Ennek hatására a „Feature Point”-ok homogénebbek lesznek. A következő lépésben már végrehajthatjuk az eróziót. A művelet végrehajtása során a kövérített FP-ket addig soványítjuk, amíg csak tudjuk (Ultimate Erosion). Az erózió nyolc szomszédsági, tehát egy pixel mind a nyolc szomszédos pixelét törölheti. Sajnos az eljárás végeredménye nem mindig egy pixel, ugyanis például egy egyenes szakaszt nem tud soványítani. Viszont igen jól közelíti az MPEG-4 pont közepét. A MatLab a dilatációs és eróziós műveletek végrehajtására beépített függvénnyel (imdilate és bwulterode) rendelkezik. Nyolcadik lépésben most már elérhetjük, hogy minden egyes MPEG-4 pontot egy pixel reprezentáljon. Ehhez újra végig kell menni a kép összes pixelén és egy saját eróziós algoritmust kell alkalmazni. A elkülönült részek pixeljeit ellátjuk számokkal. Az ugyan olyan számokkal rendelkező pixelek összefüggők. Ezt az elkülönülést használom ki a pixelek átlagának kiszámolására. Tehát minden FP-t egy pixel elhelyezkedési átlag fog reprezentálni. Az esetleges tört számok elkerülése végett kerekítek. (9.4 ábra) Az eljárás előnye, hogy így egy pixel fogja reprezentálni az FP-ket. Hátránya, hogy igen számolásigényes lett.
9.4 ábra: Az eróziós algoritmus eredménye
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
26
Tehát végeredményben az aktuális frame-en 15 darab pixel kivételével az összes értéke nulla. Minden nem nulla (fehér) pixel rendelkezik két koordinátával: a kép bal felső sarkától számított eltérés sorban és oszlopban, pixelben megadva. Ezt a két számot minden egyes FP-re letárolom egy log mátrixba (továbbiakban log). Így összes 30 (15*2) oszlopa lesz a fájlnak. A 31. oszlop a frame azonosítóját tartalmazza majd. Ezt a mátrixot minden egyes frame-re egy újabb sorral bővítjük, így végeredményben egy 31*(feldolgozott frame) darab számot tartalmazó szövegfájlt kapunk. A szövegfájlon kívül még öt darab kimenete van a függvénynek. Ezek mindegyike animált GIF, melyben az egyes frame-ek 5., 6. 7. 8. lépése található a feldolgozásuk sorrendjében összefűzve. Az ötödik GIF az addigi összes frame végeredményét vetíti egymásra.
9.5 ábra: A MatLab függvény 6-8. lépésének eredménye (képrészletek)
9.2 Feldolgozás értékelése Előnyök: A függvény a teljes videó-adatbázisra alkalmazható. Az inputok segítségével egy konkrét videórészlet is megadható, így a felvétel bármely részére elvégezhető a feldolgozás. Az elkészült txt fájl kompatibilis a C++ fejanimáló programmal. Az ASCII fájlnak köszönhetően a paraméterek kis helyet foglalnak. Hátrányok: Az egyes felvételek színkomponensei eltérhetnek, így előfordulhat, hogy az RGB feltételeket át kell dolgozni. A korábbi eróziós algoritmus egy pont 10*10-es szomszédságát törölte a feldolgozás irányában, azonban ha egy pont az Ultimate Erosion után például egy 11 pixel hosszúságú szakasz marad (ugyan ennek kicsi a valószínűsége), akkor az MPEG-4 pontnak megfeleltetett pixelek száma több is lehet, mely növeli a log fájl oszlopainak számát. (Hamis pontok jelennek meg). Az új eljárással ez a probléma megoldottnak látszik. A frame-ek feldolgozása lassú amiatt, hogy minden képkockán többször megy végig. Egy frame feldolgozása egy csúcskategóriás PC kb. 5 másodperc. Tekintve, hogy a videók 25 fps-sel rendelkeznek, így egy óra felvétel feldolgozása 125 órán át tartana. 9.3 Javítás Egy konkrét videó feldolgozásán keresztül teszteltem az FP-kinyerés sikerességét. Azt kaptam, hogy a detektálás az esetek nagy részében jól működött. Pontos adatokkal: 14615 frame-ből 13986 frame-re jól működött. A maradék 629 frame (ami mindössze 25 másodperc) esetében vagy több pontot talált, vagy kevesebbet. Tehát az összes frame-nek csak 4,3 %-a lett hibás.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
27
Ezután kiszűrtem, hogy melyek a hibás sorok. A javító függvényem szerint akkor hibás egy sor, ha nem 15*2+1 oszlopában van nem nulla. (Ez úgy jött ki, hogy a képen 15 tartópont van, x és y koordinátákkal, tehát ez 30, plusz az utolsó oszlop a frame sorszáma) Tehát az a sor aminek több mint 15*2+1 nem nulla eleme van, vagy aminek kevesebb nem nulla eleme van, az rossz. Eldobom. Ez azt jelenti, hogy az összes elemét kinullázom. Kivéve az utolsó frameazonosítót. A hibás soroknak az azonosítóját eltárolom. A detektáló függvényemet módosítottam, csak a hibásnak vélt frame-eken ment végig. Természetesen a színfeltételt is módosítani kellett. A feldolgozás után a jó frame-eket visszaillesztettem az eredeti fájlba. A konkrét példára visszatérve: összesen 222 hibás sor maradt a második elemzés után, ami az összes frame mindössze 1,5%-a. Ezt az eljárást addig folytatom, míg az összes frame jó nem lesz. Ez körülbelül 3-4 módosítást jelent. Sajnos vannak olyan frame-ek, melyeken az FP-k szinte teljes egészében eltűnnek (például a lebiggyedő száj takarja el). Ezek azonosítása manuálisan történt, de számuk nem volt több 30-nál. Még egy probléma vetődik fel, amit szintén nehézkes automatikusan javítani. Mi van akkor, ha egy FP nem jelenik meg, egy másiknak viszont a diletálás után is két külön tartománya lesz? Ekkor a feltétel igaz: valóban 15*2+1 eleme van a sornak. A feltételem szerint ezek jók. A problémát a pontok azonosítása után lehet csak észlelni és javítani. 9.4 Azonosítás A következő feladat a pontok azonosítása. El akarjuk érni, hogy egy FP-hez tartozó koordináták mindig ugyanabban az oszlopban legyenek, így meg tudjuk nézni az egyes pontok mozgását. A kijavított log.txt-ben természetesen előfordulhat, hogy az egyes FP-k más-más oszlopban szerepelnek. Ez amiatt van, hogy a detektálás sorban majd oszlopban megy végig a képen. Ha talál egy pontot, azt eltárolja. A száj szélén lévő pontot például igen gyakran keveri, hol az egyik, hol a másik kerül feljebb.
9.6 ábra: 5000 frame-en detektált FP-k szóródása és azok kívánt azonosítója; (a képen egy korábbi 16 FP-s detektálás eredménye látszik)
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
28
A 9.6 ábrán látható 5000 frame szóródása. Láthatjuk, hogy a 10, 15, 16 sorszám kivételével jól elkülöníthetők az FP-k. Annak köszönhetően, hogy a feldolgozás sor-oszlop sorrendet követ a 15 és 16 pontok lényegében mindig jó helyen vannak; a 16-os pont feldolgozása történik meg utoljára, a 15-ösé az előbbi előtt közvetlenül. Ezek a pontok nem keverednek semelyik másikkal. Ha a szóródási képen nem jelenítjük meg ezt a két pontot, akkor azt látjuk, hogy a 10-es pont is gond nélkül elkülöníthető. Az elkülönítést téglalap alakú területek meghatározásával teszem. (9.7 ábra) Ha egy pont egy bizonyos téglalap területen belül helyezkedik el, akkor azt egy új mátrix megfelelő sorszámú oszloppárjában helyezem el. Tehát az 1-es pont az 1. és 2. oszlopot foglalja el, a 2-es a 3.-at és a 4.-et., stb.
9.7 ábra: FP-k (pontfelhők) elkülönítése (15, 16 nélkül)
Ezt a megoldást nemcsak a végrehajtás egyszerűsége és hatékonysága miatt választottam, hanem a javítás fejezet végén említett probléma miatt is. Nem nehéz végiggondolni, hogy minden téglalapban 5000 darab pontnak kell lennie. Ha egy frame-ben egy területen belül nincs FP (márpedig kell hogy legyen), akkor az x és y koordinátájára is 0 értéket kap. Az azonosítás után kapott mátrixban csak meg kellett keresni a 0:0 pontokat. Ez a már említett 14615 frame-ben mindössze tízszer fordult elő. Manuálisan javítható. 9.5 Koordináta-transzformációk A mostani mátrixunkban az értékek abszolút koordinátarendszerben vannak megadva. Azaz minden pont a kép bal felső sarkától mért x és y irányú pixeltávolsággal van megadva. Könnyű belátni, hogy ez nem a legjobb reprezentációja a FP-knek, hiszen a fejmozgásokkor minden pont odébb kerül az origóhoz képest. (Ugyan törekedtünk a fej mozgásának lehető legjobb kiküszöbölésére, mégis megfigyelhetők az elmozdulások.)
29
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
Tehát kell keresni egy olyan pontot, ami lehetőleg mindig együtt mozog a beszélővel és viszonylag kicsi a szórása. Az orr hegyén elhelyezett pont ideális lett volna, ám voltak felvételek, ahol ez sokszor eltűnt a felvételen (így nem is került feldolgozásra). Emiatt és a z tengely körüli forgatás miatt döntöttem az orr két szélén elhelyezkedő pontok mellett. Minden egyes frame-re már meg van határozva ez a két pont a 12. és 13. oszloppárban. Ezt a két pontot összekötő szakasznak a fele lesz az új koordinátarendszer origója. A régi abszolút és az új relatív koordinátarendszer origója közti különbséggel tolom el az összes pontot. Ezt nem csak egy frame-re számolom ki, hanem minden egyes képkockára külön-külön meghatározom. Így kiszűrtem a fej föl-le mozgásából származó eltéréseket. Hasonló megfontolással a fej z tengely körüli forgását is ki lehet szűrni. A megvalósítás során kiszámoltam az új origóban az x tengely és a két referenciapontot összekötő szakasz által bezárt szögeket. Minden frame-re ezzel a szöggel az origó körül az összes FP-t elforgattam. Ez a forgatás átlagosan 4 fok volt. Az eredmény a pontok szóródását tekintve látványos lett. A „pontfelhők” iránya kitisztult. Ekkor még nem sejtettem, hogy ez a transzformáció milyen következményekkel jár. A pontok mozgásának a fejanimáló rendszeren (lásd később) történő időbeli ábrázolásnál azt tapasztaltuk, hogy rendkívül nagy zaj van benne. A zaj nem következhetett az FP-k közepének meghatározásából, mert attól nagyobb volt a mértéke. Sokáig azt gondoltam, hogy a fejanimáló rendszer skálázásának köszönhető, de ezt ki tudtuk zárni. Végül rájöttünk, hogy a zajt a referenciapontok meghatározásának kvatálási hibája okozza. Ugyanis akármennyire is fix egy pont, a képen minimális különbségek is dönthetnek az FP közepét illetően. Ez a hiba forgatáskor minden FP-re áttevődött, főleg az origótól távolesőkre. Noha látszott, hogy kevésbé lett homogén a pontfelhő, de ezzel együtt a szórása sokkal nagyobb lett. Tehát összefoglalva: Kidolgoztam egy eljárást, ami a videó minden képkockájából kinyeri a pontok közepét, a pontokat azonosítja, majd áttér relatív koordinátarendszerre és az adatokat egy log mátrixba tárolja. A következő táblázat mutatja egy 15 FP-s mátrix oszlopaiban található értékek MPEG-4 szabvány szerinti megfeleltetését. Sorszám FAP Koor.
1
2
x
Sorszám FAP Koor.
17 18 5.2 x y
3
8.8
4
5
8.4 y
x
6
7
8.6 y
19 20 9.2 x y
x
8 8.1
y
21 22 9.3 x y
x
y 23 24 9.1 x y
9
10 8.5 x y 25 26 5.1 x y
11
12
13
8.3 x
14
15
8.7 y
27 28 2.10 x y
x
16 8.2
y
29 30 2.11 x y
x
y
31 frame -
1. táblázat: a log mátrix oszlopainak MPEG-4 szerinti megfeleltetése
9.6 Főkomponens analízis (PCA) A log mátrix ebben a formában történő felhasználása több ok miatt is nehézséget jelenet. [16] Ahogy az 1. táblázatban is látható 30 paraméter írja le az FP-k helyzetét minden frame-re.
30
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
Ezzel a folyamat szabadsági foka igen nagy. Attól a ténytől sem szabad eltekintenünk, hogy az FP-k egymással összefüggnek. Minden pontnak van korlátja, és ezeket a korlátokat a többi FP szabja meg. Gondoljunk bele, hogy pl. a 8.4-es FP (a száj jobb széle) soha nem lehet a 8.3-as FP-től (a száj bal széle) balra. Ezen megfontolások miatt döntöttünk a PCA eljárás mellett. Kezdetben a videofelvételen eltűnő pontokat a többi FP-ből próbáltuk megjósolni. A PCA egyik előnye, hogy eme pontdetektálási és -azonosítási eljárás hibájára rávilágított. A becsült pontok mintavételi hibája már a harmadik főkomponensnél szembeötlő volt. Ezen felül, összehasonlítottuk két beszélő főkomponenseit. Az első személy jeltolmács, míg a második projektünknek egy tagja volt. A jeltolmács főkomponensei tiszták, szimmetrikusak
voltak,
míg
csapatunk
tagjáé
inkább
összefüggéstelenebb.
Ezáltal
kimutathatóvá vált a különbség a képzett artikuláció és a hétköznapi artikuláció között. (9.8-9.9 ábra) A PCA legfőbb előnye a dimenziócsökkentés. Segítségével 6 dimenzióban tudjuk leírni az eddig 30 paraméterünket. Méréseink alapján az FP-k szórásának több mint 95%-a az első 6 főkomponensbe esik. A maradék szórás elhagyása mindössze 1-2 pixeles hibát okoz. A dimenziócsökkentésnek köszönhetően a neuronhálóval történő tanítás idejét csökkenteni tudtuk, a tanítás pontossága javult.
9.8 ábra: Képzett jeltolmács szájmozgásából származtatott FP-k PCA reprezentációja (első négy főkomponens)
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
31
9.9 ábra: Képzetlen bemondó szájmozgásából származtatott FP-k PCA reprezentációja (első négy főkomponens)
A PCA nem csupán egy tömörítő eljárás. [14] Információt hordoz a felvétel minőségéről vagy épp a bemondó beszédstílusáról. Ugyan a feldolgozás automatikus, a PCA mégis kapcsolódik az egyes vizémák jellegzetes mozgásaihoz. Megfigyelhetjük, hogy az első főkomponens az álkapocs mozgásához, vagyis a száj nyílásához kapcsolódik. A második reprezentálja a száj vízszintes széthúzódását. A harmadik pedig kapcsolódhat az ajakkerekítés megvalósulásához. Ugyan a negyedik főkomponenshez nem kapcsolódik konkrét szájmozgás, de korrigáló szerepe van. 10. Hibák felderítése FP reprezentációkkal Az előző fejezetekben utalást tettem az FP-k szóródásának reprezentációjára. (9.6 ábra) A pontok ilyen módon történő ábrázolása nem alkalmas a beszéd folyamatának időben történő leírására. Másrészt az FP-ket jellemző kvantálási zaj sem figyelhető meg. Ezért új megközelítésben kezdtem figyelni a pontokat, az idő függvényében. 10.1 Idő Az egyes FP-k időbeli x vagy y irányú változását tekintve nem várt hibák kerültek a felszínre. A FP azonosításnál látszólag hibátlannak tűnt az, hogy a 16-os és 15-ös pontot elhagyva téglás módszerrel osztályozok. Ám egy nagyon kis valószínűségű hibával nem számoltam. Ha ugyanis a 10-es FP nem látszik, de a 15-ös két pixelt kap, akkor a 15-ös alsó pixele lesz a 15-ös közepe, a felső pixele pedig a 10-esé. Ez a pixel beleesik a 10-es téglalapjába, tehát nem kap nulla értéket.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
32
Az idő függvényében reprezentálva a 10-es FP-t, ezek a hibák látható váltak. Ugyanis körülbelül 40 pixel eltérésű kiugrás vált láthatóvá az y irányú mozgásban. Összesen két darab ilyen tüske volt, melyeket újra kellett detektálni más feltételekkel. Ez mindössze 0,01%-ban fordult elő. Ennek a reprezentációs formának volt köszönhető a kvatálási zaj megfigyelése is. Leginkább akkor fordul elő, ha a beszélő csöndben van. A zajnak többszöröse figyelhető meg a tanítás utáni hangelemző kimenetén. Kiszűrésére medián szűrőt alkalmaztunk. Ennek előnye, hogy csökkenthetjük a zavaró zajt, hátránya, hogy a jellegzetes felpattanásokat levágja. Tehát meg kell találni a középutat. A mi megfigyelésünk szerint ez akkor a legjobb, ha egy három hosszú kereten szűrünk. Mindig az aktuális keret előttit, az aktuálisat és az azutánit tekintjük. Ennek számoljuk a mediánját. 10.2 Hanghullám A hangelemző egyik legszembetűnőbb hibája, hogy csöndre is generál szájmozgást. Ennek egyik oka, hogy a rendszert leginkább a csöndre kényszeríttettük rá. Ezt a hibát növeli, hogy a beszélő felvétel közben akkor is mozgatja FP-it, amikor csönd van. Például megnyalja a szájszélét, vagy elmosolyodik. Ezen zavaró körülményekre felhívtuk a beszélő figyelmét a későbbi felvételeknél, és kértük, hogy amennyire csak lehet mellőzze. Ha kiszűrjük a fent említett hibákat, akkor is számolnunk kell a beszéd természetével. Vagyis hogy az első kiejtett hang előtt 3-4 frame-es rákészülés történik.
10.1 ábra: A hanghullám és a száj körüli FP-k y irányú mozgása a szeptember szót kimondva
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
33
A beszélő, anélkül hogy kiejtene egy hangot is, száját kinyitja. Ha a tanításban nem nézzük a keret elő- és utóéletét, akkor a csönd „tanulásánál” ezt az előkészületet is figyelembe veszi. Ugyan ez nem nevezhető hibának, de a beszéd eme tulajdonsága jól megfigyelhető az FP-k és hanghullám együttes ábrázolásával. (10.1 ábra) 10.3 Ellipszis Az elmúlt években születettek olyan kutatási eredmények, melyek a száj reprezentációját lényegében az FP-k egy redukált halmazával írják le. [3] Az elgondolás szerint a száj jól jellemezhető egy ellipszissel. Ez az ellipszist az ajakszélességből és az ajaknyílásból számolják. Ezenkívül meghatározzák az intenzitási tényezőt, mely lényegében a szájnyílás belső területe. Két oka van, hogy ettől az elgondolástól elhatárolódtam. Az egyik, hogy mi csak a száj külső részével foglalkozunk, az ellipszis pedig a teljes ajkat reprezentálja. Ennek ellenére jól tudtuk közelíteni a tanulmányban szereplő ellipszist. A másik ok, hogy mi tíz FP használunk fel a száj reprezentációjára. Ez a tíz FP a két iránynak köszönhetően húsz paraméterrel írja le az ajakmozgást. Az ellipszis esetén mindössze két paraméter szolgál ugyan erre. Ugyan a mi MPEG-4 alapú megközelítésünk tízszer nagyobb átviteli csatornát követel, de pontosabban közelíti a száj mozgását, mely a siketek számára rendkívül fontos. 11. A felhasznált MPEG-4 szabványú fejanimáló rendszer Az FP-k detektálása után azt a feladatot kaptam, hogy ezt most már valamilyen realisztikus vagy legalább is kezelhető formában jelenítsem meg. A beszélőfej kidolgozásának kezdeti lépésében arra a következtetésre jutottunk, hogy mind a PC-s mind a mobiltelefonos kivitelezés szempontjából az OpenGL grafikai rendszer lenne a legideálisabb. A projekt kezdeti fázisában készült egy PC-s felület, mely két dimenzióban tudta megjeleníteni az FP-k mozgását. A modell kezdetleges volt, a pontok közti interpoláció nem volt megoldva. Lényegében arra világított rá, hogy egy ilyen rendszer kialakítása mekkora kihívást jelent. Tehát ahelyett, hogy készítettünk volna egy saját OpenGL-es modellező felületet, keresni kezdtünk a már publikált rendszerek között. Az egyik megközelítés a KTH svéd egyetem kutatásai irányába indult. Ők évek óta számolnak be a saját Talking Head-ükön végzett kutatásaikról [17], [18]. Részben hasonló megfontoláson alapszik a munkájuk, mint a miénk. Sajnos ők nem adják ki rendszerüket külső kutatásokhoz, ezáltal a forráskód is beszerezhetetlen. A téma másik jeles képviselői a Padovai Institute of Cognitive Sciences and Technologies kutatói. Ők is elkészítettek a saját beszélő fejüket, Luciát. [19] Mind a programot, mind a forráskódot elérhetővé tették. Azonban konkrét leírást a rendszer működéséről nem kaptunk, így azt nekünk kellett visszafejtenünk.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
34
11.1 Lucia felépítése Lucia az elvárásunknak megfelelően OpenGL grafikai rendszerrel rendelkező MPEG-4 szabványos modell. Grafikailag kiválónak mondható, mind a modell, mind a textúrája jól kidolgozott. (11.1 ábra) A program elindulásakor az előre gyártott VRML fájlból állítja elő a modell ponthálóját. A pontháló sok vertex-ből áll, főleg a fontosabb részeknél, mint a száj környéke vagy a homlok. Ezáltal szépen lekerekített felületeket láthatunk. A programban lehetőség van a fej egyes részeinek elrejtésére vagy megjelenítésére. Ezek az arc, a szemek, a torok, a nyelv, a fogak és a haj. A fej egyes részeihez a textúrákat külön képfájlokból olvassa és helyezi el azokat a ponthálón. A modell körül három dimenzióban tudjuk forgatni, illetve eltolni a kamerát.
11.1 ábra: A Lucia modellen alkalmazott FP-k
11.2 Lucia mozgása Lucai mozgása az általában megszokott MPEG-4 alapú fejanimáló rendszerekét követi. A Lehetséges FP köré definiálva van egy ellipszis alakú terület. Az FP azokat a vertex-eket tudja mozgatni, melyek a hozzá tartozó területen belül helyezkednek el. A pont mozgása az FP és a vertex közötti távolság arányában csökken. Az ellipszisterület szélén elhelyezkedő pontok kevésbé veszik át az FP mozgását, mint a közeliek. Ez a mozgáselhalás nem lineáris a távolság függvényében, hanem koszinuszos. Könnyen elképzelhető, hogy a rács egy pontját több FP is akarja mozgatni. Például a szemöldök környékén. Ekkor átlagolódik a két FP által keltett mozgás. A száj környékén ez az ovális módszer nem alkalmazható, mert a szájat leíró FP-khez közel eshetnek más vertexek, melyek épp a száj túloldalán vannak. A száj konkáv mivoltából fakadó problémát úgy oldja fel Lucia, hogy annál az FP-nél, mely közel esik az ajakhoz, felsorolja a hozzá tartozó vertexeket. Természetesen a távolság függvényében történő animálás még mindig alkalmazható.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
35
A példaprogram elindításakor egy ízelítőt kaptunk Lucia képességeiből. Láthattuk, hogy forgatja a fejét, pislog, összehúzza a szemöldökét és tátog a szájával. Ezeket a mozgásokat egy vezérlőfájlból állítja elő (TempFile.fap). A fájl első sorában kódolja, hogy hány képkockát jelenít majd meg másodpercenként a modell, illetve, hogy összesen hány frame lesz. A továbbiakban minden képkockához két sor fog tartozni. Az első meghatározza a mozgatandó paramétereket. Ez lényegében egy logikai 1ekből és 0-ákból álló sor. Ahol nulla van, azt a paramétert nem változtatja. A második sor a paraméterek mozgatására szolgál. Első eleme az aktuális frame sorszáma nullával kezdve. Az első elemtől eltekintve, a sornak annyi eleme van, ahány egyes volt az előző sorban. Pl. a tizenegyedik eleme azt a paramétert mozgatja, amelyik alatt tizedikként van egyes. A sor elemei egész számok lehetnek. Ha nulla értéket kapnak, akkor a paraméterek a normál, természetes arckifejezés helyére áll, ez lesz az alapértelmezett érték. Az 1. sz. melléklet azt mutatja, hogy az egyes elem változtatása milyen fejmozgást eredményez. A fájl feltérképezése során kiderült, hogy maximum 68 paraméter változtatható. Ezek irányát is visszafejtettük, mely szintén az 1. sz. mellékletben található. Némelyik paramétert nem lehet mozgatni, adjunk arra bármekkora értéket is. Ezek a forráskód elemzése után bizonyítást nyertek. A 68 paraméter lényegében megfelel az MPEG-4 szabványban foglaltaknak, tehát kijelenthetjük, hogy Lucia MPEG-4 kompatibilis. Sajnos a program forrásában a FAPU-kra utalóan következetlenséget találtunk, mert az egyes paraméterek mozgása egy-egy konstans számmal vannak skálázva, és nem a modell ponthálójából származtatják. Ettől függetlenül ez jól működhet Luciára, de más modellre nem biztos. 11.3 Log-Lucia konverzió Lucia beszédjének minőségét leginkább természetes beszédből származtatott FP-k segítségével lehet vizsgálni. Tehát az általunk detektált pontok „lejátszásával”. Ehhez készítenünk kell egy megfeleltetési táblázatot, mely leírja, hogy az általunk használt paraméterek hogyan és hova ültethetők át Luciára. Mivel az audiovizuális adatbázisunk és Lucia is MPEG-4 szabványra törekszik, így 2. táblázat létrehozhatóvá vált. Log FAP Irány Lucia
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 29 30 31 8.8 8.4 8.6 8.1 8.5 8.3 8.7 8.2 2.1 x y x y x y x y x y x y x y x y x y F 59 55 61 57 52 56 54 60 58 53 4 1
2. táblázat: a log mátrix és Lucia vezérlő oszlopainak MPEG-4 szerinti megfeleltetése
A táblázatból jól kitűnik, hogy nem használtuk az adatbázisunk összes paraméterét. Ennek oka az, hogy Lucia (az MPEG-4 kötöttsége miatt) nem képes az FP-k minden irányú
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
36
mozgatására. A 68 Lucia paraméterből összesen csak 12 darabot változtatunk, a többi 56 számunkra vagy érdektelen, vagy nem kapunk mozgást az adatbázisból. A Log-Lucia konverziót próbáltam a lehető legjobban automatizálni. Erre egy MatLab függvényt készítettem. Ez lényegében egy adott log mátrixból gyárt egy Lucia számára használható TempFile.fap-ot. Az első kihívást a koordinátarendszerbeli különbségek adták. A rendszerünkben az origó orrszél két pontját összekötő szakasz felezőjében van. Lucia viszont (az MPEG-4 szabványokat követve) minden egyes paraméterére saját koordinátarendszert képez. Ezt a problémát feloldhatjuk azáltal, hogy egy úgynevezett referencia-frame-et jelölünk ki. Az összes frame-re kivonjuk ebből a frame-ből a megfelelő FP-ket. Ezzel elértük, hogy log mátrixunkban minden képkockában a referencia-frame-től mért eltéréssel reprezentáljuk az FP-k helyzetét. A referencia-frame általában az adatbázisunk első képkockája, mert itt biztosan csöndben volt a beszélő, szája alapállapotban helyezkedett el. Ez a koordináta áttérés mindig a „log to Lucia” konverzió alatt hajtódik végre, ahelyett hogy magában az adatbázisban írnánk át. Ennek az oka, hogy a referencia-frame állításával lehetőség nyílik a pontosabb vezérlésre. (11.2 ábra) Miután megadtuk az fps értéket és meghatároztuk az összes frame számát a következő lépés a megfeleltetés volt a 2. táblázat alapján. Azonban nem szabad megfeledkezni az aktuális frame első sorában szereplő logikai értékekről. Úgy döntöttünk, hogy ezt a sort csupa egyessel töltjük fel, és ha egy paramétert nem akarunk mozgatni, akkor azt nem ebben a sorban, hanem a következő sorban nulla értéket adva rá hagyjuk mozdulatlanul. Ennek kis hátránya, hogy nagyobb lesz a TempFile.fap, viszont nagy előnye, hogy egy eddig nem mozgatott paraméter vezérlésére csak a második sort használjuk. Így könnyebben tudjuk ezt végrehajtani. (A frame első sorához hozzá sem nyúlunk.)
11.2 ábra: Jellegzetes magyar vizémák (ugyan a rendszer nem fonéma alapú, mégis a modell jól reprezentálja a vizémákat)
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
37
11.4 Skálázás és irány Az első próba után láthatóvá vált a megfeleltetés két fő hibája: a skálázás és az irány. Vagyis hogy a Luciára ültetett paramétereink nem a megfelelő irányba és nem megfelelő méretben mozognak. Az irány meghatározására az 1. sz. mellékletben található táblázat segítetett. Sajnos Luciában ezek néhol következetlenek voltak. (Igazság szerint nem Lucia a következetlen, hanem a szabvány.) A száj felső illetve alsó részén elhelyezkedő pontok pozitív y irányú mozgatás esetén a száj összecsukódását eredményezték. Viszont a száj szélén elhelyezkedő FP-k pozitív x irány esetén ellenkezőleg, a száj széthúzódását mutatták. Ezen kellemetlenségektől eltekintve nem volt nehéz az irányokat beállítani. Ezek a függvényben lényegében pozitív vagy negatív szorzók voltak. A skálázás megállapítása első megközelítésben próbálkozással történt. Feltételeztem, hogy minden FP megfeleltetés ugyanakkora szorzóval történik. Ám ez utólagos megfigyeléseim alapján nem volt igaz. Általánosan kijelenthető hogy skálázási tényező minden FP-ra +10:+15 vagy -10:-15 közé eső értékben állapítottam meg. A skálázás eme heurisztikus megadását mérésekkel próbáltuk pontosítani. Méghozzá úgy, hogy a jeltolmács felvételein megmértem a FAPU-kat. Tehát lényegében a jeltolmács és Lucia között oldottam meg a mértékegység váltásokat. Később elkészült Luciának egy változata, mely képes volt az FP-k abszolút helyzetének eltárolására. Az FP-k az audiovizuális-adatbázisunkban is használt origóhoz lettek viszonyítva. Ennek segítségével hangolhatóvá váltak a Lucia FP-jei a mi paramétereinkhez. (11.4 ábra) Ahhoz, hogy a paramétereket pontosan tudjuk hangolni, Lucia mozgását kiegészítettük. Az eredeti modell a száj felső és alsó három FP-jét csak y irányba tudta mozgatni. A mi adatbázisunkban viszont x iránnyal is számolunk. A kérdés az volt, miért redukáljuk le ennek a hat pontnak a mozgását. Így Lucia vezérlése 12 paraméterrel egészült ki (6 db a száj külső, további 6 db a száj belső részének mozgatására szolgál). A FAPU méréseim nagyrészt igazolták a próbálgatással meghatározott skálázási tényezőket, és ezáltal (és a paraméter kiegészítéssel) sokkal pontosabban szájmozgást láthatunk.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
38
11.4 ábra: Lucia FAP-ok (piros z) és Log FAP-ok (kék Â) skálázási hangolása
12. Lucia tesztelése A referencia-frame változtatásával és a skálázási tényező hangolásával számunka is szembeötlő különbségek jelentek meg Lucia beszédében. De a felismerhetőség mértékéről nem tudtunk adatokat szerezni. Így közel egy év elteltével újra beszélgetésre hívtuk a siketek és nagyothallókat. Példavideókon keresztül kikértük a véleményüket Luciáról és annak szájmozgásáról. A következő megállapítások tették: Túl gyorsan, artikulálatlanul beszél: Próbáltunk összeállítani olyan videókat, melyeken a beszélő a siket nyelvezetével megérthető mondatokat mond el. A beszélő csapatunk egy tagja volt, aki a hallóktól megszokott beszédtempóval és artikulációval beszélt. Ebből az adatbázisból származtattuk az FP-ket. Remeg a szája: A szájról olvasást rendkívüli módon zavarja az időseknél is megfigyelhető remegő száj. Lucia első verzióiban még megfigyelhető volt ez a hiba. Ezek után a már említett medián szűrőt alkalmaztuk a Log-Lucia konverzió alatt, nagymértékben csökkentve ezzel a zajt. Fogak, nyelv: Lucián a fogak mozgása mindig az áll mozgását követi. A nyelv pedig a fogakét. A nyelv lényegében helyzetét változtatja föl és le, viszont más mozgást nem végez. A siketek számára igen sok információt hordoz a nyelv. Segítségével jól elkülöníthető például az ’L’ hang. A fogak zártságából jól lehet következtetni például az ’S’ és ’Sz’ hangokra. Ezenkívül zavarónak találták, hogy fogak fehérsége túlságosan elüt Lucia bőrétől, ami nem természetes.
39
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
Nem csücsörít: Lucia FP-inek vezérlése két dimenzióban történik. Ezekből az információkból nem lehet pontosan meghatározni, hogy mikor csücsörít a beszélő. Segítségével a siketek könnyen el tudnák különíteni az ’Ó’ vagy ’Ú’ hangokat. A tanulságokat levonva a beszélgetésből, új felvételt készítettünk, ahol jeltolmács beszél, jól artikuláltan és megfelelő tempóban. A felmondott szövegen is változattunk, hiszen nem várhattuk el a tollbamondás-szerű visszajelzést. Ezért csak egy- vagy kétjegyű számokat, hónapok és napok neveit mondattuk el a beszélővel, összesen 70 darabot. Újra elhívtuk a siketek és nagyothallókat egy tesztre. A teszten három különböző módú beszéd érthetőségét mértük fel. Az elsőn egy az egyben a jeltolmács beszéde volt látható. A második fajta videón Lucia beszélt, akit a jeltolmácsról rögzítetett videóból származtatott FP-k mozgattak. A harmadikon is Lucia szerepelt, de szájmozgását a hanggal tanított neuronháló kimenetéből számolta. Összesen 70 darab videót mutattunk, melyből véletlenszerű sorrendben, de egyenlő eloszlással volt mind a három fajtából. A videókat hang nélkül játszottuk le. 2,9%
1.
97,1%
45,1%
47,9% 54,9%
2.
52,1%
3.
12.1 ábra: Felismerés aránya, (csíkos talált, sötét nem talált); 1. jeltolmács, 2. Lucia képből, 3. Lucia hangból
A 12.1 ábra 13 olyan siket találati arányát mutatja, akik nem először vettek rész a tesztjeinken vagy beszélgetéseinken. A felvételek között mindössze három olyan volt, amit senki sem talált el.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
40
13. Lucia értékelése Annak ellenére, hogy Lucia nem arra a célra készült, hogy szájmozgást olvassanak le róla, mégis sikerült kidolgoznunk olyan eljárásokat, melyek segítségével Lucia beszédje a gyakorlatban megérthető pusztán a hangból származtatott paraméterekkel. Megfelelő dokumentáció nélkül rendkívül nehéz volt visszafejteni működését. De az idő előrehaladtával nem csak a felépítését értettük meg, de sikerült rávilágítanunk hiányosságaira. Ezeket a hiányosságokat folyamatosan próbáljuk meg valamilyen formában javítani. A legnagyobb problémát a rendszer következetlen programozása okozza. A felmérésekből tisztán látszik, hogy az elsődleges feladat Lucia mozgásának pontosítása nem pedig a beszédelemző fejlesztése, hiszen a jeltolmács és a Lucia képből származtatott mozgásának megérthetősége között sokkal nagyobb különbség van, mint amit a képi Lucia és a hangelemző eredménye között tapasztaltunk. Természetesen a két feladat egymástól függetlenül is fejleszthető, de végeredményben a pontos vizuális megjelenítés csak egy jól működő modell lehetséges. 14. További paraméterek kinyerése A siketekkel folytatott beszélgetések során kiderült, hogy mennyire fontos szerepet játszik a szájról olvasás megértésében a száj belső rész. Az adatbázis összeállításakor nem volt mód a fogak vagy a nyelv megjelölésére. Tehát a mi általunk használt FP követési eljárás erre nem alkalmazható. Ám felesleges „eldobni” a már elkészítette adatbázist, hiszen abból is lehetséges további paraméterek kinyerése. Ezt a feladatot is bátran magamra vállaltam. Az elmúlt években láttak napvilágot olyan kutatási eredménynek, melyek a száj detektálására hisztogram alapú eljárásokat használnak. [20] Ezek lényege, hogy a száj területén belül vízszintes és függőleges irányban a pixelek világosságát és telítettségét vizsgálják. Ezeket a feladatokat szürkeárnyalatos képen hajtják végre, mely jelentős korlátot állít a felismerés elé. A mi felvételeinknek előnye, hogy RGB komponensekből állnak elő. Ennek köszönhetően a pixelvizsgálat több lehetőséget biztosít. Módunkban áll külön vizsgálni a vörös, zöld és kék komponenseket, illetve ennek összefüggéseit. További információt hordozhat a kép, ha HSV reprezentációját vizsgáljuk. Kétféle vizsgálatot mutatnak a 2. sz. melléklet ábrái. Mindegyik ábra első képe az adatbázisunk egy frame-jének szájkörnyékét mutatja. A kék sáv egy 5 pixel széles tartományt jelöl, ahol a pixelek átlagát nézzük. A második képen (RGB) az arcra jellegzetes vörös szín és a zöld különbségét láthatjuk. Ha végiggondoljuk, a görbének akkor van lokális minimuma, ha a vörös és a zöld közel azonos értékkel szerepel. Kifejezetten ilyen a sárga FP, a fehéres fogak és a torok sötétje. Maximuma akkor figyelhető meg, ha inkább vörös pixelek láthatók. A HSV
41
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
kép az 5 képpontnyi sávban szereplő pixelek átlagának világosságát mutatja. Az előzővel ellentétben látványos különbséget látunk a fogak és a torok között.
Minimuma a sötét
részeknél figyelhető meg, míg maximuma a fogak helyzetét mutatja. Az utolsó kép a kék sávban „látott” kép vízszintes kinagyítása. Az elméleti elgondolás automatizálása is megtörtént. Sajnos a fogak azonosítása igen nehézkes, mert nem elég markáns a hisztogram elemzésben a neki megfelelő szélsőérték. Viszont az ajak és nyelv azonosítására jól működött az eljárás. 14.1 A nyelv és az ajkak detektálása A felvételek során csak a száj külső pontjaira tudtunk markereket helyezni. Ebből kifolyólag nem ált módunkban kategorikusan kijelenteni, hogy a száj csukva van-e. Másik probléma a nyelv láthatósága, vagy épp láthatatlansága. A nyelv további információt hordozhat azáltal, hogy mennyire látszik és hogy horizontálisan hol helyezkedik el. (Például az „L” hang esetén a nyelv a szájpadlást érinti.) Az algoritmus koncepciója a következő. Detektáljuk a legpirosabb területeket, hiszen azok általában az ajkak vagy a nyelv. Két meggondolásból is érdemes a detektálást a 8.1-es és a 8.2-es FP közé eső területre korlátozni. Egyrészt az eljárás gyorsabb lesz azáltal, hogy nem kell vizsgálnia a teljes 720*576-os tartományt, másrészt biztosabban hagyatkozhatunk a piros területekre. (Ugyanis elképzelhető hogy a félig árnyékolt arcon hasonló színfeltételekre bukkanunk.) A 8.1 és 8.2 FP-ket már az első feldolgozásokban is jól meg tudtam határozni. Egyszerűen csak az azonosított négy koordinátát kell kihasználnom. Ezek mindegyike meghatároz egy egyenest, az egyenesek által közrezárt terület a vizsgálandó rész. (Érdemesebb egy pár pixeles ráhagyást hagyni az esetleges FP-hez való viszonyítás miatt.) Az algoritmus alkalmas a következő állapotok közti döntéshozásra: Az ajkak csukva vannak, a száj nyitva van, de a nyelv nem látszik, illetve a száj nyitva van és látszik a nyelv. Ugyanis ha elvégezzük a soronkénti átlagos hisztogram alapú elemzést a közbezárt területre, a következő állapotokat kapjuk: (14.1 ábra) - Egy összefüggő terület, mely csak akkor lehetséges, ha a száj teljesen csukva van. Hiszen ekkor a két FP közti terület teljes szélességében megfelel a hisztogram-feltételnek. - Két összefüggő terület, mely csak akkor lehetséges, ha száj úgy van nyitva, hogy nem látszik a nyelv. Ugyanis az egyik FP alatt közvetlenül az egyik ajak, míg a másik FP felett közvetlenül a másik ajak szerepel. Ha ez a két terület nem ér össze, akkor a száj biztosan nyitva van. - A három összefüggő tartomány csak akkor lehetséges, ha az ajkakat reprezentáló területek között egy harmadik is megjelenik. Ez a nyelv. Nem szabad megfeledkezni még egy esetről. Sokszor látható a felvételeken, hogy az alsó fogsor nem látszik, és így a nyelv és az alsó ajak egybeolvad. Ez viszont csak akkor lehet,
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
42
hogyha a nyelv alul helyezkedik el. Mivel Lucia, és a többi MPEG-4 szabványú modell normál állapotban alul tartja a nyelvét, így ezt változatlan formában meg lehet hagyni.
14.1 ábra: A hisztogram elemzéssel történő döntéshozás a nyelvekre és az ajkakra
14.2 Az ajak belső pontjainak azonosítása Felmerülhet valakiben a kérdés, hogy hogyan mozgatta Lucia a belső szájszél pontjait. A válasz, hogy örökölte a külső pontok mozgását. Tehát ha valaki nem definiálja a 2.2-2.9 FP mozgását, akkor az a 8.1-8.8-nak megfelelően mozognak. Főképp ez az oka, hogy Lucia képtelen, még ha csak két dimenzióban is, de csücsöríteni. Tehát a csücsörítés megoldására egyik elve a száj belső pontjainak detektálása lenne. Czap László doktori disszertációjában mutatott olyan kísérleteket, ahol a száj alakját egy oválissal közelítették. [3] Ő az ovális meghatározásához erősen kirúzsozott beszélőt használt. Innen jött az ötlet, hogy a száj ilyen fajta kiemelése alkalmas lehet az ajak belső MPEG-4 pontjainak meghatározására. Tehát kerestem egy olyan felvételt, ahol a beszélő élénken ki van rúzsozva, és különböző HSV és RGB színszűrőkkel teljesen el tudtam különíteni az ajkakat az arc többi részétől. Innentől az FP detektálóhoz hasonló binarizáló eljárást alkalmaztam a szájra. Az így kapott folt legbaloldalibb pontja a 8.4-es FP. A 8.3-as FP pedig a megmaradó terület legjobboldalibb pixelje. (A nagy kvantálási zaj miatt a szélső FP-k meghatározásánál szélesebb tartományban vettem az átlagot.) A két, most már ismert FP közti távolságot negyedekre felosztom, és merőleges egyeneseket állítok rájuk. Abban a két pontban, ahol ez az egyenes metszi a binarizált területet, ott lesznek a további FP. (Az MPEG-4 szabvány is így határozza meg az egyes FP-k közti összefüggéseket.) A belső pontok meghatározása is hasonlóan történik, annyi a különbség, hogy a száj belső részét kell most elkülöníteni az ajaktól. Ez úgy történik, hogy az ajak által közbezárt területet kitöltöm egyesekkel, majd a színfeltétel utáni bináris képből kivonom. Ezek után ugyan azon lépések következnek, mint a száj külső részének meghatározásakor. (14.2 ábra)
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
43
Tehát egy jó közelítést lehetett adni a száj belső pontjaira. Sajnos a felvételen nem volt elhelyezve referencia pont, így alkalmatlan volt ez a reprezentáció Lucián történő megjelenítésre, de legalább ismerjük a belső pontok helyét.
14.2 ábra: Az ajak külső és belső pontjainak meghatározása külön markerek nélkül
15. Mobilon futtatható fejanimáló rendszer. Nyílván való, hogy Lucia ebben a formában még egy jó darabig nem lesz alkalmas mobiltelefonon történő futtatásra a maga közel harmincezer polygonjával. Ezért, felhasználva Luciában szerzett tapasztalataimat egy új rendszer kivitelezésébe kezdtem. A tervezés során a figyelembe vettem a mobiltelefonok korlátozott memória és processzor kapacitását. A lehető legegyszerűbb számításokra és ábrázolásokra törekedtem a cél elérésének érdekében. A rendszer a János nevet kapta, mert megjelenített modell egy szabad felhasználású, John névre hallgató fej egy részét ábrázolja. 15.1 A modell elkészítése A nyilvános John modellnek több olyan tulajdonsága is volt, mely alkalmassá teszi mobilon történő megjelenítésre. Egyrészt VRML alapú, így könnyen importálható a grafikai modellező programokba. Másrészt viszonylag kevés polygonból áll. De még így is rendelkezik olyan részekkel, melyekkel egyenlőre nem kell foglalkozni. Ilyen a szeme, füle vagy épp a homloka. Szóval ezeket 3d Studio Max-ban levágtam róla, és ASCII formátumú fájlként exportáltam ki. Az exportált fájl tartalmazta a vertexek halmazát (körülbelül 300-at), melyek x, y és z koordinátákkal adva voltak. Minden vertex kapott továbbá egy index értéket is, mely alkalmassá teszi a rájuk való hivatkozást. A fájlban továbbá szerepeltek a polygonok definíciói is. Ez úgy nézett ki, hogy minden polygonra fel volt sorolva az a három vertex-index, mely definiálja azt. A polygonok száma körülbelül 600 maradt. A későbbi feldolgozás kedvéért a két halmazt külön-külön fájlban tároltam el.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
44
15.2 Megjelenítés Mivel az OpenGl mind PC-s mind mobil környezetben viszonylag könnyedén megvalósítható, így döntöttünk eme grafikai rendszer mellett. A modell megjelenítése során csak az alapvető képelemeket használom, hogy ezáltal is kevesebb számítást kelljen a gépnek elvégeznie. A rendszerben lehetőség van vertex, háló vagy polygon alapú megjelenítésre. A polygon alapú megjelenítésnél külön gondot fordítottam a fényekre, és a fények által keltett árnyalások kezelésére. (15.1 ábra)
15.1 ábra: A fejanimáló rendszer felülete
Mivel a modell háromdimenziós, így a megjelenítő motornak is kell támogatnia a 3D-t. Ebből a megfontolásból a modell körüli világot háromdimenziósra tervezetem, és lehetőséget adtam a kamera elfogatására, eltolására és zoomolására, ezzel is növelve az élethűséget. (Ezek nem növelik a számítás igényt, csak akkor, ha használják azokat, ez pedig opcionális.) 15.3 Deformálás Még mielőtt a rendszer arra kezdtem volna fejleszteni, hogy dekódolni tudjon komplett az MPEG-4 folyamokat, ki kellett próbálnom, hogy milyen deformálásokra képes. Az én megfontolásomban minden FP-t egy kinevezett vertex reprezentál. Ezeknek a vertexeknek az indexe el van tárolva. Az FP köré nem definiáltam hatóköröket, mert a vezérlés úgyis a száj környékére szorítkozott volna, ott pedig alkalmatlan ez a módszer. Végül minden egyes FP-hez felsoroltam a hozzá tartozó vertexeket. Ezek kijelölésében nagy segítségemre volt a nyílt forráskódú XFace program, melyet kifejezetten MPEG-4 alapú Facial Animation támogatására fejlesztettek ki. [21]
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
45
A program kimeneteként megjelenő XML alapú nyelvet tudtam használni a szükséges vertexhalmazok azonosítására. Az animálás során az MPEG-4 szabványnak megfelelően az FP-ket mozgatom. Kérdés még mindig az, hogy ezek függvényében hogyan mozogjanak a vertexek. És mekkora legyen egy FP hatóköre. (A hatókör most nem vertex hovatartozást jelent, hanem mozgási súlytényező meghatározásának feltételét.) Azt az egyedi megoldást választottam, hogy egy FP hatóköre legyen az FP és a hozzá tartozó legtávolabbi vertex távolsága. Ennek arányában kiszámolom a koszinuszos súlytényezőket minden egyes vertexre. A modell adottsága, hogy úgy lehetett definiálni a vertexek hovatartozását, hogy az nem esett soha két vagy több FP-hez. A programomban lehetőség van FP-k kijelölésére, és azok mozgatására, megfigyelve ezzel a környezetük mozgását. 15.4 Animálás Úgy gondoltam, az lesz a legszerencsésebb, hogyha a János rendszert ugyan az a fájlforma vezérli, mint Luciát, hiszen egyszer már elkészítettem a detektált markerek MPEG-4 formájú leképzését. Tehát ahelyett, hogy a rendszeremet a log fájlnak megfelelően fejlesztettem volna, inkább a kvázi-szabványos utat választottam. Az animálás során a rendszer miliszekundomok alatt elvégzi az FP és azok hatóköreinek mozgását. A mozgás során figyelembe veszi a János modell FAPU-jait is. Miután deformálta a vertexeket, kirajzolja a polygonokat. Az MPEG-4 az arc normál állapotához képesti elmozdulással valósítja meg az animációt. Tehát ahhoz, hogy a következő frame-ben is meg lehessen valósítani a mozgatásokat, vissza kell mozgatni az FP-ket az eredeti helyükre. Ez azonban láthatatlanul történik. A dinamika megtartása érdekében elindítok egy stoppert az elmozdulások kiszámítása előtt. A számlálót csak akkor állítom meg, ha az összes FP visszakerült az eredeti helyére. A stopper által „mutatott” idő adja meg a teljes animálás idejét. Ha ez az idő kevesebb (márpedig a méréseim szerint így van), mint mondjuk a 25 fps-nek megfelelő idő, akkor a gép vár. (Kitartja a modell aktuális képét). Tehát például, ha a teljes mozgatási, kirajzolási és visszamozgási eljárás tart 18 ms-ig, akkor a gép a 25 fps-nek megfelelő 40 ms mínusz 18 ms, azaz 22 ms időt vár, majd ugrik a következő kockára. Ugyan a fejanimáló rendszer a mobiltelefonon még nem valósult meg, de bízom abban, hogy munkám alapul szolgál majd a rendszer megvalósításához.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
46
16. Következtetés Sikerült kifejlesztenem egy olyan eljárást, mely feldolgozza az audiovizális-adatbázist. A feldolgozás során automatikusan azonosítom a beszélőre festett FP-ket, melyek alkalmasak a vizuális beszéd leírására. A koordináta transzformációknak köszönhetően sikerült kiaknáznom a fej mozgásából származó hibákat. A medián szűrésnek köszönhetően az FP-k kvatálási zaja mérséklődött. A különböző FP reprezentációknak köszönhetően további hibákat tudtam kimutatni és javítani. Elsajátítottam egy komplett MPEG-4 szabványú fejanimáló rendszer működését és vezérlését. Megoldásra került az általunk rögzített FP-k mozgásának modellen való megjelenítése. Megtörtént a rendszer minőségének vizsgálata, mely azt bizonyítja, hogy a közvetlen speech-to-animation konverzió megoldható. A hisztogram alapú vizsgálatoknak köszönhetően további paraméterek kinyerését oldottam meg. Kifejlesztettem egy olyan fejanimáló rendszert, mely alkalmas lehet arra, hogy egy mobil készüléken is futtatható legyen. Ha sikerül felderíteni Lucia korlátait, akkor el tudjuk dönteni, hogy ebben a formában fejleszthető-e, vagy át kell-e alakítani, esetleg új modellt kell létrehozni. Gyakorlatilag hónapról-hónapra tudtunk előállni új Lucia verzióval, melynek teszteléséhez a siketek jelenléte nélkülözhetetlen lett volna. A tesztek visszajelzése nélkül nem tudtunk volna érdemben tovább haladni.
47
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer Köszönetnyilvánítás Hálás
köszönetem
szeretném
kifejezni
a
projektben
résztvevő
siketeknek
és
nagyothallóknak a tesztekért és interjúkért. Külön köszönettel tartozom Takács György Professzor Úrnak az irányelvek meghatározásáért, az útmutatásokért és a folyamatos bíztatásokért, Tihanyi Attilának és Feldhoffer Gergelynek a gyakorlatias felfogásukból származó ötleteikért, Bárdi Tamásnak az elméleti alapok megteremtéséért, illetve a mobilos csapat összes tagjának az együttműködésért és bíztatásokért. Irodalomjegyzék [1] Sumby, W. H. and I.Pollack, „Visual contributions to speech intelligibility in noise’ Journal of the Acoustical Society of America 1954/26 pp. 212-215. [2] Beskow, J., „Talking Heads – communication, articulation and animation”, Proceedings of Fonetik ’96, Nasslingen, Sweden, 1996. [3] Czap L., „Audiovizuális beszédfelismerés és szitézis”, PhD értekezés, 2004. [4] K. Arai, T. Kurihara, K. Anjyo, “Bilinear interpolation for facial expressions and metamorphosis in real-time animation”, The Visual Computer, 12, pp. 105–116, 1996. [5] Parke F. I., „Parametrized medels for facial animation”, IEEE Computer Graphics, 2(9): pp. 61-68, 1982. [6] Waters K., „A muscle model for animating three-dimensional facial expressions” Computer Graphics, 21: pp. 17-24, 1987. [7] I. Pandzic and R. Forchheimer, „MPEG-4 Facial Animation: The Standard, Implementation and Applications”, Wiley, 2002. [8] Pelachaud C., E. Magno-Caldognetto, Zmarich C. and Cosi P., „An approach to an Italian Talking Head”, Proceedings Eurospeech 2001, Aalborg, Denmark, 2001. [9] Beskow, J., Nordenberg, M., „Data-driven Synthesis of Expressive Visual Speech using an MPEG-4 Talking Head”, Proceedings of Interspeech 2005 Lisbon, Portugal, 2005. [10] Bárdi T., Feldhoffer G., Harczos T., Srancsik B., Szabó G. D., „Audiovizuális beszédadatbázis és alkalmazásai”, Híradástechnika, 2005/10. [11] Feldhoffer G., Bárdi T., Jung G., Hegedűs I. M., „Mobiltelefon alkalmazások siket felhasználóknak”, Híradástechnika, 2005/10. [12] Zoric, G., Pandzic, I.S., „Automatic lip sync and its use in the new multimedia services for mobile devices”, Proceedings of the 8th International Conference on Telecommunications, Zagreb, Croatia, 2005. [13] Massaro, D.W., Beskow, J., Cohen, M.M., Fry C.L., Rodriquez, T. "Picture My Voice: Audio to Visual Speech Synthesis using Artificial Neural Networks" In Proceedings from AVSP'99, Santa Cruz, USA., 1999.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
48
[14] G. Takács, A. Tihanyi, T. Bárdi, G. Feldhoffer, B. Srancsik: “Speech to facial animation conversion for deaf applications” 14th European Signal Processing Conf., Florence, Italy, September 2006. [15] G. Takács, A. Tihanyi, T. Bárdi, G. Feldhoffer, B. Srancsik: “Database Construction for Speech to Lip-readable Animation Conversion” 48th Int. Symp. ELMAR-2006 on Multimedia Signal Processing and Communications, Zadar, Croatia, June 2006. [16] Takács Gy. et al., „Siketek beszédkommunikációját mobiltelefonnal segítő eszközök fejlesztése”, Szakmai beszámoló (EMI – 0008 / 03 KPI), PPKE-ITK, 2005. [17] Beskow, J. et al., „Synthetic faces as a lipreading support”. Proceedings of ICSLP, Sydney, Australia. 1998. [18] Beskow, J., Elenius, K. and MacGlashan, S. „Olga - A dialogue system with an animated talking agent”, Proceedings of Eurospeech '97, Rhodes, Greece, 1997. [19] Cosi P., Fusaro A., Tisato G., „LUCIA a New Italian Talking-Head Based on a Modified Cohen-Massaro’s Labial Coarticulation Model”, Proceedings of Eurospeech 2003, Geneva, Switzerland, September 1–4, 2003, Vol. III, pp. 2269-2272. [20] Shdaifat, I., Grigat, R.-R., ”A system for audio-visual speech recognition”, Proceedings of Interspeech 2005, pp. 1197-1200. [21] Balci K., „Xface: Open Source Toolkit for Creating 3D Faces of an Embodied Conversational Agent”, Smart Graphics, 2005, pp. 263-266.
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
49
1. sz. melléklet
Lucia TempFile.fap oszlopainak MPEG-4 szabványú megfeleltetése kiegészítve a mozgás irányával. Az utolsó 14 paraméterből 12 a mi kiegészítésünk.
Sorszám 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
Paraméter frame Áll + fogsor y Száj 2.2 y Száj 2.3 y Száj 2.4 x Száj 2.5 x Száj 2.6 y Száj 2.7 y Száj 2.8 y Száj 2.9 y Száj 2.4 y Száj 2.5 y Áll és fogsor z All és fogsor x Szájcsücsör Szemhéj 3.1 Szemhéj 3.3 Szemhéj 3.4 Bal szem elfordulás z körül Jobb szem elfordulás z körül Bal szem elfordulás x körül Jobb szem elfordulás x körül Szemöldök 4.1 y Szemöldök 4.2 y Szemöldök 4.3 y Szemöldök 4.4 y Szemöldök 4.5 y Szemöldök 4.6 y
Irány
plusz lefelé plusz befelé plusz befelé plusz kifelé plusz kifelé plusz befelé plusz befelé plusz befelé plusz befelé plusz fölfelé plusz fölfelé plusz felénk plusz Luciának balra plusz felénk plusz befelé plusz befelé plusz befelé plusz kifelé plusz befelé plusz lefelé plusz lefelé
plusz fölfelé plusz fölfelé plusz fölfelé plusz fölfelé plusz fölfelé plusz fölfelé
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
Szemöldök 4.1 x Szemöldök 4.2 x Arc 5.4 és 5.3 y Arc 5.4 és 5.3 y Fejforgás x körül Fejforgás y körül Fejforgás z körül Száj 8.1 y Száj 8.2 y Száj 8.3 x Száj 8.4 x Száj 8.5 y Száj 8.6 y Száj 8.7 y Száj 8.8 y Száj 8.3 y Száj 8.4 y Száj 2.2 x Száj 2.3 x Száj 2.6 x Száj 2.7 x Száj 2.8 x Száj 2.9 x Orr 9.3 y Orr 9.3 x Száj 8.1 x Száj 8.2 x Száj 8.5 x Száj 8.6 x Száj 8.7 x Száj 8.8 x
plusz befelé plusz befelé
plusz fölfelé plusz fölfelé
plusz lefelé plusz Luciának balra plusz Luciának jobbra plusz befelé plusz befelé plusz kifelé plusz kifelé plusz befelé plusz befelé plusz befelé plusz befelé plusz fölfelé plusz fölfelé plusz Luciának balra plusz Luciának balra plusz Luciának balra plusz Luciának balra plusz Luciának balra plusz Luciának balra plusz fölfelé plusz Luciának balra plusz Luciának balra plusz Luciának balra plusz Luciának balra plusz Luciának balra plusz Luciának balra plusz Luciának balra
50
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
51
2. sz. melléklet Egy képkocka szájkörüli területének hisztogram elemzése.
2. mel. 1. ábra: vízszintes hisztogram; a fogak és a nyelv látszik
2. mel. 2. ábra: vízszintes hisztogram; a fogak és a nyelv nem látszik
2. mel. 3. ábra: vízszintes hisztogram; a fogak és a nyelv látszik, jellegzetes szélsőértékek jelölve
2. mel. 4. ábra: vízszintes hisztogram; a fogak és a nyelv nem látszik, jellegzetes szélsőértékek jelölve
MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer
52
Függelék A függelék tartalmazza azokat a kiadott és elfogadott nemzetközi és hazai szakcikkeket, melyekben társszerzőként vettem részt, és melyek a rendszer kidolgozásával kapcsolatban születtek. A szerzők mindegyike hozzájárult, hogy a cikkeket a diplomatervemben megjelentessem.