Histogram af orienterede gradienter (HOG) i Dlib
histogrammet af orienterede gradienter (HOG) er en funktionsbeskrivelse, der anvendes i computersyn og billedbehandling med henblik på objektdetektion. Ideen bag HOG er at udtrække funktioner i en vektor og fodre den i en klassificeringsalgoritme som en Støttevektormaskine, der vurderer, om et ansigt (eller ethvert objekt, du træner det til at genkende faktisk) er til stede i en region eller ej. I HOG-funktionsbeskrivelsen anvendes fordelingen ( histogrammer ) af retninger af gradienter (orienterede gradienter ) som funktioner. Gradienter af et billede er nyttige, fordi størrelsen af gradienter er stor omkring kanter og hjørner ( regioner med pludselige intensitetsændringer), og vi ved, at kanter og hjørner pakker meget mere information om objektform end flade områder.
i det originale papir blev processen implementeret til påvisning af menneskekroppen, og detektionskæden var følgende :

detektion af et ansigt fra et billede ved hjælp af Hog-metoden kræver følgende trin, der skal følges: –
- Beregn gradientbillederne
- Beregn hog
- blok normalisering
- fodring af vektoren i SVM
Beregn gradientbillederne
Beregn gradientbillederne: Det første trin er at beregne billedets vandrette og lodrette gradienter ved at filtrere billedet med følgende kerner :

Her skal inputbillederne være af samme størrelse med et fast billedformat som 64h128, 100h200 eller 128h256, men ikke 101h205.


gradientbilledet fjernede en masse ikke-væsentlige oplysninger (f.eks. Vi kan stadig identificere billedet. Ved hvert punkt har gradienten En størrelse og en retning.
Beregn svin: billedet er derefter opdelt i 8H8 celler for at tilbyde en kompakt repræsentation og gøre vores svin mere robust over for støj. Derefter beregner vi et svin for hver af disse celler.

for at estimere retningen af en gradient inde i en region bygger vi simpelthen et histogram blandt de 64 værdier af gradientretningerne (8H8) og deres størrelse (yderligere 64 værdier) inde i hver region. Det næste trin er at oprette et histogram af gradienter i disse 8-8-celler. Histogrammet indeholder 9 kasser svarende til vinkler 0, 20, 40 … 160.
når vi bygger svin, opstår der 3 tilfælde:
- hvad hvis vinklen er mindre end 160 liter og ikke halvvejs mellem 2 klasser. Så i sådanne tilfælde vil vinklen blive tilføjet i den rigtige kategori af svin.
- hvad hvis vinklen er mindre end 160 liter og nøjagtigt mellem 2 klasser. Så i sådanne tilfælde betragter vi et lige Bidrag til de 2 nærmeste klasser og opdeler størrelsen i 2
- hvad hvis vinklen er større end 160 liter. Så i sådanne tilfælde mener vi, at billedpunktet bidrog proportionalt til 160 og til 0.

i fig. 10 billedpunktet omkranset i blåt har en vinkel (retning ) på 80 grader og en størrelse på 2. Så det tilføjer 2 til 5. bin, da det følger det første tilfælde. Gradienten ved billedpunktet omkranset ved hjælp af rødt har en vinkel på 10 grader og en størrelse på 4. Da 10 grader er halvvejs mellem 0 og 20, deles afstemningen af billedfeltet jævnt i de to skraldespande, da det følger det andet tilfælde.

i fig. 11 billedpunktet med Vinkel 165 grader bidrager proportionalt til 0 graders bin og 160 graders bin som det følger det tredje tilfælde.
grisen ser sådan ud for hver 8H8 celle som (fig 12).

blok normalisering : endelig kan en 16h16 blok anvendes for at normalisere billedet og gøre det uforanderligt til belysning. Anvendelse af 16h16 blok betyder, at vi gør billedet mørkere ved at dividere alle billedværdier med 2, således at gradientstørrelsen ændres med halvdelen, og derfor ændres histogramværdierne med halvdelen. Ideelt set ønsker vi, at vores deskriptor skal være uafhængig af lysvariationer.
tilførsel af vektoren til SVM: en 16-liters 16-blok har 4 histogrammer, der kan sammenkædes til dannelse af en 36-1-elementvektor. Endelig er alle 36h1 vektorer sammenkædet til en stor vektor, som vil være vores funktionsvektor, hvorpå vi kan træne en blød SVM og forudsige ansigtet i et billede.
i Dlib er der en uddannet model til detektering af ansigter, du skal bare oprette et objekt af den model.
så det er slutningen af at forudsige ansigter ved hjælp af HOG ved hjælp af Dlib.
konklusion
der er altid en enorm debat, der er bedre til at opdage ansigter Haar cascade classifier eller HOG-baseret ansigtsdetektor. Dlib er foran haar cascade classifier over implementering, hastighed og nøjagtighed. Der er flere fordele ved at bruge HOG classifier. Først udføres træningen ved hjælp af et glidende undervindue på billedet, så der kræves ingen undersampling og parametermanipulation, som det er i Haar-klassifikatoren. Dette gør dlib ‘ s HOG + SVM ansigtsgenkendelse lettere at bruge og hurtigere at træne. Bemærk, at HOG har højere nøjagtighed til ansigtsgenkendelse end Haar cascade classifier. Haar cascade classifier gør mere falsk positiv forudsigelse på ansigter end HOG-baseret ansigtsdetektor.
Hvis du vil se nøjagtigheden af Haar cascade classifier vs HOG based face detector, kan du læse her.