Kaskadindelning

Detta avsnitt innehåller inga källhänvisningar. Hjälp till att förbättra det här avsnittet genom att lägga till hänvisningar till tillförlitliga källor. Otillgängligt material kan ifrågasättas och tas bort.
Hitta källor: ”(Läs mer om hur och när du tar bort detta mallmeddelande)

Skalering och rotationerRedigera

Det framgår av den här beskrivningen att klassificeraren inte kommer att acceptera ansikten som är uppochnedvända (ögonbrynen är inte i rätt position) eller på sidan av ansiktet (näsan är inte längre i mitten och skuggor på sidan av näsan kan saknas). Separata kaskadklassificatorer måste tränas för varje rotation som inte är i bildplanet (sidan av ansiktet) och måste omtränas eller köras på roterade funktioner för varje rotation som är i bildplanet (ansiktet upp och ner eller lutar åt sidan). Skalning är inget problem, eftersom funktionerna kan skalas (centerpixel, vänsterpixel och högerpixel har endast en dimension i förhållande till den undersökta rektangeln). I senare kaskader har pixelvärde från en del av en rektangel jämfört med en annan ersatts med Haar wavelets.

StegegenskaperRedigera

För att få en god total prestanda måste följande kriterier uppfyllas:

  1. Varje steg måste validera alla ansikten, och kan ge många falskt positiva resultat. Om till exempel steg 1 markerar 20 % av de rektanglar som innehåller ett ansikte som ”innehåller inte ett ansikte” (falsk negativ andel = 20 %), kan kedjans totala prestanda inte vara högre än 80 % sant positiva, oavsett vilka de följande stegen är, eftersom 20 % av ansiktena redan har avvisats.
  2. Detta tyder på att ett bra steg måste ha 100 % sant positiva och till exempel 40 % falskt positiva, det vill säga att man måste acceptera alla rektanglar som innehåller ansikten och felaktigt markera många rektanglar som potentiellt innehåller ett ansikte, som ska elimineras av senare steg. Om endast 1 av 1000 rektanglar i en bild innehåller ett ansikte, kommer det fortfarande att finnas 400 till 1 falskt möjliga ansikten efter det första steget.
  3. Om det första steget är mycket snabbt (några få operationer) har vi eliminerat 60 % av de rektanglar som inte innehåller ett ansikte mycket snabbt.

Träningsproceduren för ett steg är därför att ha många svaga inlärare (enkla pixeldifferensoperatörer), träna dem som en grupp (öka deras vikt om de ger ett korrekt resultat), men vara uppmärksam på att bara ha några få aktiva svaga inlärare så att beräkningstiden förblir låg.

Den första detektorn av Viola & Jones hade 38 steg, med 1 funktion i det första steget, sedan 10, 25, 25, 25, 50 i de följande fem stegen, för totalt 6000 funktioner. De första stegen tar bort oönskade rektanglar snabbt för att undvika att betala beräkningskostnaderna för de följande stegen, så att beräkningstiden går åt till att djupt analysera den del av bilden som har hög sannolikhet att innehålla objektet.

KaskadträningEdit

Kaskader görs vanligtvis med hjälp av kostnadsmedveten ADAboost. Känslighetströskeln (0,8 i vårt exempel) kan justeras så att det finns nära 100 % sant positiva och några falskt positiva. Förfarandet kan sedan startas på nytt för steg 2, tills önskad noggrannhet/beräkningstid uppnås.

Efter den första algoritmen förstod man att träningen av kaskaden som helhet kan optimeras, för att uppnå önskad sann upptäcktsfrekvens med minimal komplexitet. Exempel på sådana algoritmer är RCBoost, ECBoost eller RCECBoost. I sina mest grundläggande versioner kan de förstås som att de vid varje steg väljer mellan att lägga till ett steg eller att lägga till en svag inlärare till ett tidigare steg, beroende på vad som är minst kostsamt, tills den önskade noggrannheten har uppnåtts. Varje steg i klassificeraren får inte ha en upptäcktsfrekvens (känslighet) som understiger den önskade frekvensen, så detta är ett begränsat optimeringsproblem. För att vara exakt kommer den totala känsligheten att vara produkten av stegens känslighet.

Kaskadklassificerare finns tillgängliga i OpenCV, med förtränade kaskader för frontala ansikten och överkropp. Det är också möjligt att träna en ny kaskad i OpenCV med metoderna haar_training eller train_cascades. Detta kan användas för snabb objektsdetektering av mer specifika mål, inklusive icke-mänskliga objekt med Haar-liknande egenskaper. Processen kräver två uppsättningar prover: negativa och positiva, där de negativa proverna motsvarar godtyckliga icke-objektbilder. Tidsbegränsningen vid utbildning av en kaskadklassificator kan kringgås med hjälp av molndatametoder.

Lämna ett svar

Din e-postadress kommer inte publiceras.