Parking Surveillance
foreground/background segmentation objectherkenning
Examen Beeldverwerking – Pieter Vancoillie
Doel van het (deel)project Uit beelden van een camera voetgangers, fietsers en auto’s
herkennen We nemen en camerabeeld als sequentie van frames die we analyseren Elk frame ondergaat: Segmentatie Classificatie
Foreground/Background Segmentation Doel is om pixels in het beeld als actief aan te duiden, deze
zijn interessant voor verder onderzoek Niet-actieve pixels worden als achtergrond beschouwd, deze worden niet verder onderzocht
Methode voor segmentatie Voor het segmenteren is de Mixture of Gaussians (MoG)
methode gebruikt MoG is een Mixture model Elke cluster van data in een Mixture model wordt voorgesteld door een bepaalde distributie, hier de normale verdeling Hierover straks meer
MoG - Implementatie Matlab code voor MoG is origineel van Power en Schoonees
en bewerkt door Jan Gobin & Pieter Cogghe Het resultaat zijn frames waarin de voorgrond rood is gekleurd. Interessanter om verder te bekijken zijn de masks die het algoritme opbouwt, in een mask is de voorgrond wit en de achtergrond zwart.
MoG - Snelheid Een frame met resolutie van 640x480 pixels, waarvan we
enkel de centrumstrook bekijken, heeft tussen de 6 à 8 seconden nodig voor analyse Oplossing: Doel van het (deel)project is detectie van voetganger, fietser en
auto Datareductie door een resolutieverlaging van het frame Op voorwaarde dat het patroon nog steeds herkenbaar is
MoG - Reductie Resolutie Uit de multiresolutieanalyse van de Haar-Wavelet
transformatie weten we dat de beschrijvende functie convergeert naar de grondtoon van de datareeks De reductie kent een ondergrens afhankelijk van het detailniveau gewenst in het patroon Detailniveau is afhankelijk van de toepassing: Onderscheid tussen auto en fietser Onderscheid auto en lichte vrachtwagen Onderscheid op type auto
MoG – Reductie Resolutie Voor het classificeren van voetgangers, fietsers en auto’s werden de level 2 beschrijvende
coëfficiënten (A2 ) van de 2D-Haar-Wavelet transformatie gebruikt Matlab bevat een WaveletToolbox : Functie: [C,S] =wavedec2(X,N,'wname') X: input matrix (frame) N: niveau van decompositie (2) C: vector met benaderende en detail coëfficiënten S: matrix met lengtes van de verschillende coëfficiënten reeksen
Voordeel: benaderende en detail coëfficiënten van de verschillende niveaus, handig voor
een meer dynamisch systeem Nadeel: benaderende coëfficiënten worden opgeslagen in zelfde resolutie ongeacht niveau Dit zou aanpassingen vergen aan het MoG-algoritme wat niet het doel is van deze voorcompressie, het MoG-algoritme moet onafhankelijk van de invoer werken. Oplossing: Eigen implementatie voor de decompositie (dim A2 = 160x120)
MoG-Conclusie De tijd voor het analyseren van één frame is hierdoor een
factor 10 gedaald en bedraagt nu ~ 0,4 seconden Op deze manier kunnen er 2 frames per seconde verwerkt worden Datareductie Voorgrond / Achtergrond segmentatie Classificatie
Object Herkenning - Classificatie We willen de herkende patronen gaan klasseren in 3 klassen: Auto Fietser Voetganger
Hiervoor zijn 2 alternatieven bekeken: Hopfieldnet K-means clustering
Hopfieldnet Een neuraal netwerk dat een biologisch associatief geheugen
modelleert Kan gebruikt worden voor patroonherkenning Het netwerk wordt getraind met verschillende bitpatronen (masks) die door de mens geclassificeerd zijn = de leerverzameling Na training zijn de klassen waarin we willen groeperen de stabiele toestanden Nu kan het net gebruikt worden om nieuwe frames te klasseren. Als een bepaald patroon wordt aangeboden is het resultaat de dichtst bijzijnde stabiele toestand (associatie)
Hopfieldnet
Hopfieldnet
K-means Clustering We klasseren in 3 groepen (k=3). Aangezien de testsequentie bijna geen frames met
voetgangers bevat zien we deze klasse als alles wat geen fiets en geen auto is De leerverzameling bevat ongeveer 400 frames, wordt deze leerverzameling goed ingedeeld dan weten we dat de gemiddelden bruikbaar zijn Als we drie gemiddelde patronen hebben kunnen we op deze basis klasseren
K-means - Implementatie Wat is het gemiddelde patroon van een groep patronen? Elk patroon is een binaire zwart-witfiguur Per groep tellen we alle patronen op en delen we door het aantal
patronen
Algoritme: 1. 2. 3. 4.
Arbitraire verdeling van de patronen Gemiddelden per groep berekenen Patronen opnieuw indelen Herhalen 2 & 3 tot de groepen stabiel zijn of maximum iteraties bereikt
Goed resultaat pas na selectie van de leerverzameling, er zijn te veel frames waar niks gebeurt t.o.v. het aantal frames waar wel een object te zien is, hierdoor stijgt de invloed van het ruis.
Theorie: MoG Het pixelproces: Hieronder verstaan we de veranderingen die een pixel
ondergaat in de loop van de tijd Op elk gegeven moment is de geschiedenis van de pixel gekend {X1, ...,Xt} = {I(x0, y0, i) : 1 ≤ i ≤ t} {x0,y0}: de pixel I: frame sequentie
Pixelproces - Ideaal
•Als enkel kleine wijzigingen optreden over tijd kan pixel {x0,y0} gemodelleerd worden door één adaptieve gaussiaan. (bv een pixel op een vast oppervlak onderhevig aan enkel geleidelijke lichtwijziging) •Zo is het duidelijk dat de waarde op tijdstip 5 te ver afwijkt van de norm en dus als voorgrond moet geklasseerd worden (een object komt voorbij)
Pixelproces - realiteit
•Vele oppervlakken hebben een multimodaal karakter •Hierboven zien we twee voorbeelden van oppervlakken met een bimodaal karakter •Rechts van de figuren zien we een plot met de rgb-waarden in functie van de tijd •Het nodige aantal aan verdelingen wordt bepaald door beweging en textuur
Waarschijnlijkheidsfunctie •De recente geschiedenis van een pixel, {X1, ...,Xt},wordt voorgesteld door een mengeling van K gauss distributie, de verwachting voor de huidige pixel (Xt) is:
•De probabiliteit kan berekend worden door de som te nemen van elke mogelijke uitkomst Xt (stochastische variabele) vermenigvuldigd met de kans op deze uitkomst •K= aantal distributies, tussen 3 à 5, afhankelijk van geheugen en rekenkracht •ωi,t = schatting van het gewicht van de ide gaussiaan op tijd t (welk deel van de data vertegenwoordigd wordt door deze gaussiaan), ∑ ω=1 •µi,t = gemiddelde (mean) waarde van de ide gaussiaan op tijd t •Σi,t = de covariantiematrix van de ide gaussiaan op tijd t , matrix met de variantie voor rood-, groen- en blauwwaarden. • η = De dichtheidsfunctie van de ide gaussiaan op tijd t •T= gedeelte van de data dat geacht wordt achtergrond te zijn o
MoG – Dichtheidsfuncties 1D-pixel waarde •X = {0,1, …. ,255} •K = 3 •ω k = {0.2,0.2,0.6} •μ k = {80,100,200} •σk = {20,5,10}
MoG Om het Algoritme te verduidelijken volgen we één iteratie
van een pixel in het pixelproces De iteratie moet uitgevoerd worden voor elk pixel van het frame om het te analyseren
Iteratie v/h pixelproces Elke nieuwe frame zorgt voor een nieuwe pixel-waarde voor {x0,y0} Zoals bij het classificeren met K-means gaan we de K distributies af op zoek
naar een match, we hebben de passende distributie gevonden als Xt binnen 2,5σ van μ van een distributie ligt. Als er een match is gevonden: Aanpassing van de gewichten als volgt: ω = ω + α(M − ω ) k,t
k,t−1
M
k,t
k,t
k,t−1
= 1 voor het model dat past, 0 voor alle andere modellen
α = leerconstante, α bepaalt hoe snel de parameters worden aangepast Na het bereken van de nieuwe gewichten worden deze terug genormaliseerd (∑=1)
Aanpassing μ en σ van de passende verdeling :
Zelfde vorm als de aanpassing van het gewicht, hier met ρ die afhangt van α en de
dichtheidsfunctie
Iteratie v/h pixelproces Als er geen match is gevonden: We vervangen de minst waarschijnlijke distributie, heeft de
laagste probabiliteit, door een nieuwe distributie met als waarden: μ = de huidige waarde van {x0,y0} σ = een initieel hoge variantie ω = een initieel laag gewicht
Iteratie v/h pixelproces Welke distributies stellen het meest waarschijnlijk een
achtergrondwaarde voor? Dit is de distributie met grootste gewicht en de laagste variantie grootste gewicht: duidt op distributie met veel matches laagste variantie: nieuwe pixelwaarde komt niet overeen met één van de μ’s: variantie aanwezige distributie vergroten een distributie vervangen met een nieuwe met hoge variantie als nieuwe pixelwaarde overeenkomt met één van de μ’s daalt de variantie van de betreffende distributie
Iteratie v/h pixelproces We rangschikken de gauss distributies op de waarde van ω/σ van groot naar klein we nemen de eerste B distributies als achtergrondmodel
we klasseren distributies tot de achtergrond tot het geaccumuleerde gewicht T overschrijdt T: Ook hier is T de maat voor het deel van de data dat als achtergrond wordt verwacht Nemen we T klein: unimodaal achtergrondkarakter, één kleur als achtergrond Nemen we T groot: multimodaal achtergrondkarakter, meerdere kleuren als achtergrond Valt de huidige pixelwaarde van {x0,y0} binnen een distributie die als achtergrond is geklasseerd dan wordt {x0,y0} als achtergrond geklasseerd, anders wordt het aangeduid als een voorgrondpixel
Conclusie De methode vraagt 2 parameters die moeten worden opgegeven T
&α Adaptieve gaussiaan techniek, zo wordt geleidelijke verandering van licht opgevangen. Multimodale distributies, zorgen voor het opvangen van schitteringen, wuivende takken, etc. Snel herstel als er terug wordt overgegaan naar een achtergrondwaarde Reken- en geheugenintensief:
Voor elke pixel 5 gauss distributies in een frame van 640x480 pixels
betekent 3x5x640x480 = 4.608.000 variabelen voor het model. Het Algoritme dient uitgevoerd te worden voor elke pixel van elk frame van de sequentie