Modern Arcfelismerés

Hogyan építsünk saját biometrikus rendszert videók alapján?

A mesterséges intelligencia és a számítógépes látás (Computer Vision) egyik legizgalmasabb területe az arcfelismerés. Sokan azt hiszik, hogy ehhez bonyolult felhős infrastruktúra vagy óriási adatközpontok kellenek, pedig megfelelő modellekkel és okos adatfeldolgozással lokálisan, akár egy erősebb PC-n is lenyűgöző eredményeket érhetünk el.

A legújabb projektemben egy olyan Python alapú rendszert építettem, amely képes videófelvételekből tanulni, és valós időben azonosítani személyeket – mindezt GPU gyorsítással. Lássuk a rendszer felépítését és működési logikáját!

A Rendszer Szíve: InsightFace és az Embeddingek

A megoldás alapja az InsightFace keretrendszer, amely a jelenleg elérhető egyik legpontosabb nyílt forráskódú arcfelismerő könyvtár. Ahelyett, hogy hagyományos képeket hasonlítanánk össze pixelről pixelre (ami lassú és pontatlan lenne), a rendszer az arcokat embeddingekké (matematikai vektorokká) alakítja.

Gondoljunk erre úgy, mint egy ujjlenyomatra: minden arcot egy számsorozat ír le. Ha két számsorozat közel van egymáshoz a térben, akkor az ugyanaz a személy.

1. Fázis: Az „Okos” Adatbázis Építése

A rendszer első modulja felelős a tanulásért. Ahelyett, hogy statikus fotókat kérnék be, a program videófájlokat dolgoz fel. Ez sokkal robusztusabb adatbázist eredményez, hiszen egy videóban az arc több szögből, különböző megvilágításban is látható.

A feldolgozás lépései:

  • Képkockák elemzése: A rendszer végignézi a bemeneti videókat (a fájlnév alapján azonosítva a személyt).
  • Arcdetektálás és Vektorizálás: Minden releváns képkockáról kinyeri az arcot és legenerálja a hozzá tartozó vektort.
  • Minőségbiztosítás (Outlier szűrés): Ez a legfontosabb lépés. Nem minden képkocka tökéletes (elmosódott arc, csukott szem). A scriptem nem egyszerűen elment mindent, hanem statisztikai alapon (Cosine Similarity) kiszűri a „kilógó”, rossz minőségű mintákat.
  • Optimalizálás: A megmaradt, legjobb minőségű vektorokból a rendszer egyetlen átlagolt profilt (optimalizált embeddinget) készít minden személyhez. Ez biztosítja, hogy a felismerés később villámgyors legyen, hiszen személyenként csak egyetlen adatsort kell összehasonlítani.

2. Fázis: Valós Idejű Felismerés

A második modul maga a felismerő motor, amely webkameráról vagy videófájlból dolgozik. A cél itt a sebesség volt, ezért a rendszer GPU gyorsítást (CUDA) használ.

Hogyan dönt a gép?

Amikor a kamera képet lát:

  1. A rendszer milliszekundumok alatt detektálja az arcokat.
  2. Legenerálja az aktuális arc vektorát.
  3. Ezt a vektort összehasonlítja az előre betöltött, optimalizált adatbázissal.
  4. Cosine Similarity (koszinusz hasonlóság) számítással megállapítja, mennyire hasonlít a látott arc az adatbázisban lévőkhöz.

Ha a hasonlóság elér egy bizonyos küszöbértéket (threshold), a rendszer zöld kerettel jelzi a nevet és a hasonlósági pontszámot. Ha az érték túl alacsony, a személyt „Ismeretlenként” jelöli meg pirossal.

Miért jobb ez a megközelítés?

Ez a struktúra (Learning Pipeline + Inference Engine) ipari sztenderdnek tekinthető. Azzal, hogy a tanulási fázisban „tisztítjuk” az adatokat és statisztikai átlagolást végzünk, kiküszöböljük a téves azonosítások nagy részét. A végeredmény egy olyan rendszer, amely nem csak felismeri, hogy ki áll a kamera előtt, de képes különbséget tenni a biztos egyezés és a bizonytalan hasonlóság között.