orientált színátmenetek Hisztogramja (HOG) a Dlib-ben
Az orientált színátmenetek hisztogramja (HOG) egy jellemzőleíró, amelyet a számítógépes látásban és képfeldolgozásban használnak objektumérzékelés céljából. A HOG mögött az az ötlet áll, hogy kivonja a jellemzőket egy vektorba, és betáplálja azt egy osztályozási algoritmusba, mint például egy támogató Vektor gép, amely felméri, hogy egy arc (vagy bármilyen tárgy, amelyet ténylegesen felismer) jelen van-e egy régióban vagy sem. A HOG funkcióleíróban a színátmenetek ( orientált színátmenetek ) irányainak eloszlását ( hisztogramjait ) használják jellemzőként. A kép színátmenetei ( x és y származékok ) azért hasznosak, mert a színátmenetek nagysága nagy az élek és a sarkok körül ( a hirtelen intenzitásváltozások régiói), és tudjuk, hogy az élek és a sarkok sokkal több információt tartalmaznak az objektum alakjáról, mint a lapos régiók.
az eredeti tanulmányban az emberi test kimutatására szolgáló eljárást hajtották végre, az észlelési lánc pedig a következő volt :
egy kép arcának a hog módszerrel történő észleléséhez a következő lépéseket kell követni:-
- számítsa ki a gradiens képeket
- számítsa ki a disznót
- blokk normalizálás
- a vektor SVM-be történő táplálása
számítsa ki a gradiens képeket: Az első lépés a kép vízszintes és függőleges színátmenetének kiszámítása, a kép szűrésével a következő kernelekkel :

itt a bemeneti képeknek azonos méretűeknek kell lenniük, rögzített képaránnyal, mint például 64×128, 100 200 vagy 128 256, de nem 101×205.


a gradiens kép eltávolított sok nem lényeges információt ( pl. állandó színes háttér ), de Kiemelt körvonalakat. Még mindig azonosíthatjuk a képet. Minden pixelnél a gradiensnek van egy nagysága és egy iránya.
számítsuk ki a disznót : a képet ezután 8×8 cellákra osztjuk, hogy kompakt ábrázolást nyújtsunk, és a disznót robusztusabbá tegyük a zajjal szemben. Ezután kiszámítunk egy disznót mindegyik cellára.

9.ábra: 8 a DISZNÓSEJTEK. A képet 4x méretezi a megjelenítéshez (https://www.learnopencv.com/wp-content/uploads/2016/11/hog-cells.png)
a régión belüli gradiens irányának becsléséhez egyszerűen hisztogramot készítünk a gradiens irányok 64 értéke (8×8) és azok nagysága (további 64 érték) között minden régióban. A következő lépés az, hogy hozzon létre egy hisztogram gradiensek ebben a 8-ban 8 sejtek. A hisztogram 9 tartályt tartalmaz, amelyek megfelelnek a 0, 20, 40 … 160 szögeknek.
amikor felépítjük a disznót, akkor 3 eset merül fel:
- mi van, ha a szög kisebb, mint 160++, és nem félúton 2 osztály között. Ezután ilyen esetekben a szög a disznó megfelelő kategóriájába kerül.
- mi van akkor, ha a szög kisebb, mint 160 ++ és pontosan 2 osztály között van. Ezután ilyen esetekben a 2 legközelebbi osztályhoz való egyenlő hozzájárulást vesszük figyelembe, és a nagyságot 2
- – re osztjuk, mi van, ha a szög nagyobb, mint 160^. Ezután ilyen esetekben úgy véljük, hogy a pixel arányosan hozzájárult 160, illetve 0 GB-hoz.
ábrán. 10 a kékkel körülvett pixel szöge (iránya ) 80 fok, nagysága pedig 2. Tehát 2-et ad az 5.kukához, mivel az első esetet követi. A pirossal körülvett pixel gradiense szöge 10 fok, nagysága pedig 4. Mivel a 10 fok félúton van 0 és 20 között, a pixel szavazata egyenletesen oszlik el a két kukába, ahogy a második esetet követi.
ábrán. 11 a 165 fokos szögű pixel arányosan járul hozzá a 0 fokos tárolóhoz és a 160 fokos tárolóhoz, amint az a harmadik esetet követi.
a disznó így néz ki minden 8×8 cellára (12.ábra).
blokk normalizálás : végül egy 16×16 blokk alkalmazható a kép normalizálására és a világítás invariánssá tételére. A 16×16 blokk alkalmazása azt jelenti, hogy a képet sötétebbé tesszük azáltal, hogy az összes pixelértéket elosztjuk 2-vel, így a gradiens nagysága felére változik, ezért a hisztogram értékei felére változnak. Ideális esetben azt akarjuk, hogy leírónk független legyen a világítási variációktól.
A vektor SVM-be történő betáplálása: egy 16-os 16-os blokknak 4 hisztogramja van, amelyek összefűzhetők, hogy 36 x 1-es elemvektort képezzenek. Végül az összes 36×1 vektor egy nagy vektorba van összefűzve, amely a mi jellemző vektorunk lesz, amelyen egy puha SVM-et képezhetünk és megjósolhatjuk az arcot egy képen.
a Dlib egy képzett modell kimutatására arcok jelen van csak meg kell létrehozni egy objektumot, hogy a modell.
tehát vége az arcok előrejelzésének A Hog használatával a Dlib használatával.
következtetés
van egy hatalmas vita mindig folyik, amely jobb kimutatására arcok haar kaszkád osztályozó vagy HOG alapú arc detektor. A Dlib megelőzi a haar cascade osztályozót a megvalósítás, a sebesség és a pontosság terén. A HOG osztályozó használatának számos előnye van. Először a képzés egy csúszó alablak segítségével történik a képen, így nincs szükség részmintavételre és paraméter-manipulációra, mint a Haar osztályozóban. Ez megkönnyíti a Dlib HOG + SVM arcfelismerését és gyorsabbá teszi az edzést. Vegye figyelembe, hogy a HOG nagyobb pontossággal rendelkezik az arcfelismeréshez, mint a Haar kaszkád osztályozó. Haar cascade osztályozó nem több hamis pozitív jóslat arcok, mint HOG alapú arc detektor.
Ha szeretné látni a pontosságát haar cascade osztályozó vs HOG alapú arc detektor itt olvasható.