Kaskadeklassifikatorer

Dette afsnit indeholder ingen kildehenvisninger. Hjælp venligst med at forbedre dette afsnit ved at tilføje henvisninger til pålidelige kilder. Ukilderet materiale kan blive anfægtet og fjernet.
Find kilder: “Cascading classifiers” – nyheder – aviser – bøger – scholar – JSTOR (juni 2019) (Lær hvordan og hvornår du kan fjerne denne skabelonbesked)

Skalering og rotationerRediger

Det fremgår af denne beskrivelse, at klassifikatoren ikke vil acceptere ansigter, der er vendt på hovedet (øjenbrynene er ikke i en korrekt position) eller på siden af ansigtet (næsen er ikke længere i midten, og skygger på siden af næsen kan mangle). Der skal trænes særskilte kaskadeklassifikatorer for hver rotation, der ikke er i billedplanet (side af ansigtet), og de skal trænes igen eller køres på roterede funktioner for hver rotation, der er i billedplanet (ansigtet på hovedet eller skråt til siden). Skalering er ikke et problem, da funktionerne kan skaleres (centerpixel, venstrepixel og højrepixel har kun en dimension i forhold til det undersøgte rektangel). I nyere kaskader er pixelværdi fra en del af et rektangel sammenlignet med en anden del af et rektangel blevet erstattet med Haar wavelets.

Stage propertiesRediger

For at have en god samlet ydelse skal følgende kriterier være opfyldt:

  1. Hvert trin skal validere alle ansigter og kan producere mange falske positive resultater. Hvis f.eks. trin 1 markerer 20 % af de rektangler, der indeholder et ansigt, som “indeholder ikke et ansigt” (falsk negativ rate = 20 %), kan kædens samlede præstation ikke være højere end 80 % ægte positive, uanset hvad de næste trin er, da 20 % af ansigterne allerede er blevet afvist.
  2. Dette tyder på, at et godt trin skal have 100 % ægte positive og f.eks. 40 % falsk positive, dvs. acceptere alle rektangler, der indeholder ansigter, og fejlagtigt markere mange rektangler som potentielt indeholdende et ansigt, der skal elimineres af senere trin. Hvis kun 1 ud af 1000 rektangler i et billede indeholder et ansigt, vil der stadig være 400 til 1 falske mulige ansigter efter det første trin.
  3. Hvis det første trin er meget hurtigt (nogle få operationer), har vi meget hurtigt elimineret 60 % af de rektangler, der ikke indeholder et ansigt.

Træningsproceduren for et trin er derfor at have mange svage lærere (simple pixelforskelsoperatorer), træne dem som en gruppe (hæve deres vægt, hvis de giver korrekt resultat), men være opmærksom på kun at have få aktive svage lærere, så beregningstiden forbliver lav.

Den første detektor af Viola & Jones havde 38 trin, med 1 feature i det første trin, derefter 10, 25, 25, 25, 50 i de næste fem trin, i alt 6000 features. De første trin fjerner hurtigt uønskede rektangler for at undgå at betale beregningsomkostningerne for de næste trin, således at beregningstiden bruges på at analysere dybt den del af billedet, der har en høj sandsynlighed for at indeholde objektet.

KaskadetræningRediger

Kaskader udføres normalt ved hjælp af omkostningsbevidst ADAboost. Tærsklen for følsomhed (0,8 i vores eksempel) kan justeres, så der er tæt på 100 % rigtige positive og nogle falske positive resultater. Proceduren kan derefter startes for trin 2 igen, indtil den ønskede nøjagtighed/beregningstid er nået.

Efter den indledende algoritme har man forstået, at træningen af kaskaden som helhed kan optimeres, så man opnår en ønsket sand detektionsrate med minimal kompleksitet. Som eksempler på sådanne algoritmer kan nævnes RCBoost, ECBoost eller RCECBoost. I deres mest grundlæggende versioner kan de forstås således, at de ved hvert trin vælger mellem at tilføje et trin eller at tilføje en svag læring til et tidligere trin, alt efter hvad der er billigst, indtil den ønskede nøjagtighed er opnået. Hvert trin i klassifikatoren må ikke have en detektionsrate (følsomhed), der er lavere end den ønskede rate, så der er tale om et optimeringsproblem med begrænsninger. For at være præcis vil den samlede følsomhed være produktet af trinfølsomhederne.

Kaskadeklassifikatorer er tilgængelige i OpenCV, med prætrænede kaskader for frontale ansigter og overkrop. Det er også muligt at træne en ny kaskade i OpenCV med enten haar_training- eller train_cascades-metoderne. Dette kan bruges til hurtig objektdetektion af mere specifikke mål, herunder ikke-menneskelige objekter med Haar-lignende egenskaber. Processen kræver to sæt af prøver: negative og positive, hvor de negative prøver svarer til vilkårlige ikke-objektbilleder. Tidsbegrænsningen i forbindelse med træning af en kaskadeklassifikator kan omgås ved hjælp af cloud-computing-metoder.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.