Een Zelflerend, Kenmerk-gebaseerd Algoritme voor het Tellen van Voertuigen in een Verkeersscène Tom Neutens
Promotoren: prof. dr. ir. Wilfried Philips, prof. dr. ir. Aleksandra Pizurica Begeleiders: Jorge Niño Castañeda, dr. ir. Peter Van Hese Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Telecommunicatie en Informatieverwerking Voorzitter: prof. dr. ir. Herwig Bruneel Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2012-2013
Een Zelflerend, Kenmerk-gebaseerd Algoritme voor het Tellen van Voertuigen in een Verkeersscène Tom Neutens
Promotoren: prof. dr. ir. Wilfried Philips, prof. dr. ir. Aleksandra Pizurica Begeleiders: Jorge Niño Castañeda, dr. ir. Peter Van Hese Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen
Vakgroep Telecommunicatie en Informatieverwerking Voorzitter: prof. dr. ir. Herwig Bruneel Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2012-2013
Toelating tot bruikleen De auteur geeft de toelating dit afstudeerwerk voor consultatie beschikbaar te stellen en delen van het afstudeerwerk te kopi¨eren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit dit afstudeerwerk.
Tom Neutens
31 mei 2013
i
Dankwoord Graag zou ik iedereen willen bedanken die heeft bijgedragen tot de verwezenlijking van dit eindwerk, in het bijzonder dank ik: • mijn familie om mij de kans te geven deze taak te kunnen uitvoeren; • mijn thesisbegeleiders ir. Jorge Ni˜ no Castaeda en dr. ir. Peter Van Hese om mij de nodige feedback te verschaffen en mij in de juiste richting te sturen; • Stefan Schulte voor de feedback en het verschaffen van het nodige materiaal om testen uit te kunnen voeren; • mijn promotor prof. dr. ir. W. Philips en co-promotor prof. dr. ir. A. Pizurica voor de nodige feedback.
ii
Edgefeature-based Algorithms for Counting Vehicles in a Traffic Scene Tom Neutens Promotors: prof. dr. ir. W. Philips, prof. dr. ir. A. Pizurica Supervisors: ir. Jorge Ni˜no Castaeda, dr. ir. Peter Van Hese edge detection. Based on these edges the algorithm looks for edge dens regions in the image. Regions with an edge density above a certain threshold are seen as foreground.
Abstract— The growing number of traffic jams and lethal traffic accidents are problems most governments are trying to solve. To do this in an intelligent way, traffic data has to be collected. In this paper two new algorithms for the counting of vehicles in traffic videos are presented. These methods are based on detection of vehicles using their edges. Algorithm 1 uses local edge features combined with a random forest classifier to improve background subtraction based blob detection. Algorithm 2 performs moving edge detection and searches for edge dense regions in a scene, these are used as foreground objects. To measure the performance of these algorithms they are compared to state of the art techniques. Results show that edge based counting techniques can improve those based on background subtraction, however the developed algorithms are very parameter-dependent. In future work the following paths could be further explored: Finding the optimal parameter set for the suggested algorithms using a more extensive dataset. Optimizing the classifier training by aligning input samples. Using a bigger dataset to train the classifier. Using other features to identify objects (for example HOG features). If these optimizations lead to a more reliable classification result, object detection over the entire frame could be explored as opposed to object detection in the neighborhood of foreground objects.
II. C OUNTING A LGORITHMS In the following sections it is first described how the two algorithms differ in the detection phase, thereafter the methods for tracking and counting are explained. A. Algorithm 1: (EFD)
Edge feature based detection
The first counting algorithm uses edge features to detect vehicles in the vicinity of detected foreground blobs. These foreground blobs are detected by a background subtraction algorithm using a mixture of Gaussians (as used in [2], [3] and [4]). The proposed algorithm uses local edge features for vehicle identification and consists of three phases: collection of training data, training a random forest classifier [1] and detection.
Keywords— vehicle counting, computer vision, object detection, object tracking, image processing
I. I NTRODUCTION
A.1 Local Edge Features
RAFFIC counts are useful information with different applications. These include: adaptive traffic signs which reroute traffic to non/lesscongested roads, provide roadwork planners with information for optimized rerouting of traffic, and adapt the ventilation in tunnels according to the traffic density. In this paper two algorithms for vehicle counting are presented. These algorithms have three main parts: detection, tracking and counting (see figure 1). The two algorithms only differ in the detection phase. The first algorithm trains and uses a random forest classifier [1] to improve background subtraction based algorithms. It has three phases. In phase one a set of positive and negative samples is collected. In the second phase these samples are used as input for a random forest classifier algorithm. This results in a random forest classifier which can decide if an image contains a car or not. The third and last phase uses this classifier to detect vehicles. To identify vehicles local edge features are defined. These features are used across all three phases. The second algorithm detects vehicles using moving
T
Local edge features are defined as 3×3 pixel areas in which certain pixels are defined as an edge, the rest of the pixels are defined as none-edge. Figure 2 gives an overview of the different features; the black pixels represent edges, the white pixels nonedges. Evaluating features over the entire image results in a histogram of the occurrences of each feature in the image. These histograms are used as a feature vector. To include spatial information about the image into the feature vector, the image can be divided into cells, for each cell a histogram is calculated. The concatenation of these histograms results in a spatially dependent feature vector. The local edge features can be calculated using an integral image to improve the calculation performance. A.2 Phase 1: Collection of Training Data An overview of the steps in this phase is shown in figure 3. To train the classifier, a set of positive and negative training samples has to be collected. The algorithm performs this data collection on-line by iii
Fig. 1. High level overview of the counting algorithms.
Fig. 2. Local edge features: 3×3 pixel areas, black pixels represent edges
selecting high quality blobs (collected using background subtraction) as positive training samples. Negative training samples are random parts of the road collected when no traffic is present. To assess the quality of a blob its size and aspect ratio are compared to predefined ranges. These ranges are manually set based on the position of the camera. Since the method for collecting training samples is error prone, the positive and negative training sets can contain errors. To filter out these errors, clustering is performed on each of the sets and the samples in the clusters with the highest cardinality are selected. A.3 Phase 2: Training the Random Forest Classifier For each of the samples in the positive and negative training sets, feature vectors are calculated. Together with the class to which they belong, they are fed into a random forest classifier algorithm. This algorithm uses entry- and attribute-bagging to select parts of the dataset. For each part a decision tree is constructed. This set of trees (forest) can be used to predict the class of a new feature vector. By averaging the classification score for each tree in the forest.
Fig. 3. Block scheme of phase 1: collection and filtering of training samples.
A.4 Phase 3: Detection
B. Algorithm 2: Moving Edge Based Detection (MED)
the search window contains a vehicle. Calculating this confidence score for each position of the search window results in a heatmap. If the maximum value inside the heatmap is higher than a certain threshold, a vehicle is detected at the position of that maximum with respect to the entire frame.
The detector tries to improve the detection result of the background subtraction by scanning the area around the detection for the maximal classifier score. If this score is above a certain threshold, a vehicle is detected. To find the classifier score in the area around a detection a search area around that detection is defined. Within that search area a search window is moved. For each position of the search window the image area within that search window is fed to the feature detector. The resulting feature vector is used as input for the random forest classifier which gives a confidence score. This score indicates the probability that
This detector uses the method proposed in [5] to detect moving edges in the scene. To convert these moving edges to foreground objects the moving edge image (which is a binary image) is blurred, which results in a grayscale image. In this grayscale image edge dense areas are gray and the rest is black. By thresholding this image foreground objects can be detected. C. Tracking In the EFD algorithm a vehicle detection can be lost in one or multiple frames. As a result trackiv
truth count. It is clear that the MED algorithm performs best, with a counting accuracy of 95%. It is closely followed by the EFD algorithm with moving edges, with an accuracy of 92,3%. The worst performer is the EFD algorithm which is only 77,1% accurate. This is caused by a bad accuracy score on the video ’Brussel Watec’ where algorithm has a high number of false positive counts.
ing based on only the previous frame was not robust enough. For this reason the tracker was implemented by representing the video as a 3D space with two spatial and one time dimension. Vehicles are tracked by looking for the closest detection in the previous frames, in time as well as in space. If this distance is smaller than a certain threshold the vehicles are matched and said “to be on the same track”. D. Counting
Precision Recall
To count vehicles, a counting line is drawn on the road. The moment a tracked vehicle crosses this line it is counted. The counting line is drawn manually by the person who configures the algorithm.
EFD 0,97973 0,926518
EFD (moving edges) 0,989209 0,878594
MED 0,970684 0,952077
Background subtraction 0,924 0,8902
TABLE I P RECISION AND RECALL VALUES FOR EACH METHOD FOR THE VIDEO ‘S INGAPORE ’. T HIS DEMONSTRATES THAT THE BRD ALGORITHM CAN IMPROVE AN OPTIMIZED BACKGROUND SUBTRACTION ALGORITHM .
III. R ESULTS The two developed algorithms are compared to the ground truth for four different video sequences. This is done by dividing the video in intervals of 1500 frames. If the count in one of these intervals is higher than that of the ground truth, the difference is counted as false positives. When the count is lower the difference is counted as false negatives. For the first algorithm two alternatives are analyzed. One uses Canny edge detection with a pixel based background model to filter out background edges. The second one uses the same moving edge detection as used in the MED algorithm.
Precision Recall
EFD 0,831169 0,971537
EFD (moving edges) 0,93988 0,889943
MED 0,971944 0,920304
Background subtraction 0,9296 0,9851
TABLE II P RECISION AND RECALL VALUES FOR EACH METHOD FOR THE VIDEO ‘S INGAPORE T HOMSON ’. T HE NON - OPTIMIZED BRD ALGORITHM MATCHES THE PERFORMANCE OF THE OPTIMIZED BACKGROUND SUBTRACTION ALGORITHM .
Figure 4 shows the count of the different algorithms compared to the ground truth for each of the videos. All algorithms perform well for the video ‘Singapore’ (graph (d)). This video was used for initial testing so the algorithm parameters are partially tuned to this video. In graphs (a), (b) and (c) the EFD algorithm performs worst, it has a high false positive rate. The MED algorithm performs well on all videos.
Precision Recall
EFD 0,681388 1
EFD (moving edges) 0,814194 0,973765
MED 0,938918 0,830247
Background subtraction 0,983 0,8667
TABLE III P RECISION AND RECALL VALUES FOR EACH METHOD FOR THE VIDEO ‘B RUSSEL WATEC ’. B OTH EFD ALGORITHMS HAVE A LOW PRECISION CAUSED BY A HIGH AMOUNT OF FALSE POSITIVES .
Tables I, II, III and IV compare the precision and recall for the different algorithms. These tables also include the precision and recall for an optimized background subtraction algorithm, these results were provided by Jasper Desmadryl[6]. However these results were obtained with an optimal set of parameters per video while we used the same set of parameters for all videos, obtained from testing on video 4. This implies that the presented values for the background subtraction algorithm are possibly too optimistic. However table I shows that the developed algorithms can outperform an optimized background subtraction based method.
Precision Recall
EFD 0,805229 0,993548
EFD (moving edges) 0,818908 0,991935
MED 0,920245 0,967742
Background subtraction 0,961 0,9916
TABLE IV P RECISION AND RECALL VALUES FOR EACH METHOD FOR THE VIDEO ‘B RUSSEL PTZ’. B OTH EFD ALGORITHMS HAVE A LOW PRECISION CAUSED BY A HIGH AMOUNT OF FALSE POSITIVES .
IV. C ONCLUSION In this paper we proposed 2 novel methods for counting vehicles based on their edges. The performance of these methods was tested on 4 videos using ground truth data. It was shown that using edges to detect and count vehicles can be done in a robust way. This technique is less prone to errors as a result of lighting changes than traditional background subtraction based methods. The MED
Table V compares the counting accuracy of each algorithm, for each video and also gives a total accuracy over all videos. The accuracy is defined as the difference of the ground truth count and the deviation from that ground truth, divided by the ground v
(a)
(b)
Vehicle count Brussel watec
Vehicle count Singapore Thomson
700
1000 900
600
800 500
# Vehicles
600
# Vehicles
700 EFD
500
EFD (moving edges)
400
400
EFD
300
EFD (moving edges) MED
MED
300
200
GT
GT
200 100
100 0 11300
16300
21300
0 12000
26300
17000
(d)
Vehicle count Brussel PTZ
27000
32000
Vehicle count Singapore
700
350
600
300
500
250
400
EFD
300
EFD (moving edges)
# Vehicles
# vehicles
(c)
22000
Frame number
Frame number
200
EFD
150
EFD (moving edges) MED
MED 200
100
GT
0 27000
GT
50
100
0 32000
0
37000
10000
20000
30000
40000
Frame number
Frame number
Fig. 4. Vehicle count as a function of the frame number for each method, for each video. The counts for each video are compared to the ground truth for that video. All algorithms perform well for the video ‘Singapore’ (graph (d)), which was used for initial testing. In graphs (a), (b) and (c) the EFD algorithm has the worst performance with a high false positive rate. The MED algorithm performs well on all videos: In all graphs the line for the MED algorithm is close to the GT line.
EFD EFD (with moving edges) MED
Singapore
Singapore Thomson
0,946 0,889 0,981
0,831 0,947 0,947
Brussel Watec 0,532 0,8 0,884
Brussel PTZ 0,766 0,789 0,948
vehicle detection and traffic parameter extraction,” Image and Vision Computing, vol. 22, pp. 899–907, 2004. [5] S. Gruenwedel, P. Van Hese, and W. Philips, “An edgebased approach for robust foreground detection,” in Proceedings of the 13th international conference on Advanced concepts for intelligent vision systems, Berlin, Heidelberg, 2011, ACIVS’11, pp. 554–565, Springer-Verlag. [6] J. Desmadryl, “Ontwikkeling van een beeldverwerkingsalgoritme om voertuigen te tellen,” M.S. thesis, KATHO, 2013.
Totaal 0,771 0,923 0,95
TABLE V T HE ACCURACY IN PERCENTAGE FOR THE METHODS EFD, EFD ( USING MOVING EDGES ) AND MED ON ALL VIDEOS . T HE MED ALGORITHM SCORES BEST WITH A TOTAL ACCURACY OF 95%.
algorithm performs better than the EFD algorithm because it is less complex. The EFD algorithm has a lot more stages. At each stage errors reduce the eventual counting result. R EFERENCES [1] L. Breiman and E. Schapire, “Random forests,” in Machine Learning, 2001, pp. 5–32. [2] R. Garcia and D. Shu, “Vision based vehicle tracking using a high angle camera,” Tech. Rep., Clemson University, may 2010. [3] N.K. Kanhere and S.T. Birchfield, “Real-time incremental segmentation and tracking of vehicles at low camera angles using stable features,” IEEE transactions on intelligent transportation systems, vol. 9, no. 1, pp. 148–160, march 2008. [4] D.M. Ha, j.-M. Lee, and Y.-D. Kim, “Neural-edge-based
vi
Een zelflerend, kenmerkgebaseerd algoritme voor het tellen van voertuigen in een verkeerssc` ene door Tom Neutens Afstudeerwerk ingediend tot het behalen van de graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen (software engineering) Academiejaar 2012-2013 Universiteit Gent Faculteit Toegepaste Wetenschappen Promotor: prof. dr. ir. W. Philips Co-promotor: prof. dr. ir. A. Pizurica Thesisbegeleiders: ir. Jorge Ni˜ no Castaeda en dr. ir. Peter Van Hese Samenvatting Het groeiende fileprobleem en de hoge dodentol op de wegen is een wereldwijd probleem. De cijfers liegen er niet om, de filekost wordt in Belgi¨e geraamd op zo’n 250 miljoen euro per jaar en in 2011 waren er 770 dodelijke verkeersongevallen. Om bestuurders de kans te geven deze problemen zo veel mogelijk te verhelpen is het nodig om data te verzamelen over hoe het verkeer verloopt. Deze thesis probeert bij te dragen tot het verzamelen van deze data. Meer specifiek worden nieuwe methoden onderzocht om wagens te tellen aan de hand van videobeelden. Er worden drie methoden vergeleken, waarvan methode 2 en 3 door mezelf werden ontwikkeld. De eerste methode is gebaseerd op background subtraction. De tweede maakt gebruik van kenmerken om de detectie in de vorige methode te verbeteren. De derde en laatste methode maakt gebruik van bewegende randen om zo wagens te detecteren. Uit resultaten blijkt dat het mogelijk is om een accurater telresultaat te bekomen met deze verbeteringen. Het resultaat is echter zeer parameter-gevoelig, dit heeft als gevolg dat de resultaten sterk kunnen vari¨eren van de input video. De derde methode gebaseerd op bewegende randen blijkt over het algemeen het best te presteren, bovendien is deze methode niet veel complexer dan methode ´e´en en relatief eenvoudig ten opzichte van methode twee. Uiteindelijk bleek het verbeteren van bestaande methoden een moeilijke taak. De prestatie van deze bestaande methoden is al relatief goed. Proberen verder te bouwen op deze methoden (wat gebeurt in algoritme 2) bleek vaak slechtere resultaten op te leveren, omdat de extra complexiteit ook extra fouten introduceerde. Het probleem vanuit een nieuw standpunt bekijken (zoals in algoritme 3) levert betere resultaten op. In verder werk moeten zeker de optimale parameters van de verschillende algoritmes experimenteel vastgelegd worden. Om een nog beter telalgoritme te ontwikkelen is het
vii
belangrijk te focussen op het verder uitwerken van algoritme 3. Het onderzoek naar kenmerkgebaseerde detectie in algoritme 2 moet ook nog verder uitgediept worden, hierbij wordt de focus best gelegd op het detecteren van voertuigen vanuit verschillende cameraopzichten op verschillende plaatsen op de weg. Trefwoorden: Tellen van wagens, Computervisie, Objectdetectie, Objecttracking, videoverwerking.
viii
Inhoudsopgave 1 Inleiding 1.1 Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Probleemomschrijving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Doelstellingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 2 3
2 Stand van de techniek 2.1 Voorgrond/achtergrond-detectie . . . . . . . . . 2.1.1 Frame differencing . . . . . . . . . . . . 2.1.2 Background subtraction . . . . . . . . . 2.1.3 Kenmerk-gebaseerde objectsegmentatie 2.1.4 Rand-gebaseerde objectdetectie . . . . . 2.2 Classificatie . . . . . . . . . . . . . . . . . . . . 2.2.1 SVMs . . . . . . . . . . . . . . . . . . . 2.2.2 Boosting . . . . . . . . . . . . . . . . . . 2.2.3 Random forests . . . . . . . . . . . . . . 2.2.4 Artifici¨ele neurale netwerken . . . . . . 2.2.5 Clustering . . . . . . . . . . . . . . . . . 2.2.6 Prestatie . . . . . . . . . . . . . . . . . 2.3 Tracken . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Op basis van positie . . . . . . . . . . . 2.3.2 Op basis van de kenmerkvector . . . . . 2.4 Tellen . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
4 4 4 4 6 7 8 8 9 9 10 10 10 11 11 12 12
3 Eigen aanpak 3.1 Overzicht . . . . . . . . . . . . . . . . . . . 3.2 Randkenmerkgebaseerde detectie (RKD) . . 3.2.1 Definitie van lokale randkenmerken . 3.2.2 Fase 1: verzamelen van trainingsdata 3.2.3 Fase 2: Het trainen van de classifier 3.2.4 Fase 3: Detectie . . . . . . . . . . . 3.3 Bewegende randdetectie (BRD) . . . . . . . 3.4 Tracken . . . . . . . . . . . . . . . . . . . . 3.5 Tellen . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
14 14 15 15 21 24 25 27 28 28
ix
. . . . . . . . .
. . . . . . . . .
4 Resultaten 4.1 Background subtraction . . . . . . . 4.2 Verzamelen van trainingsdata . . . . 4.3 Clusteren . . . . . . . . . . . . . . . 4.4 Trainen van de classifier . . . . . . . 4.4.1 Prestatie classifier . . . . . . 4.4.2 Uitvoeringstijd . . . . . . . . 4.4.3 Vergelijking HOG kenmerken 4.5 Detectie . . . . . . . . . . . . . . . . 4.5.1 Integraalbeeld . . . . . . . . . 4.5.2 Prestatie . . . . . . . . . . . 4.6 Tracking . . . . . . . . . . . . . . . . 4.7 Tellen . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
31 31 33 34 35 36 37 37 39 39 40 41 42
5 Besluit 49 5.1 Toekomstig onderzoek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
x
Lijst van figuren 1.1
Problemen met blobdetectie . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1 2.2 2.3 2.4 2.5
Haar kenmerken . . . . . . . . Tweedimensionale SVM . . . . Selectie van data in het random Beslissing in random forest . . Artificieel neuron . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. 6 . 9 . 10 . 11 . 12
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16
Hoogste-niveau blokschema van de ontwikkelde telalgoritmes. Wireframe afbeeldingen . . . . . . . . . . . . . . . . . . . . . Lokale randkenmerken . . . . . . . . . . . . . . . . . . . . . . Berekening lokale randkenmerken . . . . . . . . . . . . . . . . Verdeling van het beeld in cellen . . . . . . . . . . . . . . . . Berekenen van kenmerkvector uit het integraalbeeld . . . . . Blokschema fase 1. . . . . . . . . . . . . . . . . . . . . . . . . Geselecteerde monsterwaarden . . . . . . . . . . . . . . . . . Voorbeeld clustering . . . . . . . . . . . . . . . . . . . . . . . Blokschema fase 2 . . . . . . . . . . . . . . . . . . . . . . . . Blokschema fase 3 . . . . . . . . . . . . . . . . . . . . . . . . Illustratie zoekvenster . . . . . . . . . . . . . . . . . . . . . . Detectieproces . . . . . . . . . . . . . . . . . . . . . . . . . . Blokschema bewegende-randen-gebaseerde detectie (BRG) . . 3D-model van de videosequentie . . . . . . . . . . . . . . . . . Mogelijke locaties van de tellijn . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
15 16 17 18 19 20 21 23 24 25 26 26 27 28 29 30
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13
Voorbeelden van fouten in voorgrond/achtergrond-segmentatie . Verschil tussen twee types randdetectie . . . . . . . . . . . . . . . Verschil resultaat randdetectie op verschillende video’s . . . . . . Resultaten voor en na clusteren . . . . . . . . . . . . . . . . . . . Resultaat variatie splitsingsfactor . . . . . . . . . . . . . . . . . . Uitvoeringstijd in functie van de splitsingsfactor . . . . . . . . . . Vergelijking prestatie lokale randkenmerken met HOG kenmerken Verschillende typeringen voor dezelfde rand . . . . . . . . . . . . Warmtekaarten detectie . . . . . . . . . . . . . . . . . . . . . . . Aantal tellingen in functie van het framenummer . . . . . . . . . Telresultaten voor de video Singapore . . . . . . . . . . . . . . . Telresultaten voor de video Singapore Thomson . . . . . . . . . . Telresultaten voor de video Brussel Watec . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
32 33 34 35 36 37 38 39 41 42 43 44 45
. . . . . . . . . . . . . . . . . . . . forest algoritme . . . . . . . . . . . . . . . . . . . .
xi
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
3
4.14 Telresultaten voor de video Brussel PTZ . . . . . . . . . . . . . . . . . . . . 46
xii
Lijst van tabellen 4.1 4.2 4.3 4.4 4.5
Resultaten video Singapore . . . . . . . Resultaten video Singapore Thomson . . Resultaten video Brussel Watec . . . . . Resultaten video Brussel PTZ . . . . . . Accuraatheid telling van de verschillende
xiii
. . . . . . . . . . . . . . . . . . . . . . . . methoden
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
48 48 48 48 48
Hoofdstuk 1
Inleiding 1.1
Context
Deze thesis handelt over een computervisie-gebaseerd systeem voor het tellen van voertuigen in het verkeer. Dit onderwerp werd voorgesteld door het bedrijf Traficon dat zich specialiseert in videogebaseerde transportsystemen. Zij bieden een ge¨ıntegreerde oplossing van hardware en software aan, die de mogelijkheid geeft om verschillende metingen van het verkeer te verzamelen. Hun systemen bestaan uit een camera met daaraan gekoppeld een lichte verwerkingseenheid die gebruikt wordt om de beelden die de camera capteert te verwerken. De verwerkingseenheid is in staat verschillende parameters van het verkeer -zoals aantal voertuigen die op een plaats zijn voorbijgekomen met daarbij ook hun snelheid- uit de videobeelden te halen. Deze informatie kan dan gebruikt worden om het verkeer in betere banen te leiden. Het is bijvoorbeeld mogelijk om het verkeer dynamisch om te leiden bij congestie op bepaalde plaatsen of om het aantal beschikbare rijvakken in een tunnel dynamisch aan te passen aan het verkeer. Een minder voor de hand liggende toepassing is het aanpassen van de ventilatie in tunnels aan de hoeveelheid verkeer dat er op dat moment voorbij komt. Dat er nood is aan intelligente systemen voor de analyse van het verkeer is duidelijk. Dagelijks horen en lezen we in het nieuws over de ellenlange files en de frustratie die dit bij de mensen opwekt. Buiten frustratie hebben files echter ook een zware economische kost. Er wordt geschat dat de totale filekost in Belgi¨e zo’n 250 miljoen euro per jaar bedraagt. De manier waarop deze intelligente systemen de file kunnen verminderen is tweeledig. Ten eerste kan de verzamelde verkeersinformatie gebruikt worden bij het inplannen van nieuwe infrastructuur: Een intelligente inplanting van bijvoorbeeld nieuwe wegen of het leggen van een extra rijstrook kan zorgen voor filepreventie. Ten tweede kan de informatie in real-time gebruikt worden om het verkeer om te leiden om zo optimaal gebruik te maken van het bestaande wegennet. Intelligente transportsystemen kunnen niet enkel gebruikt worden om files te vermijden. Ze kunnen ook dienen als input voor dynamische wegsignalisatie. Op deze manier kan het verkeer snel gewaarschuwd worden over eventuele problemen verderop. Deze live informatie zorgt ervoor dat de automobilisten op hun hoede zijn en kan dus ongelukken vermijden. Er zijn heel wat verschillende omgevingen waarin camera’s gebruikt kunnen worden om het verkeer te analyseren, bijvoorbeeld: het verkeer op de snelweg, op een kruispunt of in een tunnel. Jammer genoeg is het zeer complex om ´e´en algoritme te ontwikkelen dat in al deze situaties in staat is goede resultaten op te
1
leveren. De focus in deze thesis ligt op het tellen van voertuigen in doorstromend verkeer, bijvoorbeeld het verkeer op een snelweg (wanneer er geen file is). Het hier voorgestelde algoritme kan uiteraard gebruikt worden als onderdeel van een meer complex systeem dat gebruik maakt van verschillende algoritmes die extra functionaliteit bieden: Dit kan bijvoorbeeld gaan van filedetectie tot een systeem voor het automatisch omleiden van het verkeer. Het kan ook als onderdeel dienen van een systeem voor het tellen van verkeer op een kruispunt. Deze informatie kan dan gebruikt worden om te weten te komen in welke richtingen het merendeel van de wagens rijdt. Met deze richtingsinformatie kan dan de regeling van de verkeerslichten aangepast worden. Dit zijn slechts een aantal toepassingen waarin dit algoritme gebruikt kan worden, andere mogelijke toepassingen laat ik over aan de inspiratie van de lezer.
1.2
Probleemomschrijving
Het specifieke probleem dat dit algoritme poogt op te lossen is het tellen van wagens op wegen met doorstromend verkeer in ´e´en rijrichting. De uitdaging die Traficon hierbij vooropstelde is dat er geen veronderstellingen mochten gemaakt worden over waar het verkeer zich nu juist op de weg bevindt. Dit houdt in dat er niet mag verondersteld worden dat de wagens binnen hun rijstrook rijden, hieruit volgt dat er geen detectiezone per rijstrook gedefini¨eerd mag worden zoals het geval is in algoritmes die Traficon nu reeds gebruikt. De nood aan een algoritme dat geen gebruik maakt van individuele rijstroken is ontstaan wanneer huidige systemen moesten worden toegepast op verkeer in landen zoals China en India. In deze landen heeft het verkeer een zeer slechte rijstrookdiscipline d.w.z. voertuigen respecteren de wegmarkering niet en chauffeurs rijden waar ze willen. De vraag is dus duidelijk: tel voertuigen. Er zijn echter heel wat parameters waarmee rekening gehouden moet worden. Eerst en vooral de videokwaliteit. Over het algemeen leidt een betere videokwaliteit tot meer mogelijkheden. Dit kan gaan van het gebruiken van de kleurinformatie bij kleurenbeelden tot betere randdetectie bij scherpere beelden van hogere resolutie. Betere beeldkwaliteit zorgt echter meestal voor meer data, en dit zorgt voor nood aan meer processorkracht. De beelden die door Traficon ter beschikking werden gesteld hebben een resolutie van 720 x 576 en bevatten niet altijd kleurinformatie. Het algoritme moet dus om kunnen gaan met deze restricties op de videokwaliteit. Buiten de kwaliteit van de video spelen ook de hoek van de camera en het type verkeer een belangrijke rol. De testbeelden bevatten zowel licht, matig en zwaar verkeer. Onder licht verkeer verstaan we dat een frame hoogstens ´e´en wagen bevat, matig verkeer kan verschillende wagens per frame bevatten maar deze bevinden zich op een redelijke afstand van elkaar en zwaar verkeer is verkeer waarbij verschillende auto’s binnen het frame overlappen. Het doel is om een zo accuraat mogelijk telresultaat te krijgen, zelfs bij zwaar verkeer. Ook de hoek waaronder de camera de sc`ene bekijkt is van belang. Over het algemeen geldt dat hoe hoger de camerahoek hoe makkelijker het is om verschillende voertuigen te onderscheiden. Bij lagere hoeken is er veel meer overlap tussen voertuigen waardoor het een uitdaging wordt deze te onderscheiden.
2
Figuur 1.1: Links zien we een partieel gedetecteerd voertuig, rechts een valse detectie
1.3
Doelstellingen
Het hoofddoel is het tellen van voertuigen. Hiervoor zijn echter een aantal onderdelen nodig. Eerst en vooral is er een manier nodig om voertuigen op een robuuste manier te detecteren. Als een voertuig gedetecteerd werd in een frame moet het ook gevolgd kunnen worden over de volgende frames. Pas als de wagens op een stabiele manier gevolgd kunnen worden is het mogelijk om deze betrouwbaar te tellen. De focus van deze thesis ligt vooral op het verbeteren van de detectie. Op vraag van Traficon is er gefocust op het gebruik van objectkenmerken voor de verbetering van traditionele blobdetectie gebaseerd op het modeleren van de pixelwaarden van de achtergrond. Elk frame wordt hierbij vergeleken met het achtergrondmodel om zo de voorgrondobjecten in dat frame te detecteren. Deze methode kent verschillende problemen. Het doel van deze thesis is het oplossen van een aantal van deze problemen. De problemen die ik over het verloop van deze thesis heb proberen op te lossen zijn te zien in figuur 1.1. Op de linker afbeelding is een partieel gedetecteerd voertuig te zien dat door een traditioneel algoritme niet gedetecteerd zal worden omdat de detectie niet de juiste vorm heeft. Rechts is een valse detectie te zien, dit kan een gevolg zijn van een kleine verandering in belichting.
3
Hoofdstuk 2
Stand van de techniek 2.1
Voorgrond/achtergrond-detectie
Om voertuigen te kunnen detecteren in verkeersbeelden is het nodig om de voorgrond, die de voertuigen bevat, te kunnen onderscheiden van de achtergrond. Er zijn verschillende methoden om dit te doen. In volgorde van stijgende complexiteit zijn dit: frame differencing, background subtraction, objectdetectie.
2.1.1
Frame differencing
Dit is ´e´en van de eenvoudigste technieken om de voorgrond te detecteren. Voor elk frame wordt telkens het vorige frame er pixelgewijs van afgetrokken, pixels die voldoende verschillen tussen de twee frames worden gezien als voorgrond. Om te vermijden dat ruis op individuele pixels gezien wordt als voorgrond, worden de waarden die boven een bepaalde vooraf gekozen drempelwaarde liggen als voorgrond gezien, de rest van de waarden is achtergrond. Deze methode is zeer snel en eenvoudig, maar is niet altijd stabiel. Wanneer de voorgrondobjecten similaire pixelwaarden hebben zal het algoritme niet in staat zijn deze als voorgrond te detecteren wat zal leiden tot gedeeltelijke detecties. Meer stabiele methoden zijn gebaseerd op het modelleren van de achtergrond.
2.1.2
Background subtraction
Het principe van background subtraction is eenvoudig: Neem het frame waarin voorgrondobjecten gedetecteerd moeten worden en trek er het achtergrondmodel van af. Er zijn verschillende manieren waarop het achtergrondmodel opgebouwd kan worden. De eenvoudigste manier is een frame te nemen waarvan je weet dat er geen voorgrondobjecten in te zien zijn en dit te gebruiken als achtergrondmodel zoals in [GS10]. Als alternatief kan ook een gemiddelde genomen worden over een aantal van deze frames zoals in [KB08]. Deze methode houdt er echter geen rekening mee dat de achtergrond kan vari¨eren door bijvoorbeeld een verandering van belichting of kleine bewegingen van achtergrondobjecten. Om deze reden zijn er technieken ontwikkeld die het achtergrondmodel dynamisch aanpassen. Voortschrijdend gemiddelde Een eerste eenvoudige techniek is het uitmiddelen van de achtergrond over verloop van tijd. Dit kan bijvoorbeeld door voor elke pixel een voort-
4
schrijdend gemiddelde te berekenen (2.1). Dit is een gemiddelde van de vorige k waarden van een pixel: st =
k−1 1X xt − xt−k xt + xt−1 + · · · + xt−k+1 = st−1 + xt−n = k k k
(2.1)
n=0
Een alternatief voor het voortschrijdend gemiddelde is een exponentieel gemiddelde van de voorgaande pixelwaarden (2.2). s0 = x0 st = αxt + (1 − α)st−1 , t > 0
(2.2)
Hierbij is α de leerfactor die een waarde tussen nul en ´e´en aanneemt. Hoe hoger deze α hoe sneller het achtergrondmodel zich zal aanpassen naar een nieuwe situatie. α moet dus op een intelligente manier gekozen worden om ervoor te zorgen dat veranderingen in de achtergrond zo snel mogelijk worden opgenomen in het achtergrondmodel en voorgrondobjecten zo weinig mogelijk invloed hebben op het achtergrondmodel. Deze techniek wordt onder meer toegepast in [HLK04]. Gaussiaanse verdeling Bij de twee voorgaande achtergrondmodellen moet men na het nemen van het verschil tussen het huidige frame en het achtergrondmodel nog de voorgrond van de achtergrond scheiden door gebruik te maken van een drempelwaarde. In de vorige twee modellen moet de drempelwaarde vooraf gekozen worden. De waarden in het verschilbeeld die hoger zijn dan deze drempelwaarde worden dan als voorgrond gezien en de rest als achtergrond. Het is echter ook mogelijk om deze drempelwaarde dynamisch aan te passen voor elke pixel. Dit kan bijvoorbeeld door elke pixel te modelleren als een Gaussiaanse verdeling. Hierbij moet opgemerkt worden dat met deze techniek niet expliciet het verschil genomen wordt tussen een frame en het achtergrondmodel. De similariteit tussen een pixel in het frame en de overeenkomstige pixel in het achtergrondmodel wordt bepaald door de probabiliteit van deze pixelwaarde in het achtergrondmodel, wat in dit geval een Gaussiaanse verdeling is. De historiek van de pixels kan worden gebruikt om de verwachtingswaarde en variantie te berekenen, en deze zijn voldoende om de verdeling voor deze pixel op te stellen. Deze techniek werd onder andere gebruikt in [MT06b] [MT06a]. Meerdere Gaussiaanse verdelingen Het dynamisch bepalen van de drempelwaarde aan de hand van ´e´en Gaussiaanse verdeling kan nog uitgebreid worden naar het model met meerdere Gaussiaanse verdelingen [SG99]. Deze techniek is meer robuust en kan omgaan met periodieke bewegingen van achtergrondobjecten zoals de bladeren van een boom die bewegen ten gevolge van de wind. Het aantal verdelingen dat bijgehouden wordt voor elke pixel is afhankelijk van het computationeel vermogen waarover het algoritme beschikt. Over het algemeen wordt een waarde tussen drie en vijf gekozen. De probabiliteit dat pixel Xt deel is van de achtergrond wordt dan als volgt gemodelleerd. P (Xt ) =
K X
ωi,t × N (Xt , µi,t , Σi,t )
(2.3)
i=1
Hierbij is K het aantal Gaussianen, ωi,t een wegingsfactor voor deze Gaussiaan die bepaald wordt aan de hand van de waardengeschiedenis van deze pixel, µi,t de verwachtingswaarde voor deze Gaussiaan, Σi,t de covariantie matrix van de i-de Gaussiaan op
5
Figuur 2.1: Voorbeelden van verschillende Haar-kenemerken. De kenmerken worden gealigneerd met het beeld, de waarde van het kenmerk is dan het verschil van de som van de beeldpixels in het witte gedeelte en de som van de beeldpixels in het zwarte gedeelte. Bron: http://software.intel.com/sites/products/documentation/hpc/ipp/ippi/ ippi ch14/ch14 object detection using haar like features.html
tijdstip t en N de Gaussiaanse verdeling. De verschillende Gaussianen worden aangepast telkens een nieuwe pixelwaarde beschikbaar is. Deze nieuwe waarde wordt dan geassocieerd met een van de Gaussianen aan de hand van een bepaalde drempel. Deze drempel is meestal afhankelijk van de variantie van elk van de Gaussianen.
2.1.3
Kenmerk-gebaseerde objectsegmentatie
Objectgebaseerde segmentatie technieken maken geen gebruik van de achtergrond van de sc`ene. Deze technieken gaan op zoek naar gebieden in het beeld waarvan de probabiliteit hoog is dat ze een bepaald object bevatten. Een eenvoudige manier om dit te doen is bijvoorbeeld gebaseerd op kleurinformatie. Als de kleuren van de objecten die tot de voorgrond behoren binnen een bepaald kleurengebied liggen kan in het beeld gezocht worden naar gebieden die ook binnen dit kleurengebied liggen. Deze gebieden kunnen dan als voorgrond gezien worden. Dit is echter een eenvoudig voorbeeld en zal in de praktijk vaak niet toepasbaar zijn, maar het illustreert wel het principe waarbij voorgrondobjecten gedetecteerd worden aan de hand van hun kenmerken. Haar-kenmerken In de literatuur worden objecten meestal beschreven aan de hand van minder voor de hand liggende kenmerken dan kleur. Een eerste type kenmerken dat oorspronkelijk werd ontwikkeld voor gezichtsherkenning zijn de Haarkenmerken [Art9]. Haarkenmerken identificeren de verschillen in intensiteit binnen een bepaald object. Ze worden gedefini¨eerd als rechthoekige gebieden, deze rechthoekige gebieden bestaan zelf ook nog eens uit twee delen, een positief en een negatief deel. Op de Figuur 2.1 zijn er verschillende types van gebieden te zien met elk hun positieve (wit) en negatieve (zwart) delen. De waarde van een van deze kenmerken kan berekend worden door ze te aligneren
6
met een deel van een afbeelding en daarna de som van de intensiteiten in die afbeelding die gealigneerd werd met de positieve zones af te trekken van de som van de intensiteiten in de negatieve zones. Dit verschil is de score van dat kenmerk op die plaats in het beeld. Als deze score boven een bepaalde drempelwaarde ligt (m.a.w. het intensiteitsverschil tussen de positieve en negatieve zones op die plaats is groot) wordt dat kenmerk op die plaats gedetecteerd. Uiteraard is het bij deze kenmerken, in tegenstelling tot de kleur die je gewoon kan zien, moeilijker voor een mens om te identificeren welke Haarkenmerken er nu juist op welke plaats voorkomen in de voorgrondobjecten die je wil detecteren. Daarom is het nodig te achterhalen welke kenmerken voorkomen in de objecten die je wil detecteren. Als deze objecten bijvoorbeeld wagens zijn moet er een verzameling van afbeeldingen van wagens worden verzameld. Op basis van deze verzameling kan dan bepaald worden welke Haarkenmerken er vaak voorkomen in beelden van wagens. Met behulp van deze informatie kan dan in elk beeld naar gebieden gezocht worden die deze vaak voorkomende kenmerken bevatten, en deze worden dan gezien als voorgrond. Detectie op basis van Haarkenmerken wordt gebruikt bij de detectie van wagens in onder andere [TCTVG12][LWD09][VJ01][Kan08]. HOG-kenmerken Een andere manier om voorgrondobjecten te beschrijven is aan de hand van een histogram van geori¨enteerde gradi¨enten (HOG) . Deze werden oorspronkelijk ontwikkeld voor de detectie van mensen [DT07][HXYJ05][SRBB06], maar werden ook al toegepast voor gezichtsherkenning [DBSDlT11] en herkenning van wagens [NCP]. Om het histogram te berekenen moet eerst het gradi¨entbeeld berekend worden. Dit kan door simpelweg de horizontale en verticale afgeleide te nemen aan de hand van de volgende filters: −1 h i (2.4) −1 0 1 en 0 1 Andere meer complexe methoden voor het bepalen van het gradi¨entbeeld, zoals de Sobeloperator, kunnen ook gebruikt worden. Dit gradi¨entbeeld wordt dan verdeeld in cellen en voor elk van deze cellen wordt een histogram opgesteld van de gradi¨entori¨entatie. Dit histogram bestaat uit 9 groepen, elk van deze groepen komt overeen met een bepaald ori¨entatiebereik met een grootte van 40 graden. Voor elke pixel in de cel wordt de gradi¨entori¨entatie berekend. Dit gebeurt met behulp van de volgende formule: θ = d arctan( dxy ). Hierbij is dy de gradi¨ent in de y richting en dx de gradi¨ent in de x richting. Om te kunnen omgaan met verandering van belichting over het beeld worden de sterktes van de gradi¨enten genormaliseerd over een lokaal blok in de omgeving van die gradi¨entwaarde. Het uiteindelijke histogram dient dan als beschrijving van het object. Om een object te detecteren op basis van deze kenmerken moet, net als bij de Haarkenmerken, bepaald worden hoe de objecten die we willen detecteren ge¨ıdentificeerd kunnen worden. Hiervoor is opnieuw een verzameling van afbeeldingen nodig waarvan geweten is dat ze het te detecteren object bevatten.
2.1.4
Rand-gebaseerde objectdetectie
Detectie van voorgrondobjecten kan ook gebeuren op basis van randen. In [GVHP11] worden bewegende randen gedetecteerd, deze randen geven aan waar voorgrondobjecten aan
7
het bewegen zijn. Om deze bewegende randen te detecteren wordt er gebruik gemaakt van het gradi¨entbeeld in de x- en y-richtingen. Er wordt een achtergrondmodel opgebouwd voor beide richtingen. Dit achtergrondmodel bestaat uit twee delen: Een langetermijnmodel (met trage leerfactor) en een kortetermijnmodel (met snelle leerfactor). Bij de detectie in een nieuw frame worden twee binaire maskers opgesteld voor elke gradi¨entrichting, ´e´en op basis van het langetermijnmodel en ´e´en op basis van het kortetermijnmodel. Deze binaire maskers limiteren de gradi¨entbeelden in het nieuwe frame. In deze gelimiteerde gradi¨entbeelden worden dan randen gedetecteerd. Dit zijn de bewegende randen.
2.2
Classificatie
Veel videogebaseerde verkeersanalysesystemen doen een poging om de verschillende types voertuigen die zich op de weg bevinden in categorie¨en in te delen. Er zijn verschillende manieren om een gedetecteerd object in te delen in een bepaalde klasse. Een eenvoudige manier is bijvoorbeeld op basis van de grootte of de hoogte/breedte-verhouding van het object. Andere technieken maken gebruik van de contour van het object. Een beschrijving van het object kan ook een combinatie zijn van deze eigenschappen. In [MT06a] worden 17 eenvoudige kenmerken -zoals lengte, breedte en ruwheid van de contour- gebruikt om het object te identificeren. Buiten deze eenvoudige objecteigenschappen kan ook gebruik gemaakt worden van meer geavanceerde kenmerken zoals de HOG en Haarkenmerken, die reeds werden beschreven bij de detectie. Voor elk type object dat men wil classificeren moet in dit geval uiteraard een verzameling van voorbeeldafbeeldingen beschikbaar zijn. Voor deze voorbeeldafbeeldingen worden dan kenmerken berekend. Deze kenmerken kunnen voorgesteld worden als een vector. Deze vector kan dan dienen als een input voor een algoritme voor machinaal leren. Deze algoritmes hebben echter ook een verzameling van vectoren nodig die niet van het object zijn dat gedetecteerd moet worden. Een kort voorbeeld illustreert dit het best. Stel dat we wagens op de weg willen detecteren, dan nemen we eerst een verzameling afbeeldingen van wagens en een verzameling van afbeeldingen van delen van de weg. Voor elk van deze verzamelingen detecteren we kenmerken, en hieruit volgen twee verzamelingen van vectoren. De vectoren die berekend werden uit de afbeeldingen van voertuigen dienen dan als positieve monsterwaarden voor het leeralgoritme, de andere als negatieve. Er zijn verschillende algoritmes die een classificatiesysteem kunnen opbouwen. Enkele van deze systemen zijn: support vector machines (SVMs), Boosted Trees, Random forests en artifici¨ele neurale netwerken. Deze werken van buitenaf allemaal op een gelijkaardige manier. Ze krijgen een bepaalde inputvector en maken een voorspelling op basis van deze vector (bv. komt deze vector van een afbeelding van een wagen of een stuk van de weg?).
2.2.1
SVMs
SVMs zoeken een meerdimensionaal vlak dat een optimale scheiding geeft tussen de positieve en de negatieve inputmonsterwaarden. Voor nieuwe monsterwaarden wordt dan gekeken aan welke kant van dit meerdimensionaal vlak ze gelegen zijn. Op Figuur 2.2 is te zien hoe dit gebeurt in een tweedimensionale ruimte. Er wordt een splitsing gemaakt in de ruimte op basis van de afstand tussen de verschillende monsterwaarden.
8
Figuur 2.2: Het SVM algoritme zoekt een optimale scheiding tussen de verschillende inputvectoren. In het tweedimensionale geval is dit een lijn, bij hogere dimensies is dit een meerdimensionaal vlak. Bron: http://upload.wikimedia.org/wikipedia/commons/b/b5/ Svm separating hyperplanes %28SVG%29.svg
2.2.2
Boosting
Boosting [Fri00] is een techniek om sterke beslissingen te nemen aan de hand van verschillende, mogelijks slechte, beslissers. Deze beslissers kunnen bijvoorbeeld beslissingsbomen zijn. Het populairste algoritme voor boosting is AdaBoost [FS99]. AdaBoost werkt iteratief: in elke stap wordt een beslissingsmechanisme opgebouwd. In de eerste iteratie krijgen alle monsterwaarden dezelfde wegingsfactor maar in elke iteratie worden de gewichten van de monsterwaarden aangepast. Monsterwaarden die in deze iteratie door de beslisser verkeerd werden geclassificeerd krijgen een hoger gewicht, deze die juist werden geclassificeerd een lager. Dit zorgt ervoor dat in elke volgende iteratie gefocust wordt op de moeilijke samples. De uiteindelijke beslissing wordt dan genomen door een gewogen som te nemen van de beslissers die in elke iteratie opgebouwd werden. Boosting wordt vaak gebruikt in combinatie met Haarkenmerken voor objectdetectie [VJ01][TCTVG12].
2.2.3
Random forests
Een random forest classifier [BS01] is een beslissingsmechanisme dat bestaat uit meerdere beslissingsbomen. Deze beslissingsbomen worden opgebouwd met algoritmes zoals CART of ID3. Elk van deze beslissingsbomen wordt opgebouwd voor een willekeurige deelverzameling van de trainingset. Om deze deelverzameling te selecteren wordt er gebruik gemaakt van bootstrap aggregation ook wel bagging genoemd. Dit is een manier om een deel van de trainingset te selecteren. Bij het opbouwen van de random forest classifier wordt bagging zowel toegepast voor de selectie van verschillende monsterwaarden als voor de selectie van een deelverzameling van de attributen. Op figuur 2.3 zijn twee selecties van waarden uit de trainingset te zien. Voor elk van deze deelverzamelingen zal een beslissingsboom opgebouwd worden. Het random forest algoritme kan, na het opstellen van de verschillende beslissingsbomen, een beslissing nemen over een nieuwe monsterwaarde door elk van de afzonderlijke
9
A1
A2
A3
A4
A5 Deelverzameling 1: Deelverzameling 2:
Figuur 2.3: In de afbeelding zien we twee deelverzamelingen van een dataset, voor elk van deze deelverzamelingen zal een beslissingsboom opgebouwd worden.
beslissingsbomen te laten beslissen tot welke klasse deze nieuwe monsterwaarde behoort. De uiteindelijke beslissing van het random forest is dan een gemiddelde van de beslissingen van de afzonderlijke bomen, dit principe wordt ge¨ıllustreerd op figuur 2.4.
2.2.4
Artifici¨ ele neurale netwerken
Artifici¨ele neurale netwerken zijn ge¨ınspireerd op de werking van de neuronen in onze hersenen. De biologische neuronen worden in silico voorgesteld door een niet-lineaire functie met een aantal ingangen en een uitgang (Figuur 2.5). Elk van de ingangen heeft een geassocieerd gewicht dat aangeeft hoe sterk deze ingang bijdraagt tot de uitgangswaarde. Een artificieel neuraal netwerk wordt opgebouwd door deze neuronen in een bepaalde structuur aan elkaar te koppelen. Het volledige netwerk heeft dan een aantal ingangen en uitgangen. Om het neuraal netwerk te trainen naar een bepaalde verzameling van ingangsen uitgangswaarden wordt het backpropagation algoritme gebruikt. Dit algoritme past de interne gewichten in het netwerk aan om zo de fout op de verzameling van trainingsdata te minimaliseren. Na het trainen van een neuraal netwerk kan het gebruikt worden om voorspellingen te maken over nieuwe inputwaarden.
2.2.5
Clustering
Voorgaande classificatietechnieken hebben een vooraf gelabelde verzameling van positieve en negatieve monsterwaarden nodig om getraind te worden. Dit zijn dus allemaal voorbeelden van supervised learing. Het is echter ook mogelijk om de verschillende monsterwaarden in groepen op te delen door ze te clusteren. Dit is een vorm van unsupervised learing. Deze techniek is toegepast in [CWDV]. Hier worden de elementen van een verzameling met trainingsdata geclusterd om de verschillende objectcategorie¨en te identificeren. Een object kan dan geclassificeerd worden door het te verenigen met een van de clusters.
2.2.6
Prestatie
De prestatie van deze technieken is niet altijd even goed. Uit [CKY08] blijkt dat random forests goed presteren voor kleine tot zeer grote inputvectoren. Boosted trees presteren beter voor kleine inputvectoren, maar voor grotere vectoren zakt hun prestatie ver onder
10
Figuur 2.4: De beslissing in een random forest wordt genomen door elk van de beslissingsbomen een beslissing te laten maken, de uiteindelijke beslissing is dan een gemiddelde van deze beslissingen.
die van random forests. SVMs presteren minder goed dan de andere technieken bij vectoren van lage dimensie, bij hogere dimensies doen enkel random forests het duidelijk beter. Artifici¨ele neurale netwerken presteren consistent voor vectoren van alle dimensies maar de prestatie is steeds lager dan de best presterende techniek bij die dimensie.
2.3
Tracken
Tracken is nodig om het pad dat een object binnen een video aflegt te bepalen. Dit houdt in de praktijk in dat gedetecteerde objecten in elk frame gematched moeten worden met gedetecteerde objecten uit het/de vorige frames. Dit kan op twee manieren gebeuren: ofwel op basis van positie, ofwel op basis van de kenmerkvector van het object.
2.3.1
Op basis van positie
De posities van een object in opeenvolgende frames van een video liggen meestal dicht bij elkaar. Dit is immers noodzakelijk om ervoor te zorgen dat wanneer een mens de video bekijkt de objecten vloeiend bewegen. Deze informatie kan dan gebruikt worden om objecten over verschillende frames te matchen door voor elk object in het nieuwe frame het object in het vorige frame te zoeken dat op de kortste (Euclidische) afstand
11
Figuur 2.5: Artificieel neuron, dit is de bouwsteen van een artificieel neuraal netwerk. Het netwerk kan worden opgebouwd door een aaneenschakeling te maken van deze neuronen.
ligt. Een alternatieve matchingmaat kan de overlap zijn tussen de twee objecten in de opeenvolgende frames. Om eventuele ruis in de detectieposities te verkleinen kan gebruik gemaakt worden van een Kalman filter. Het Kalman filter maakt een schatting van de volgende positie van het object. Als er een nieuwe waarde beschikbaar is, wordt deze met behulp van de schatting omgezet in een uitgemiddelde waarde. De nieuwe waarde wordt dan ook opgenomen in het predictiemodel waarmee de volgende stap geschat wordt.
2.3.2
Op basis van de kenmerkvector
Een alternatief voor positiegebaseerd tracken is tracken op basis van de kenmerkvector. Dit wordt in [TCTVG12] toegepast op Haarkenmerken. In elke frame wordt de kenmerkvector van elk object berekend. Deze vector wordt opgeslagen zodat de objecten in het volgende frame gematched kunnen worden op basis van deze kenmerkvectoren. Dit kan simpelweg door het object in het vorige frame te zoeken waarvan de Euclidische afstand tussen die zijn kenmerkvector het kleinst is tot de kenmerkvector van het object waarvoor we een match zoeken.
2.4
Tellen
Exacte telling Voor het tellen van voertuigen zijn er verschillende opties, de een al wat ingewikkelder dan de andere. In [LLGM08] wordt voor elke rijstrook een rechthoekige zone gedefinieerd. Als binnen die zone een object gedetecteerd wordt zal het gemiddelde van de waarden binnen de detectierechthoek verhogen. De variatie op dit gemiddelde over de verschillende frames kan dan gezien worden als een binair signaal dat aangeeft wanneer er een wagen door de detectiezone rijdt. In [GA07] gebeurt het tellen door per rijstrook twee detectielijnen te defini¨eren. Als het voertuig de eerste lijn bereikt wordt het nog niet geteld, het is pas wanneer de tweede detectielijn een signaal ontvangt dat de wagen
12
die daar voorbijkomt geteld wordt. Deze extra validatie verhoogt de accuraatheid van de telling. In [GS10] is telling een gevolg van het systeem van detectie en tracken. De verschillende voertuigen worden over een bepaald deel van de weg gevolgd, en dit resulteert in een traject van het voertuig door de detectiezone. Het aantal voertuigen is dan gewoon het aantal voertuigen die gevolgd konden worden van het begin van deze zone tot aan het einde. In [BI09] wordt een zeer eenvoudige manier van tellen ge¨ıntroduceerd, er is slechts ´e´en detectielijn. Het aantal voertuigen (hier boten) die voorbij deze lijn passeren is dan gewoon het aantal paden die snijden met deze tellijn. Deze paden zijn het resultaat van de detectie en het tracken van de voertuigen. Tellen op basis van statistieken Naast exacte tellingsmethoden, die elk object afzonderlijk detecteren voor het geteld wordt, zijn er ook statistische telmethoden. Deze maken gebruik van globale beeldkenmerken om het aantal objecten te tellen. In [CZsV08] en [ASAM09] worden globale beeldkenmerken gebruikt om het aantal voorbijwandelende personen te tellen. In [ASAM09] worden hoeken gedetecteerd in het beeld. Op basis van het aantal hoeken wordt een schatting gemaakt van het aantal personen dat zichtbaar is in de sc`ene. In [CZsV08] wordt een schatting van het aantal personen gemaakt gebaseerd op 28 kenmerken van de voorgrond. Voorbeelden van deze kenmerken zijn de oppervlakte en omtrek.
13
Hoofdstuk 3
Eigen aanpak 3.1
Overzicht
Tijdens deze thesis heeft het telalgoritme dat ik heb ontwikkeld een aantal veranderingen ondergaan. Deze ontwikkelingen leverden uiteindelijk drie algoritmen op die met elkaar vergeleken kunnen worden. Het tweede algoritme (waar er het meeste tijd aan werd gespendeerd) heeft ook nog een aantal varianten Het eerste algoritme werd ontwikkeld door Jasper Desmadryl [Des13], een andere thesisstudent die in opdracht van Traficon een algoritme moest ontwerpen voor het tellen van wagens. Deze methode is gebaseerd op background subtraction waarbij verschillende achtergrondmodellen (onder andere een mix van Gaussianen) mogelijk zijn. Het tweede algoritme probeert gewone background subtraction te verbeteren door aan de hand van een geleerd model van wagens de gedetecteerde objecten te valideren. Om het model van de wagens op te stellen moest er eerst trainingsdata verzameld worden over hoe de wagens ge¨ıdentificeerd kunnen worden. Om deze data te verzamelen heeft het algoritme een leerfase waarin positieve en negatieve monsterwaarden verzameld worden. Indien er genoeg van deze monsterwaarden worden verzameld, worden deze gebruikt om een classifier te trainen. Deze classifier kan dan gebruikt worden om na te gaan of een afbeelding een wagen bevat of niet. Het derde algoritme is tot stand gekomen uit de observatie dat in het tweede algoritme bij het verzamelen van trainingsdata de positieve monsterwaarden veel randen bevatten en de negatieve zo goed als geen randen. Een detectie van voorgrondobjecten op basis van hun randen leek dus een goede optie. Het voordeel van het gebruik van randen is dat ze gebaseerd zijn op relatieve intensiteitsverschillen. Als gevolg daarvan zijn ze beter bestand tegen verandering van belichting dan gewone background subtraction technieken. In wat volgt worden algoritmes twee en drie verder uitgewerkt. Voor meer informatie over het eerste algoritme verwijs ik naar de masterproef van Jasper Desmadryl [Des13]. In Figuur 3.1 is een overzicht te zien van algoritmes twee en drie op het hoogste niveau. Algoritmes twee en drie onderscheiden zich enkel in de detectiefase van elkaar, de tracking en telfases zijn identiek. Algoritme twee maakt gebruik van kenmerken om te proberen de gewone detectie gebaseerd op background subtraction te verbeteren. Het derde algoritme
14
Figuur 3.1: Hoogste-niveau blokschema van de ontwikkelde telalgoritmes.
maakt enkel gebruik van gedetecteerde randen om te beslissen of er een object gedetecteerd moet worden. Vanaf hier zal naar algoritme twee verwezen worden met RKD (randkenmerkgebaseerde detectie) en naar algoritme drie met BRD (bewegenderandgebaseerde detectie).
3.2
Randkenmerkgebaseerde detectie (RKD)
Dit algoritme bestaat uit drie fasen. In de eerste fase wordt informatie verzameld over hoe wagens en de weg zich van elkaar onderscheiden. Deze informatie wordt voorgesteld door verzamelingen, ´e´en met positieve en ´e´en met negatieve monsterwaarden. De positieve monsterwaarden zijn afbeeldingen van objecten die door de detector werden gedetecteerd en waarvan de zekerheid hoog genoeg is dat ze effectief een wagen bevatten. De negatieve monsterwaarden zijn willekeurige delen van de weg waar geen objecten werden gedetecteerd. De twee verzamelingen worden hierna gefilterd om eventuele fouten die in de verzamelingen werden ge¨ıntroduceerd door een imperfecte detectie, weg te werken. Na het filteren dienen de verzamelingen van positieve en negatieve monsterwaarden als input voor een random forest algoritme (dit is de tweede fase). Het algoritme stelt een classifier op die kan beoordelen of een afbeelding al dan niet een wagen bevat. De derde en laatste fase van het algoritme is de detectiefase. In deze fase wordt er in de buurt van objecten die gedetecteerd werden met background subtraction gezocht naar een gebied waar de zekerheid het hoogst is dat er zich daar een wagen bevindt. Als deze zekerheid hoog genoeg is, is er effectief een detectie. Voor deze drie fasen in detail besproken worden moet eerst worden vastgelegd hoe wagens ge¨ıdentificeerd zullen worden. Dit zal gebeuren aan de hand van lokale randkenmerken.
3.2.1
Definitie van lokale randkenmerken
Om een object binnen een beeld te kunnen detecteren moet dit object op de een of andere manier ge¨ıdentificeerd kunnen worden. Dit kan door bepaalde kenmerkende beeldeigenschappen van dat object te bepalen en deze te gebruiken als identificatie voor dat object. In de literatuurstudie werden reeds een aantal bestaande soorten kenmerken opgelijst. Hier is ge¨experimenteerd met lokale randkenmerken. De keuze voor randkenmerken kwam tot stand uit de observatie dat het voor een mens redelijk eenvoudig is om een object te identificeren aan de hand van enkel zijn randen. Dit is bijvoorbeeld te zien in figuur 3.2, het is duidelijk dat de objecten nog steeds goed herkenbaar zijn als wagens enkel op basis van hun randen. Randkenmerk Definitie 1. Een lokaal randkenmerk is een matrix van 3 x 3 pixels waarbinnen een aantal pixels als randpixel gedefini¨eerd worden en de rest als niet-randpixels.
15
Figuur 3.2: Aan deze wireframe afbeeldingen van wagens is te zien dat een wagen goed herkenbaar is enkel gebaseerd op zijn randen. Bron: http://oncoffee.blogspot.be/2007 09 01 archive. html http://zengarage.com.au/2011/08/benedict-radcliffe/
Op figuur 3.3 zijn de kenmerken zichtbaar die in het algoritme gebruikt worden. De zwarte gebieden duiden randpixels aan, de witte andere pixels. Om een beeld te identificeren wordt voor elk van de voorafgedefini¨eerde lokale randkenmerken berekend hoe vaak ze voorkomen in dat beeld. Dit levert een histogram op. De waarden in dit histogram dienen dan als kenmerkvector voor dat beeld. Om het histogram te berekenen van een afbeelding wordt er eerst randdetectie op toegepast. Met elke randpixel in het randbeeld wordt de middelste pixel van elk van de lokale randkenmerken gealigneerd. Indien het lokaal randkenmerk overeenkomt met deze omgeving binnen het beeld wordt dit kenmerk gedetecteerd en zal de overeenkomstige waarde in het histogram ge¨ıncrementeerd worden. Figuur 3.4 geeft een overzicht van dit proces. Een histogram over het volledige beeld houdt echter geen rekening met de spatiale informatie van de lokale randkenmerken. Om deze informatie wel in rekening te brengen heeft het algoritme dat de kenmerkvector van een afbeelding bepaalt een parameter die aangeeft in hoeveel delen de afbeelding moet opgesplitst worden (figuur 3.5). Het opsplitsen gebeurt als volgt: Indien de parameter die meegegeven wordt gelijk is aan n dan zal het beeld opgesplitst worden in n rijen en n kolomen van gelijke grootte. Voor elk van de cellen die hierdoor ontstaat wordt het histogram berekend. De resulterende vectoren voor elke cel worden dan geconcateneerd tot ´e´en kenmerkvector voor het volledige beeld.
16
Figuur 3.3: Lokale randkenmerken: 3x3 pixelgebieden, zwarte pixels stellen een rand voor.
Berekening Omdat bij de detectie van objecten een venster over een beeld wordt verschoven, waarvoor op elke positie de kenmerken berekend moeten worden, is het noodzakelijk dat dit op een effici¨ente manier kan gebeuren. Dit kan door te werken met een integraalbeeld. Eerst wordt aan de hand van het randbeeld een beeld opgesteld dat op elke pixel ofwel het volgnummer van het daar gedetecteerde kenmerk bevat, ofwel nul als daar geen kenmerk werd gedetecteerd. Met dit beeld kan dan het integraalbeeld opgesteld worden. In dit geval is het integraalbeeld een matrix van vectoren, met dezelfde dimensies als de afbeelding. Elk van deze vectoren heeft een element voor elk van de lokale randkenmerken. De lengte van deze vectoren is dus gelijk aan het aantal lokale randkenmerken die werden gedefini¨eerd (= K). Als we element (x, y) in de matrix bekijken is dit een vector van lengte K, die op elke positie i binnen die vector, het aantal voorkomens van lokaal randkenmerk i in het beeld vanaf positie (0, 0) tot positie (x, y) bevat. Na het opstellen van dit integraalbeeld voor een volledige afbeelding, kan voor elk rechthoekig deel van de afbeelding de kenmerkvector berekend worden met slechts twee aftrekkingen en ´e´en optelling. Figuur 3.6 illustreert het principe van een integraalbeeld. Vergelijking 3.1 toont hoe de kenmerkvector kan berekend worden. Hierbij is v de resulterende kenmerkvector en S(i, j) de waarde in het integraalbeeld op positie (i, j).
17
Kenmerkhistogram
# voorkomens
Randdetectie
Figuur 3.4: Berekening lokale randkenmerken: Het aantal voorkomens van elk kenmerk is een element in het histogram.
v = S(x2 , y2 ) − S(x2 , y1 ) − S(x1 , y2 ) + S(x1 , y1 )
18
(3.1)
# voorkomens Figuur 3.5: Verdeling van het beeld in cellen: Voor elke cel wordt het histogram berekend. Het kenmerk van het volledige beeld is dan een concatenatie van deze histogrammen.
19
S(x1,y1)
S(x2,y1)
S(x1,y1)
S(x2,y1)
S(x1,y2)
S(x2,y2)
S(x1,y2)
S(x2,y2)
S(x1,y1)
S(x2,y1)
S(x1,y1)
S(x2,y1)
S(x1,y2)
S(x2,y2)
S(x1,y2)
S(x2,y2)
=
-
-
+
Figuur 3.6: De kenmerkvector wordt uit het integraalbeeld berekend door het verschil te nemen van het aantal kenmerken in het gebied met de blauwe puntjes met het aantal in de rode en gele gebieden en daarbij het aantal kenmerken in het groene gebied op te tellen. Het integraalbeeld S(xi , yi ) is het aantal kenmerken in elk van deze gebieden indien de rechter benedenhoek op co¨ordinaat (i, j) ligt.
20
3.2.2
Fase 1: verzamelen van trainingsdata
Overzicht
Figuur 3.7: Blokschema fase 1.
Zoals al eerder vermeld, is het verzamelen van de trainingsdata een onderdeel van dit algoritme, er is dus geen vooraf gedefinieerde verzameling met trainingsdata. Er zijn twee
21
voordelen aan deze techniek. Eerst en vooral neemt het de nood aan een vooraf gedefinieerde manueel geannoteerde dataset weg. Hierbovenop verzamelt het algoritme positieve en negatieve monsterwaarden van dezelfde sc`ene waarop later detectie zal gebeuren. Dit resulteert in een verzameling van trainingsdata die specifiek is voor die sc`ene. De keuze om deze techniek toe te passen volgt uit de observatie dat de camera op verschillende plaatsen boven de weg opgesteld kan worden, wat resulteert in een andere camerahoek en dus een ander zicht van de objecten in de sc`ene. Bovendien is het zelfs mogelijk dat de camera opkomend of wegrijdend verkeer filmt. Indien we de verzameling van trainingsdata vooraf zouden opstellen moet er voor elk van deze gevallen een andere verzameling worden opgebouwd. Het grote nadeel van deze techniek is dat de positieve en negatieve monsterwaarden die door het algoritme verzameld worden fouten kunnen bevatten. Op figuur 3.8 is te zien dat monsterwaarden (g), (h) en (k) niet voldoen aan de kwaliteit die een goede monsterwaarde zou moeten hebben. Bijvoorbeeld: monsterwaarde (h) bevat verschillende wagens, monsterwaarde (k) bevat geen wagens en monsterwaarde (g) bevat maar een deel van een wagen. Om te proberen de kwaliteit van de dataset te verhogen, wordt elk van de verzamelingen geclusterd met als doel gelijkaardige monsterwaarden te groeperen (zie figuur 3.9). Omdat we ervan uit kunnen gaan dat de meeste monsterwaarden in de datasets gelijkaardig en van goede kwaliteit zijn, zouden de clusters met de hoogste kardinaliteit de goede monsterwaarden moeten bevatten. Om de monsterwaarden te filteren nemen we dus enkel deze die in een cluster terechtkomen waarvan de kardinaliteit bij de hoogste van de verschillende clusters ligt. Na deze procedure hebben we dus twee verzamelingen. De ene met afbeeldingen van wagens op de weg, de andere met afbeeldingen van willekeurige delen van de weg. Losstaand van het verzamelen van positieve en negatieve monsterwaarden wordt in de leerfase ook het perspectief dat in het beeld aanwezig is geleerd. Dit gebeurt aan de hand van een lineare-regressiealgoritme dat de curve van de grootte van het object in functie van zijn positie benadert. Details algoritme Het selecteren van monsterwaarden gebeurt aan de hand van voorgrond/achtergrondsegmentatie gebaseerd op background subtraction met meerdere Gaussiaanse verdelingen als achtergrondmodel. Het resultaat van de voorgrond/achtergrond-segmentatie is een binaire afbeelding waarbij voorgrondobjecten wit zijn en de rest van de afbeelding zwart. In dit binair beeld worden dan contouren gezocht. Enkel de contouren waarvan de oppervlakte binnen een bepaald interval ligt en de hoogte-breedte verhouding ook binnen een bepaald interval ligt worden geselecteerd. Voorlopig worden de intervalwaarden voor het algoritme manueel ingegeven op basis van de locatie van de camera. Deze waarden zijn zodanig gekozen dat ze het formaat van de wagens onder die bepaalde camerahoek benaderen. Het is echter ook mogelijk om de grootte en hoogte/breedte verhouding te leren. Dit kan door een schatting te maken van deze parameters op basis van de vorig gedetecteerde objecten. Dit kan bijvoorbeeld aan de hand van lineaire regressie. Na deze selectie blijft er enkel een lijst van contouren over die dezelfde dimensionale kenmerken hebben als een wagen in het beeld. Op basis van deze lijst van contouren worden afbeeldingen uit het randbeeld van het originele frame geknipt die binnen de omlijsting van de contouren liggen. Deze afbeeldingen worden dan opgeslagen als positieve monsterwaarden. Omdat de kwaliteit van de monsterwaarden gepaard gaat met de kwaliteit van het
22
(a)
(b)
(c)
(d)
(e)
(f)
(g)
(h)
(i)
(j)
(k)
(l)
Figuur 3.8: Hier zijn een aantal monsterwaarden te zien die door het algoritme werden verzameld, deze bevatten fouten.
randbeeld werden twee types randdetectie geprobeerd. De eerste is gewone randdetectie met behulp van het Canny algoritme waarbij randen van de achtergrond gedeeltelijk weggefilterd worden met behulp van een achtergrondmodel van de randen. Dit model houdt voor elke pixel bij hoe vaak er op die positie een rand voorkwam. Als dit percentage voor een pixel hoog is, wordt deze pixel in het randbeeld van het huidige frame sowieso niet als rand gezien. Achtergrondranden worden zo gedeeltelijk weggefilterd. Het tweede type is detectie van bewegende randen, zoals ook gebruikt wordt in het BRD algoritme. Voor elke positieve monsterwaarde die verzameld wordt, zal er uiteindelijk ook een negatieve monsterwaarde verzameld worden. Dit gebeurdt door bij te houden hoeveel positieve monsterwaarden reeds werden geselecteerd. Op een moment dat er geen objecten in het frame worden gedetecteerd, worden er dan zoveel negatieve monsterwaarden verzameld. Na het verzamelen van deze positieve en negatieve monsterwaarden worden van elke monsterwaarde de kenmerken berekend. Het resultaat van de berekening is een vector. Dit resulteert dus in twee verzamelingen van vectoren, ´e´en voor de positieve monsterwaarden en ´e´en voor de negatieve. De elementen van elk van de verzamelingen worden geclusterd in acht clusters. Voor de positieve monsterwaarden worden enkel deze overgehouden die in ´e´en van de vier clusters met hoogste kardinaliteit terecht komen. Voor de negatieve monsterwaarden worden enkel
23
(a) (c)
(b)
Figuur 3.9: Toont een voorbeeld van de verschillende clusters, de cluster met de slechte monsterwaarden wordt weggefilterd. In dit geval cluster (c).
deze overgehouden die in de cluster met de hoogste kardinaliteit terecht komen. Het clusteren gebeurt via het k-means clusteralgoritme. Dit algoritme gebruikt de Euclidische afstand tussen vectoren om deze te clusteren. De vectoren zijn echter histogrammen en zouden dus beter volgens een andere afstandsmaat vergeleken worden. In verder werk zou bijvoorbeeld de Bhattacharyya afstand kunnen uitgeprobeerd worden. Het leren van het perspectief verloopt als volgt: er zijn twee datasets waardoor een lineaire curve geplot wordt. De eerste zet de breedte van de gedetecteerde objecten uit in functie van de verticale positie, de tweede de hoogte. Op basis van deze benaderde curve kan in de detectiefase de grootte van het zoekvenster bepaald worden door de verticale co¨ordinaat van het zoekvenster.
3.2.3
Fase 2: Het trainen van de classifier
Overzicht In deze fase dienen de verzamelingen van kenmerkvectoren van de positieve en negatieve monsterwaarden als input voor een random forest classifier algoritme. Er werd voor een random forest classifier gekozen omdat in [CKY08] wordt aangetoond dat deze zowel voor kleine als grote vectoren een goede prestatie levert. Aangezien deze vectoren binnen mijn algoritme kunnen vari¨eren in grootte afhankelijk van de parameters van de kenmerkdetec-
24
Figuur 3.10: Blokschema fase 2: De gefilterde monsterwaarden (die werden verzameld in fase 1) dienen als input voor een random forest algoritme. Dit algoritme stelt een random forest classifier op. Deze classifier kan dan van nieuwe monsterwaarden voorspellen tot welke klasse ze behoren.
tor leek dit een goede keuze. Details algoritme Voor het opstellen van een classifier werd een random forest algoritme gebruikt. Deze neemt twee lijsten van vectoren als input, dit zijn de positieve en negatieve monsterwaarden en geeft als resultaat een getrainde classifier die over een nieuwe vector kan beoordelen of het een positieve of negatieve monsterwaarde is. Dit gebeurt aan de hand van een zekerheidsscore, dit is een waarde tussen nul en ´e´en die aangeeft hoe zeker de classifier is dat de input tot ´e´en van de twee klassen behoort. Hierbij staat waarde 1 voor: 100% zeker dat deze monsterwaarde tot de klasse van positieve monsterwaarden behoort en waarde 0 voor: 100% zeker dat deze tot de verzameling van negatieve monsterwaarden behoort. Dit mechanisme is generiek ge¨ımplementeerd zodat het in verder onderzoek eventueel mogelijk is om het random forest algoritme te vervangen door een ander algoritme voor het opstellen van een classifier, bijvoorbeeld een SVM.
3.2.4
Fase 3: Detectie
Op figuur 3.11 is een overzicht te zien van de verschillende stappen in de detectie. Eerst gebeurt er voorgrond/achtergrond-segmentatie. Dit levert plaatsen in het beeld op waar er mogelijks een wagen is. In de buurt van deze gedetecteerde plaatsen wordt een zoekvenster verschoven (zie figuur 3.12). De grootte van dit zoekvenster wordt bepaald door de verticale co¨ ordinaat van het zoekvenster, deze wordt als input geven aan de regressiecurves (zie 3.2.2) die deze informatie modelleren. Voor elke positie van het zoekvenster wordt een kenmerkvector berekend die dient als input voor de classifier die een score geeft voor het venster op deze positie. Als we de scores voor elke positie van het venster in een tabel
25
Figuur 3.11: Blokschema fase 3
Detectie Zoekgebied
Zoekvenster
Figuur 3.12: Zoeken in de buurt van een door de voorgrond/achtergrond-segmentatie (partieel) gedetecteerd object.
bekijken krijgen we een ‘warmtekaart’ (ook wel heatmap genoemd) die aangeeft op welke plaatsen van het venster de score het hoogst is. Binnen deze heatmap wordt de positie van het venster gezocht waarvoor de score het hoogst is. Indien deze score boven een bepaalde drempelwaarde ligt zal er op deze plaats een detectie gebeuren. In figuur 3.13 wordt er een overzicht gegeven van het detectieproces.
26
Score voor venster is pixel in heatmap Verwaziging
Maximale score > 0,75? Detectie
0,9873
Figuur 3.13: Detectieproces: voor elke positie van het rode zoekvenster binnen het blauwe zoekgebied wordt een classifier score berekend. Deze score bepaalt de waarde van ´e´en pixel in het warmtebeeld. Na verwaziging wordt de maximale waarde binnen het warmtebeeld gezocht. Als deze waarde hoger is dan de drempelwaarde is er een detectie.
3.3
Bewegende randdetectie (BRD)
In figuur 3.14 is een overzicht te zien hoe deze detector werkt. Deze detectiemethode is een stuk eenvoudiger dan RKD, maar blijkt toch zeer goed te presteren. Het algoritme bestaat uit twee grote stappen. Eerst worden bewegende randen gedetecteerd volgens de methode voorgesteld in [GVHP11]. Als resultaat levert dit een beeld op dat enkel randen bevat van objecten die binnen de sc`ene aan het bewegen zijn. Om gebieden in het beeld met een hoge randdichtheid te bepalen wordt het beeld eerst verwazigd. Dit resulteert in een grijswaardenbeeld dat zwart is in de gebieden waar niet veel randen werden gedetecteerd en grijs is in de gebieden waar dit wel zo is. Op dit beeld wordt dan een drempelwaarde opgelegd zodat gebieden boven een bepaalde grijswaarde als voorgrond gezien worden en de rest als achtergrond.
27
Figuur 3.14: Blokschema bewegende-randen-gebaseerde detectie (BRG).
3.4
Tracken
Het tracken (ofwel volgen van objecten) werd eerst ge¨ımplementeerd door elk gedetecteerd object te matchen met een object in het vorige frame. Deze matching gebeurde op basis van de kortste afstand tussen de posities van de objecten. Dit gaf echter problemen in het RKD algoritme omdat hier nogal vaak de detectie wegviel in ´e´en of meerdere frames. Om te kunnen omgaan met gemiste detecties moest de matching gebeuren over meerdere frames. Om dit te doen wordt de videosequentie gemodelleerd als een 3D-ruimte met twee plaats- en ´e´en tijdsdimensie (zie figuur 3.15). Voor een object dat in een nieuw frame werd gedetecteerd, wordt er gezocht naar een ander object (dat in het verleden werd gedetecteerd) dat op de kortste afstand van dit nieuwe object ligt. Omdat de plaats en tijdsdimensies niet dezelfde eenheid hebben (plaats in pixels en tijd in frames), wordt er bij de berekening van de afstand met een wegingsfactor vermenigvuldigd voor de tijdsdimensie. Het is natuurlijk mogelijk dat niet elk object dat wordt gedetecteerd, gematched kan worden met een object uit de vorige frames. Dit is het geval wanneer er een nieuw object de sc`ene betreedt. In dit geval zal een nieuwe traject-identificatiecode gelinkt worden aan het object. Deze code dient als identificatie voor het traject dat het object in de volgende frames zal afleggen. Bijvoorbeeld: Als in een volgend frame een nieuw object gematched wordt met het object in dit frame met traject-identificatiecode 1 zal dit nieuwe object deze traject-identificatiecode overnemen. Een traject is dus een verzameling van objectdetecties met dezelfde identificatiecode. Een ander probleem dat zich stelt bij de detectie is dat het kan voorkomen dat er op hetzelfde moment een object de sc`ene betreedt en een ander object de sc`ene verlaat. Om te vermijden dat het object dat de sc`ene net heeft verlaten gematched wordt met het nieuwe object, is er een maximale afstandsdrempel ingesteld. Indien de afstand tussen twee objecten groter is dan deze drempelwaarde kunnen ze sowieso niet gematched worden. De laatst mogelijke situatie is als er een object de sc`ene verlaat. Hiervoor zijn geen verdere aanpassingen aan het algoritme nodig. Het object zal gewoon ‘verdwijnen in de geschiedenis’ naarmate het verder weg op de tijdsas terechtkomt.
3.5
Tellen
Om de voertuigen die voorbijrijden te tellen wordt er een tellijn op de weg gedefini¨eerd. Deze tellijn moet manueel op de weg aangeduid worden aan de hand van een configuratieprogramma. De tellijn staat best loodrecht op de richting van het verkeer, maar
28
Z(frames)
X (pixels)
Figuur 3.15: 3D-model van de videosequentie.
andere hoeken zijn ook mogelijk zolang de lijn over de volledige breedte van de weg strekt. Een aantal voorbeelden van tellijnen zijn te zien in figuur 3.16. De afbeelding linksboven toont de beste ori¨entiatie voor de tellijn. De ori¨entaties rechtsboven en linksonder zullen een correcte telling opleveren maar tellen ook verder in het beeld: op die plaatsen is de detectie en tracking minder robuust omdat daar meer occlusies optreden. De afbeelding linksonder toont een tellijn die enkel voertuigen zal tellen in het linker rijvak. Bovendien zal deze telling gevoeliger zijn voor fouten in de detectie en tracking. Het is immers mogelijk dat door een aantal gemiste detecties, een voertuig over het volledige beeld een aantal verschillende paden en dus meerdere traject-identificatiecodes heeft. Een detectielijn loodrecht op de richting van het verkeer zal maar een korte periode overlappen met het gedetecteerde object. Deze aanpak is robuuster tegen detectie- en tracking-fouten. Naast de ori¨entatie van de tellijn, speelt ook de positie een rol. De ideale positie van de lijn hangt af van de positie van de camera. Indien de camera onder een relatief lage hoek opgesteld staat is het over het algemeen beter om de detectielijn dichter bij de camera te defini¨eren om zo problemen met occlusies zo veel mogelijk te vermijden. Indien de camera hoog boven de weg opgesteld staat en naar beneden is gericht is de beste positie van de tellijn in het midden van het beeld. Op deze plaats is detectie en tracking het meest stabiel. Dit zijn slechts algemene richtlijnen voor het bepalen van de detectielijn. In de praktijk zal de configurator de sc`ene wat moeten analyseren en op basis daarvan proberen
29
(a)
(b)
(c)
(d)
Figuur 3.16: Mogelijke locaties van de tellijn: (a) optimale locatie, (b) en (c) werken maar niet optimaal, (d) enkel telling in het linker rijvak.
een goede beslissing te nemen over de locatie van de tellijn. Het tellen van voertuigen zelf volgt uit hun trakcing. Zoals eerder vermeld, heeft elk gedetecteerd object een code die identificeert tot welk pad het behoort. Wanneer een gedetecteerd object snijdt met de tellijn zal deze code toegevoegd worden aan een verzameling van getelde objecten. Deze verzameling is ge¨ımplementeerd als een std :: set en kan dus geen twee keer dezelfde code bevatten: Als een object met dezelfde code meerdere keren snijdt met de tellijn zal het toch maar ´e´en keer geteld worden. Het totaal aantal getelde wagens op een gegeven moment is dan de kardinaliteit van de verzameling met codes.
30
Hoofdstuk 4
Resultaten In de volgende secties worden de resultaten en tussenresultaten besproken. Eerst volgen een aantal algemene resultaten over background subtraction. Deze illustreren de verschillende problemen met background subtraction. Daarna worden een aantal resultaten besproken om de prestatie van de classifier kwantitatief te bepalen. In de daaropvolgende sectie zal besproken worden waarom de detectie aan de hand van een integraalbeeld moest verlopen en welk resultaat dit dan uiteindelijk oplevert. In de sectie over tracking wordt de prestatie van twee verschillende methoden vergeleken. In het laatste deel van dit hoofdstuk worden de verschillende algoritmes vergeleken op vier video’s. Op de bijgeleverde DVD zijn een aantal video’s te vinden die een aantal resultaten visueel weergeven. Al deze video’s werden getest en spelen correct af in VLC media player, deze is op de website te downloaden: http://www.videolan.org/vlc/.
4.1
Background subtraction
Indien background subtraction gebaseerd op een achtergrondmodel met meerdere Gaussianen toegepast wordt, is de kwaliteit van de voorgrond/achtergrond-segmentatie afhankelijk van een aantal parameters. De belangrijkste hiervan zijn: • De leersnelheid • Het aantal Gaussianen • De drempelwaarde voor het scheiden van voorgrond en achtergrond Na een aantal experimenten blijkt dat het vrij moeilijk is deze parameters zo te kiezen zodat het algoritme optimaal presteert op elke video. De uiteindelijke parameters die in het algoritme werden gebruikt zijn: • Aantal Gaussianen: 5 • Leersnelheid: 0,01 • Drempelwaarde: 1 Hoewel deze parameters niet voor elke video optimaal zijn kan geargumenteerd worden dat er geen verzameling van parameters is die voor elke video een optimaal resultaat heeft. Elke verzameling van parameters kan, indien deze op meerdere video’s wordt toegepast, de volgende problemen in de detectie niet vermijden.
31
(a)
(c)
(b)
(d)
(e)
(f)
(h)
(g)
Figuur 4.1: Voorbeelden van fouten in voorgrond/achtergrond-segmentatie: (a) samenvoegen voorgrondobjecten; (b) en (c) voertuigen worden in meerdere delen gedetecteerd; (d), (e) en (f) vals positieve detecties; (g) en (h) verandering belichting.
• foute voorgronddetectie vanwege verandering in belichting. (zie figuur 4.1 (g) en (h)); • voertuigen worden in meerdere delen gedetecteerd. (zie figuur 4.1 (b) en (c)); • vals positieve detecties. (zie figuur 4.1 (d), (e) en (f)); • samenvoegen van voorgrondobjecten. (zie figuur 4.1 (a)) Het voorgestelde RKD algoritme probeert het probleem van de valse positieven op te lossen en slaagt daar, zoals later zal blijken, ook in. Het RKD algoritme zou in principe ook moeten kunnen omgaan met verschillende voertuigen die in ´e´en voorgrondobject worden samengevoegd. Uit de detectieresultaten bleek dit met de gedefini¨eerde classifier echter onmogelijk te zijn. Dit komt verder aan bod bij de bespreking van de detectieresultaten. Het BRD algoritme stapt af van detectie in het intensiteitsdomein en voert detectie uit in het randdomein. Omdat randen gebaseerd zijn op relatieve intensiteitsverschillen is het algoritme beter bestand tegen zowel lokale als globale belichtingsveranderingen.
32
(a)
(b)
Figuur 4.2: Verschil tussen twee types randdetectie: (a) monsterwaarden van de achtergrond gebruikmakende van bewegenderanddetectie, (b) monsterwaarden van de achtergrond gebruikmakende van een randmodel per pixel.
4.2
Verzamelen van trainingsdata
Zoals al eerder werd uitgelegd in sectie 3.2.2, wordt de trainingsdata verzameld door voorgrond/achtergrond-segmentatie. Dit heeft als gevolg dat de positieve en negatieve monsterwaarden fouten bevatten. Dit levert de verzameling van monsterwaarden op die geraadpleegd kan worden op de bijgeleverde DVD in de map ‘monsterwaarden’. Indien we deze verzameling manueel controleren zien we dat de verzameling met positieve monsterwaarden 5,3% fouten bevat. Onder een fout wordt verstaan dat de monsterwaarde helemaal geen of slechts een deel van een wagen bevat. De verzameling van negatieve monsterwaarden bevat 9,5% fouten. Hier is een fout een monsterwaarde die een deel van een wagen bevat. In het vorige hoofdstuk werd reeds beschreven dat de effectieve kenmerkdetectie gebeurt op het randbeeld van deze positieve en negatieve monsterwaarden. Er werden twee manieren beschreven om het randbeeld op te stellen. De eerste (op basis van een achtergrondmodel voor elke pixel) levert randbeelden op waarin de achtergrondranden niet volledig weggefilterd worden (bv. figuur 4.2 (a)). Indien bewegenderand-detectie wordt gebruikt is er geen zo’n ruis (te zien op figuur 4.2 (b)).
33
(a)
(b)
Figuur 4.3: Verschil resultaat randdetectie op verschillende video’s: (a) randdetectie van goede kwaliteit, wagens zijn goed te herkennen. (b) randdetectie van slechte kwaliteit, wagens zijn minder goed te herkennen.
Een groot probleem dat opduikt bij het werken met het randbeeld is dat de kwaliteit ervan zeer parametergevoelig is. De initi¨ele testen die ik uitvoerde waren maar op ´e´en video. Hierbij was het mogelijk de parameters voor de randdetectie zo te kiezen dat dit voor die video goede resultaten opleverde (te zien op figuur 4.3 (a)). Als met deze zelfde parameters echter randdetectie uitgevoerd wordt op andere video’s gaat de kwaliteit van de randdetectie een stuk achteruit. Dit heeft als gevolg dat wagens niet altijd goed herkenbaar zijn op basis van hun randen (zie figuur 4.3 (b)).
4.3
Clusteren
Omdat uit voorgaande resultaten blijkt dat de verzamelingen van positieve en negatieve monsterwaarden nogal wat fouten bevatten kreeg ik het idee om deze te proberen filteren aan de hand van clustering. Dit leverde echter geen goede resultaten op: Het clusteren slaagt er wel in om een aantal van de foute monsterwaarden weg te filteren maar filtert ook een groot deel van de goede weg. Dit resulteert in een kleinere trainingsset waardoor de winst door het uitfilteren van slechte monsterwaarden teniet wordt gedaan door het verlies aan goede samples. Op grafiek 4.4 zijn de resultaten te zien van de random forest classifier. De classifier werd getraind met een verzameling van 300 positieve en
34
Vergelijkingwel/ niet clusteren 1
0,98
Specificiteit
0,96
0,94
0,92
zonder clusteren met clusteren
0,9
0,88
0,86
0,84 0,7
0,75
0,8
0,85
0,9
0,95
1
Sensitiviteit
Figuur 4.4: Sensitiviteit en specificiteit bekomen door evaluatie van de testverzameling op de getrainde classifier. In de ene reeks werd de classifier getraind met de trainingsverzameling voor het clusteren, de andere met deze na het clusteren. De verschillende reekswaarden werden bekomen door een variatie van de classificatiedrempel tussen 0,25 en 0,55.
300 negatieve monsterwaarden, verzameld met voorgrond/achtergrond-segmentatie. De testen werden uitgevoerd met een testset van 200 positieve en 840 negatieve afbeeldingen, verzameld door manueel delen uit de video te selecteren. Elk reekspunt komt overeen met een bepaalde drempelwaarde voor de classifier. Indien de classifier een score boven deze drempelwaarde oplevert dan wordt deze input gezien als een afbeelding van een wagen, anders wordt ze gezien als een afbeelding die enkel achtergrond bevat. Zoals te zien is op de grafiek is de prestatie zo goed als gelijk. De resultaten na clusteren zijn soms net iets beter, maar de winst blijft beperkt. Dat de resultaten zo goed als gelijk zijn wil wel zeggen dat zelfs een kleinere trainingsset toch goede resultaten kan opleveren indien deze minder slechte monsterwaarden bevat.
4.4
Trainen van de classifier
Zoals in de vorige sectie werd vermeld hangt het resultaat van de classificatie af van de kwaliteit van de monsterwaarden die als input dienen, alsook van de classificatiedrempel. Een andere factor die de classificatie be¨ınvloedt zijn de kenmerken die gebruikt worden om de afbeeldingen te identificeren.
35
Invloed van de splitsingsfactor op de classificatieprestatie 1
0,95
0,9
0,85
0,8
Sensitiviteit Specificiteit
0,75
0,7
0,65
0,6 0
2
4
6
8
10
12
Splitsingsfactor
Figuur 4.5: Sensitiviteit en specificiteit van de prestatie van de classifier in functie van de splitsingsfactor van de lokale randkenmerken. Een lage splitsing levert prestatiewinst op maar bij een splitsingsfactor van 5 wordt het optimum bereikt.
4.4.1
Prestatie classifier
We beginnen met de prestatie van de classifier te analyseren bij verschillende splitsingsfactoren van de lokale randkenmerken. Indien we de sensitiviteit en specificiteit van de prestatie van de classifier op de testverzameling plotten in functie van de splitsingsfactor, krijgen we het resultaat te zien op grafiek 4.5. (Deze resultaten werden gegenereerd gebruikmakende van dezelfde train- en testverzamelingen als de clusteringtesten.) We zien dat enkel de sensitiviteit grote variatie kent bij verandering van de splitsingsfactor. Het punt waarbij zowel sensitiviteit als specificiteit hoog zijn, ligt bij een splitsingsfactor van vijf. Hierbij is de sensitiviteit 0,92 en specificiteit 0,94. Er wordt gestreefd naar een hoge sensitiviteit en een hoge specificiteit omdat we een zo goed mogelijk onderscheid willen maken tussen de samples. Met andere woorden: Het doel is om zo weinig mogelijk vals negatieven ´en zo weinig mogelijk vals positieven te hebben.
36
21
20
Tijd(s)
19
18
17
16
15 0
2
4
6
8
10
12
Splitsingsfactor
Figuur 4.6: Uitvoeringstijd in functie van de splitsingsfactor: Een lage splitsingsfactor heeft een beperkt effect op de uitvoeringstijd, bij hogere splitsingsfactoren is dit effect meer uitgesproken.
4.4.2
Uitvoeringstijd
Als we de uitvoeringstijd bekijken in functie van de splitsingsfactor zien we dat het verhogen van deze factor zorgt voor een langere uitvoeringstijd (zie grafiek 4.6). Voor een lagere splitsingsfactor blijft de computationele overhead beperkt. Een splitsingsfactor van vijf is dus een goede keuze, zowel op gebied van classificatieprestatie als uitvoeringstijd.
4.4.3
Vergelijking HOG kenmerken
Om de prestatie van de door mij gedefini¨eerde kenmerken te vergelijken met de stand van de techniek maak ik hier de vergelijking met classificatie aan de hand van HOG kenmerken. Op grafiek 4.7 zien we het resultaat voor een vari¨erende classificatiedrempel. Het is duidelijk dat de HOG kenmerken beter presteren dan de kenmerken die hier door mij werden gedefini¨eerd. Dit was op het eerste zicht verrassend aangezien beiden werken op de eerste orde afgeleide van het beeld om zo de richtingen van de randen vast te leggen. HOG kenmerken zijn hier vermoedelijk beter omdat ze meer richtingsinformatie bevatten. De HOG kenmerken maken over het algemeen gebruik van negen richtingen. Hoewel mijn kenmerken ook hoeken proberen te modelleren, zijn de belangrijkste lokale randkenmerken de horizontale, verticale en twee types diagonale randen. Omdat de richting van de
37
Vergelijkinglokale randkenmerken met HOG 1 0,98 0,96
Specificiteit
0,94 0,92 0,9
L ka e randkenmerken
HOG
0,88 0,86 0,84 0,82 0,8
0,65
0,7
0,75
0,8
0,85
0,9
0,95
1
Sensitiviteit
Figuur 4.7: In deze grafiek worden sensitiviteit en specificiteit van de prestatie van de classifier op de testverzameling uitgezet. Beide reeksen werden opgebouwd door een variatie van de classificatiedrempel van 0,25 tot 0,55. Hier is te zien dat HOG kenmerken beter presteren dan lokale randkenmerken.
originele gradi¨ent niet in deze vier types kenmerken is opgenomen gaat deze informatie dus verloren. De HOG kenmerken behouden deze informatie wel. Dit verlies aan informatie kan makkelijk ge¨ıllustreerd worden aan de hand van een voorbeeld. Stel dat er twee randen zijn (zoals op figuur 4.8). De lokale randkenmerken zullen deze rand met hetzelfde kenmerk identificeren, terwijl de HOG kenmerken deze randen zullen onderscheiden omdat de gradi¨entrichting anders is (zie rode pijl).
38
Rand 1
Rand 2
Figuur 4.8: In het randbeeld zullen deze randen op dezelfde manier ge¨ıdentificeerd worden. De randen zijn echter wel verschillend, HOG kenmerken houden hier rekening mee, lokale randkenmerken niet.
4.5
Detectie
Eerst wordt besproken waarom het integraalbeeld zo belangrijk is bij de detectie. Daarna volgt een analyse van de prestatie van de detectie in het RKD algoritme.
4.5.1
Integraalbeeld
Zoals eerder besproken gebeurt de detectie door een zoekvenster te verschuiven binnen een zoekgebied in de omgeving van een gedetecteerd object. In een eerste implementatie werd voor elke positie van het zoekvenster de kenmerkvector vanaf nul berekend. Uit testen bleek dat dit gemiddeld 1 ms duurde. De gemiddelde grootte van het zoekvenster is 100 × 100 pixels en het zoekgebied is vier keer zo groot in oppervlakte. Er zijn bijgevolg 100 × 100 mogelijke posities voor het zoekvenster binnen het zoekgebied. De totale tijd voor ´e´en detectie is dus: T1 = 100 × 100 × 1 ms (4.1) Omdat er meerdere detecties kunnen zijn in ´e´en frame is de totale detectietijd per frame: Tn = n × 100 × 100 × 1 ms
39
(4.2)
met n het aantal te detecteren objecten. Met een uitvoering in ware tijd niet als vereiste, maar toch als streefdoel is een detectietijd van meer dan 10 seconden per frame onaanvaardbaar. Indien gebruik gemaakt wordt van een integraalbeeld moeten eerst voor het volledige zoekgebied de kenmerken berekend worden, dit duurt ongeveer 4 ms. Uit deze kenmerken wordt dan het integraalbeeld berekend. Dit duurt ongeveer 2 ms. De kenmerkvector voor elke positie van het zoekvenster kan nu berekend worden met slechts twee verschillen en ´e´en optelling. De tijd voor het berekenen van de kenmerken voor elke positie van het zoekvenster is verwaarloosbaar ten opzichte van de tijd die nodig is voor het opstellen van het integraalbeeld zodat: T1 = 4 ms + 2 ms = 6 ms (4.3) en Tn = n.6 ms
(4.4)
,wat uitvoering in ware tijd mogelijk maakt.
4.5.2
Prestatie
Indien we ´e´en van de video’s bekijken in de map ‘detectie resultaten/RKD’ op de bijgeleverde DVD zien we dat, hoewel de detectie meestal correct is, de positie van het detectievenster zeer instabiel is. Om te achterhalen wat de oorzaak hiervan is werden zgn. warmtekaarten gegenereerd. Deze tonen voor elke positie van het zoekvenster (binnen het zoekgebied van een detectie) de score die de classifier aan dat zoekvenster geeft. Bij een lage splitsingsfactor voor de lokale randkenmerken zien we dat deze warmtekaart meestal een egaal gebied is, met overal relatief hoge waarden (figuur 4.9 (a)). Hierdoor is het moeilijk een stabiel maximum te vinden over verschillende frames. Bij een hogere splitsingsfactor is het makkelijker om een maximum af te leiden omdat de hoge waarden meer gecentreerd zijn in het beeld (figuur 4.9 (b)). Hier treden echter vaak vreemde artefacten op (figuur 4.9 (c)). De exacte oorzaak hiervoor is mij tot hiertoe nog steeds niet volledig duidelijk. Een vermoeden is dat de classifier op sommige posities van het venster faalt omdat de trainingsafbeeldingen niet gealigneerd zijn, d.w.z. dat in de trainingsafbeeldingen het object zich niet steeds op dezelfde positie binnen het frame bevindt. Een ander vermoeden is dat er in de code nog een bug zit waardoor deze artefacten in bepaalde situaties ge¨ıntroduceerd worden. De code is echter grondig gedebugged waardoor de kans op een fout klein is. Er is verder onderzoek nodig om exact te bepalen waar de oorzaak van deze fouten ligt. Een eerste stap zou zijn het aligneren van de trainingsafbeeldingen voordat de classifier getraind wordt en dan de warmtebeelden opnieuw te analyseren. Deze warmtebeelden bewezen echter wel dat het algoritme in staat is vals positieve detecties van het background subtraction algoritme weg te filteren (figuur 4.9 (d)). Het probleem is dat de classifier dit niet doet op basis van de randenstructuur maar gewoon op het feit of er al dan niet randen in de afbeelding aanwezig zijn. Dit heeft als gevolg dat het niet mogelijk is om samengevoegde wagens terug van elkaar te scheiden. Het warmtebeeld zal geen twee afzonderlijke maxima bevatten, maar enkel hoge waarden over het volledige gebied waarin de wagens zich bevinden. In verder werk zou het eventueel wel mogelijk
40
a
litsingsfactor 1
b
litsingsfactor 5
c Artefacten
d) Correctie FP
Figuur 4.9: (a) Lage splitsingsfactor resulteert in een egale warmtekaart. (b) Hogere splitsingsfactor zorgt voor een meer uitgesproken maximum. (c) Artefacten die optreden in de warmtekaarten. (d) Warmtekaart van een valse detectie.
zijn om samengevoegde voorgrondobjecten te scheiden op basis van hun grootte. Zoals eerder beschreven gebruikt het RKD algoritme lineaire regressie om de grootte van het zoekvenster te leren voor elke positie binnen het beeld. Deze informatie over de grootte van een voorgrondobject kan dan gebruikt worden om te schatten of er meerdere objecten in ´e´en gedetecteerd object zitten.
4.6
Tracking
Uit grafiek 4.10 blijkt dat het modelleren van de video in drie dimensies een stuk robuuster is tegen het wegvallen van een detectie in ´e´en of meerdere opeenvolgende frames. De blauwe lijn ligt een stuk boven de andere twee lijnen wat aangeeft dat er veel vals positieve tellingen waren. Een eventueel alternatief voor deze online tracking in de 3D video is, tracking uitvoeren als post processing. Hierbij is elk frame in de 3D ruimte een beeld dat de warmtekaart van de detecties van het overeenkomstige frame in de originele video bevat. Aan de hand van het Bellaman-Ford algoritme kan dan een kortste gewogen pad gezocht worden tussen de eerste en de laatste detectie van een voertuig. De x en y co¨ordinaten van dit pad
41
Verge ijkingtracking met o en 450
400
350
# oert igen
300
50
orige rame trac ing 3 trac ing
00
150
100
50
0 0
000
4000
6000
000
10000
1 000
14000
16000
ramen mmer
Figuur 4.10: Op de grafiek is te zien dat het telresultaat, gebruikmakende van 3D-tracking veel dichter ligt bij de grondwaarheid dan tracking enkel op basis van het vorige frame
stellen dan het traject voor die de wagen binnen het beeld heeft afgelegd. Het is in verder onderzoek zeker interessant om deze methode uit te proberen en te kijken of ze een beter tellingsresultaat oplevert.
4.7
Tellen
Het hoofddoel van deze thesis was het tellen van voertuigen. In wat volgt worden voor vier verschillende video’s de prestaties van de verschillende algoritmes getest. Twee van deze video’s hebben kleurinformatie, de andere twee enkel grijswaarden. Alle vier de video’s bevatten matig tot zwaar verkeer. Af en toe zijn er ook momenten waarop er enkel licht verkeer is, maar deze zijn eerder beperkt. Voor elk van deze video’s werd een grondwaarheid voorzien. Het is op basis van deze data dat de verschillende algoritmes getest werden. Op grafieken 4.11, 4.12, 4.13 en 4.14 zijn de resultaten voor de verschillende video’s te zien. In deze grafieken staat RKD voor het kenmerkgebaseerd detectiealgoritme, RKD (bewegende randen) voor datzelfde algoritme waarbij gewone randdetectie werd vervangen door bewegende randdetectie, BRD voor het randgebaseerde algoritme en GT voor de grondwaarheid.
42
Te re
taten vi eo inga ore
350
300
#voert igen
50
00
(be egen e ran en)
B
150
100
50
0 0
5000
10000
15000
0000
5000
30000
35000
Framen mmer
Figuur 4.11: Het aantal getelde voertuigen in functie van het framenummer in video ‘Singapore’ voor de: RKD, RKD met bewegende randen en BRD algoritme ten opzichte van de grondwaarheid. Het RKD en BRD algoritme liggen dicht bij de grondwaarheid. Het RKD algoritme met bewegende randen heeft meer vals negatieven dan de anderen.
Het RKD algoritme presteert in de meeste gevallen het slechtst, enkel in de video Singapore doet het RKD algoritme met bewegende randen het slechter. We zien dat het gebruiken van bewegende randen ervoor zorgt dat er minder vals positieve detecties zijn, aangezien de curve voor dit algoritme consistent onder de curve van het gewone RKD algoritme ligt. Dit is ook logisch, het gebruik van bewegende randen zorgt voor veel minder ruis in de positieve en negatieve trainingsafbeeldingen, dit resulteert in een sterkere classifier. Bovendien zal het zoekgebied in de detectiefase geen randen van de achtergrond bevatten. Dit heeft als gevolg dat indien het background subtraction algoritme een deel van de achtergrond detecteert dit toch geen randen zal bevatten. Het is dan makkelijk voor de classifier om deze valse detectie weg te filteren. Hoewel de prestatie van het RKD algoritme en het RKD algoritme met bewegende randen niet slecht is, presteert het BRD algoritme op alle video’s toch een heel stuk beter. De verklaring hiervoor is dat de twee RKD algoritmes in principe hetzelfde doen als het BRD algoritme, ze zoeken naar delen in het beeld die veel randen bevatten. Het BRD algoritme doet dit echter op een veel eenvoudigere manier. De twee RKD algoritmes hebben te veel stappen waarbij het fout kan lopen waardoor hun prestatie een stuk slechter is.
43
Te re
taten video inga ore T om on
700
600
# voert igen
500
400
(be egen e ran en)
B
300
00
100
0 1000
17000
000
7000
3000
Framen mmer
Figuur 4.12: Het aantal getelde voertuigen in functie van het framenummer in video ‘Singapore Thomson’ voor RKD, RKD met bewegende randen en BRD algoritme ten opzichte van de grondwaarheid. Hier presteert het BRD algoritme het best, beide RKD algoritmes (maar vooral het RKD algoritme zonder bewegende randen) hebben last van vals positive tellingen.
44
Te re
taten video r
e
atec
1000
00
00
# voert igen
00
600
KD 500
RKD (bewegende randen)
BRD
400
GT 300
00
100
0 11300
13300
15300
1300
1300
1300
3300
5300
300
Framen mmer
Figuur 4.13: Het aantal getelde voertuigen in functie van het framenummer in video ‘Brussel watec’ voor RKD, RKD met bewegende randen en BRD algoritme ten opzichte van de grondwaarheid. Het BRD algoritme presteert hier opnieuw het best. Beide RKD algoritmes hebben opnieuw last van vals positieve tellingen.
45
Te re
taten video r
e T
700
600
# voert igen
500
400
RKD RKD (bewegende randen) BRD
300
GT 200
100
0 27000
29000
31000
33000
35000
37000
39000
Framen mmer
Figuur 4.14: Het aantal getelde voertuigen in functie van het framenummer in video ‘Brussel PTZ’ voor RKD, RKD met bewegende randen en BRD algoritme ten opzichte van de grondwaarheid. Het BRD algoritme doet het hier opnieuw het best. De RKD algoritmes hebben opnieuw last van vals positieve tellingen.
46
In tabellen 4.1, 4.2, 4.3 en 4.4 worden de precision en recall waarden voor de verschillende algoritmes getoond. Deze werden berekend door de video op te splitsen in intervallen van 1500 frames. Indien het aantal tellingen binnen zo’n interval groter was dan dat in de grondwaarheid werd het verschil gezien als vals positief, indien het lager was als vals negatief. Dit is geen exacte meting maar geeft een goede benadering om de resultaten te kunnen analyseren. Indien we deze resultaten bekijken zien we dat het background subtraction algoritme over het algemeen beter presteert dan de in deze thesis ontwikkelde methoden. Deze resultaten moeten echter wat genuanceerd worden. De resultaten van het background subtraction algoritme zijn de optimale waarden die voor elke video kunnen bereikt worden door aanpassing van de parameters van het algoritme. Voor de RDK, RDK met bewegende randen en het BRD algoritme werden deze optimale parameters nog niet experimenteel bepaald. De parameters die nu in deze algoritmes gebruikt worden, werden over het verloop van de ontwikkeling gekozen om op de video ‘Singapore’, zo goed mogelijke resultaten te krijgen en werden niet verder aangepast voor de andere video’s. Dit is ook te zien in tabel 4.1 hier zijn de resultaten over het algemeen beter dan deze van het background subtraction algoritme. Dit geeft aan dat de idee achter de hier ontwikkelde methoden wel goed is, gebruik maken van randinformatie kan ervoor zorgen dat er betere resultaten behaald kunnen worden dan met background subtraction. Er moet echter experimenteel bepaald worden wat de optimale verzameling van parameters voor het algoritme is. Hoewel het in theorie mogelijk is dit te doen door de parameters voor elke video te laten vari¨eren tot een optimaal resultaat bekomen wordt, is dit in de praktijk niet echt haalbaar. Het is niet mogelijk om voor elke nieuwe positie van de camera deze optimale verzameling parameters vast te leggen. Er moet daarom gezocht worden naar een verzameling van parameters die op verschillende types video’s goede resultaten oplevert. In tabel 4.5 wordt de accuraatheid van de verschillende methoden nog eens met elkaar vergeleken. Hieruit blijkt dat het BRD algoritme het best presteert van de drie, met een totale accuraatheid van 95%. Deze totale accuraatheid is de accuraatheid van: de som van het aantal voertuigen dat in elke video werd geteld ten opzichte van de som van het aantal voertuigen dat effectief in elke video geteld moest worden.
47
Precision Recall
RKD 0,97973 0,926518
RKD (bewegende randen) 0,989209 0,878594
BRD 0,970684 0,952077
Background subtraction 0,924 0,8902
Tabel 4.1: Precision en Recall waarden voor de verschillende methodes op video ‘Singapore’
Precision Recall
RKD 0,831169 0,971537
RKD (bewegende randen) 0,93988 0,889943
BRD 0,971944 0,920304
Background subtraction 0,9296 0,9851
Tabel 4.2: Precision en Recall waarden voor de verschillende methodes op video ‘Singapore Thomson’
Precision Recall
RKD 0,681388 1
RKD (bewegende randen) 0,814194 0,973765
BRD 0,938918 0,830247
Background subtraction 0,983 0,8667
Tabel 4.3: Precision en Recall waarden voor de verschillende methodes op video ‘Brussel Watec’
Precision Recall
RKD 0,805229 0,993548
RKD (bewegende randen) 0,818908 0,991935
BRD 0,920245 0,967742
Background subtraction 0,961 0,9916
Tabel 4.4: Precision en Recall waarden voor de verschillende methodes op video ‘Brussel PTZ’
RKD RKD (bewegende randen) BRD
Singapore
Singapore Thomson
0,946 0,889 0,981
0,831 0,947 0,947
Brussel Watec 0,532 0,8 0,884
Brussel PTZ 0,766 0,789 0,948
Totaal 0,771 0,923 0,95
Tabel 4.5: Deze tabel toont de accuraatheid van de methoden: RKD, RKD met bewegende randen en BRD op de vier gebruikte video’s. Het BRD algoritme scoort het best met een totale accuraatheid van 95%.
48
Hoofdstuk 5
Besluit In deze thesis werden twee algoritmes ontwikkeld voor het tellen van voertuigen. Er werd geprobeerd het resultaat van huidige methoden gebaseerd op background subtraction te verbeteren op basis van randkenmerken van voertuigen. Dit is gedeeltelijk gelukt, maar de resultaten zijn erg parameterafhankelijk. Het BRD algoritme presteert uiteindelijk het best, met een totale accuraatheid van 95% over alle video’s. De twee geteste variaties op het RKD algoritme presteren slechter: de extra complexiteit in deze algoritmes zorgt voor meer stappen waar er fouten kunnen optreden. Na de verschillende experimenten kan besloten worden dat randen gebruiken voor het detecteren van voertuigen op een weg een goede werkwijze is. Het is robuust tegen veranderingen in belichting (wat het aantal vals positieven reduceert) en kan op een relatief eenvoudige en efficiente manier ge¨ımplementeerd worden. Hoewel de hier ontwikkelde randgebaseerde detectietechnieken vaak niet beter zijn dan de geoptimaliseerde background subtraction algoritmen werd toch bewezen dat het BRD algoritme betere resultaten kan bereiken dan deze algoritmen. Dit duidt aan dat het interessant is het BRD algoritme verder te optimaliseren om zo over het algemeen betere resultaten te bekomen dan background subtraction algoritmen. Een eerste verbetering kan liggen in de manier waarop randen gegroepeerd worden. Op dit moment wordt een eenvoudige verwaziging gebruikt om naar gebieden met een hoge randdichteid te zoeken. Op deze manier kunnen wagens die dicht bij elkaar rijden als ´e´en object gedetecteerd worden. Er moet dus naar een betere manier gezocht worden om de randen van een wagen te groeperen. Verder is het nodig om een meer diepgaande vergelijking te maken tussen het BRD algoritme en background subtraction algoritmen om te analyseren of het BRD algoritme consistent beter kan zijn.
5.1
Toekomstig onderzoek
Ondanks dat er twee algoritmes werden ontwikkeld voor het tellen van voertuigen, ligt de focus van deze twee algoritmes op een andere toepassing. Het BRD algoritme focust effectief op het tellen van voertuigen die voorbijrijden. Het algoritme veronderstelt dat deze beweging er is om detectie te kunnen doen. Zoals eerder vermeld is dit algoritme in staat om bestaande background subtraction technieken te verbeteren. De vraag is of dit in de praktijk effectief van belang is. Is een ruwe schatting van het aantal voertuigen niet al goed genoeg om te beslissen waar nieuwe wegen ingeplant moeten worden, of om de venti-
49
latie in een tunnel aan te passen? Volgens mij is een ruwe schatting voor deze toepassingen voldoende. Het detectie en tracking gedeelte van het algoritme kan echter wel voor andere toepassingen gebruikt worden. Een betrouwbare tracking kan bijvoorbeeld gebruikt worden om de snelheid van voertuigen te registreren. Bij de detectie kan ook geprobeerd worden een onderscheid te maken tussen verschillende voertuigen zoals: wagens, vrachtwagens en motoren. Dit zijn specifieke onderwerpen die elk een eigen onderzoek verdienen. De focus van het RKD algoritme ligt hoofdzakelijk op het detecteren van objecten aan de hand van hun kenmerken. Dit is interessant omdat er niet verondersteld moet worden dat de voertuigen in het beeld bewegen. Indien dit soort detectie op een robuuste manier kan gebeuren is het mogelijk om ook stilstaande voertuigen (die bijvoorbeeld in een fille staan) te tellen. Hierbovenop maakt het de analyse van elke verkeerssituatie mogelijk. Een robuuste objectdetectie voor elke mogelijke camerapositie is echter een gebied waarin nog veel onderzoek nodig is. De meeste tot nu toe ontwikkelde objectdetectietechnieken leggen veel eisen op hoe de camera de sc`ene filmt. Deze gebruiken ook een betrouwbare manueel geselecteerde verzameling van positieve en negatieve trainingmonsterwaarden. Het online verzamelen van deze trainingsmonsterwaarden (zoals het RKD algoritme doet) vraagt ook nog meer onderzoek om te bepalen of het effectief praktisch bruikbaar is. Uit de hier bekomen resultaten zou ik besluiten dat dit niet het geval is. Ten eerste moet de dichtheid van het verkeer hoog genoeg zijn om voldoende monsterwaarden te kunnen verzamelen, maar niet te hoog zodat er op een betrouwbare manier goede samples verzameld kunnen worden. Ten tweede bevatten de verzamelingen van monsterwaarden vaak fouten, er moet een betere manier gezocht worden om deze fouten weg te filteren om de kwaliteit van de trainingsverzamelingen te verhogen. Ten derde bevatten samples die op deze manier verzameld werden veel variatie, afhankelijk van waar het voertuig zich op dat moment op de weg bevond. Hierdoor is de verzameling van positieve trainingsmonsterwaarden niet consistent. De verzameling bevat afbeeldingen van wagens vanuit verschillende hoeken, het is beter om een verzameling te hebben die focust op ´e´en deel van de wagen (bv. de achterkant) die weinig in uitzicht verandert indien deze vanuit een andere camerahoek bekeken wordt. Om deze objectgebaseerde detectie op een betrouwbare manier te kunnen doen, is het ook nodig om te werken op beelden met een consistente kwaliteit, die zo hoog mogelijk is. Beelden van lage resolutie, die geen kleurinformatie bevatten maken de identificatie van voertuigen moeilijker. Naar mijn mening is het nodig om deze kwaliteitsrestricties aan te nemen om een goed objectgebaseerd detectiealgoritme te kunnen ontwikkelen. Deze algoritmes kunnen dan uitgebreid worden naar andere situaties.
50
Bibliografie [ASAM09]
A.l Albio, M. J. Silla, A. Albiol, and J. M. Mossi. Video analysis using corner motion statistics. In In Performance Evaluation of Tracking and Surveillance workshop at CVPR, pages 31–37, 2009.
[BI09]
D. Bloisi and L. Iocchi. Argos a video surveillance system for boat traffic monitoring in venice. International Journal of Pattern Recognition and Artificial Intelligence, 23(07):14771502, Nov 2009.
[BS01]
L. Breiman and E. Schapire. Random forests. In Machine Learning, pages 5–32, 2001.
[BVO11]
N. Buch, S. Velastin, and J. Orwell. A review of computer vision techniques for the analysis of urban traffic. IEEE transactions on intelligent transportation systems, 12(3):920–939, september 2011.
[CKY08]
R. Caruana, N. Karampatziakis, and A. Yessenalina. An empirical evaluation of supervised learning in high dimensions. In International Conference on Machine Learning (ICML, pages 96–103, 2008.
[CWDV]
I. M. Creusen, R. G. J. Wijnhoven, P. H. N. De, and Vinotion B. V. Applying feature selection techniques for visual dictionary creation in object classification.
[CZsV08]
A. Chan, J. Zhang-sheng, and L. N. Vasconcelos. Privacy preserving crowd monitoring: Counting people without people models or tracking. CVPR, pages 1–7, 2008.
[DBSDlT11] O. Dniz, G. Bueno, J. Salido, and F. De la Torre. Face recognition using histograms of oriented gradients. Pattern Recognition Letters, 32:1598–1603, 2011. [Des13]
J. Desmadryl. Ontwikkeling van een beeldverwerkingsalgoritme om voertuigen te tellen. Master’s thesis, KATHO, 2013.
[DT07]
N. Dalal and B. Triggs. Histograms of oriented gradients for human detection. In International Conference on Computer Vision and Pattern Recognition, pages 683–688, 2007.
[Fri00]
J. H. Friedman. Greedy function approximation: A gradient boosting machine. Annals of Statistics, 29:1189–1232, 2000.
51
[FS99]
Y. Freund and R. E. Schapire. A short introduction to boosting, 1999.
[GA07]
Z.i Guohu and R. Avery. A video-based vehicle detection and classification system for real-time traffic data collection using uncalibrated video cameras. 2007.
[GS10]
R. Garcia and D. Shu. Vision based vehicle tracking using a high angle camera. Technical report, Clemson University, may 2010.
[GVHP11]
S. Gruenwedel, P. Van Hese, and W. Philips. An edge-based approach for robust foreground detection. In Proceedings of the 13th international conference on Advanced concepts for intelligent vision systems, ACIVS’11, pages 554–565, Berlin, Heidelberg, 2011. Springer-Verlag.
[haa]
Intel, object detection using haar-like features. http://software.intel. com/sites/products/documentation/hpc/ipp/ippi/ippi ch14/ch14 object detection using haar like features.html.
[HH10]
H Haibo and Z. Hong. Real-time tracking in image sequences based-on parameters updating with temporal and spatial neighbourhoods mixture gaussian model. World Academy of Science, Engineering and Technology, 43:754–759, 2010.
[HLK04]
D.M. Ha, j.-M. Lee, and Y.-D. Kim. Neural-edge-based vehicle detection and traffic parameter extraction. Image and Vision Computing, 22:899–907, 2004.
[HXYJ05]
J. Hui-Xing and Z. Yu-Jin. Fast human detection by boosting histograms of oriented gradients. In Fourth International Conference on Image and Graphics, volume 1, pages 886–893, 2005.
[Kan08]
N.K. Kanhere. Vision-based Detection, Tracking and Classification of Vehicles Using Stable Features With Automatic Camera Calibration. PhD thesis, Clemson University, August 2008.
[KB08]
N.K. Kanhere and S.T. Birchfield. Real-time incremental segmentation and tracking of vehicles at low camera angles using stable features. IEEE transactions on intelligent transportation systems, 9(1):148–160, march 2008.
[LLGM08]
M. Lei, D. Lefloch, P. Gouton, and K. Madani. A video-based real-time vehicle counting system using adaptive background method. 2008 IEEE International Conference on Signal Image Technology and Internet Based Systems, page 523528, Nov 2008.
[LWD09]
W. Lu, S. Wang, and X. Ding. Vehicle detection and tracking in relatively crowded conditions. In Proceedings of the 2009 IEEE International Conference on Systems, Man, and Cybernetics San Antonio, TX, USA, pages 4136–4141, 2009.
[MT06a]
B. Morris and M. Trivedi. Improved vehicle classification in long traffic video by cooperating tracker and classifier modules. In IEEE International Conference on Video and Signal Based Surveillance, page 9, 2006.
52
[MT06b]
B. Morris and M. Trivedi. Robust classification and tracking of vehicles in traffic video streams. In Proceedings of the IEEE ITSC, pages 1078–1083, 2006.
[NCP]
P. Negri, X. Clady, and L. Prevost. Benchmarking haar and histograms of oriented gradients features applied to vehicle detection.
[SG99]
C. Stauffer and W.E.L. Grimson. Adaptive background mixture models for real-time tracking. Computer Vision and Pattern Recognition, 2, 1999.
[SRBB06]
F. Suard, A. Rakotomamonjy, A. Bensrhair, and A. Broggi. Pedestrian detection using infrared images and histograms of oriented gradients. In Intelligent Vehicles Symposium, IEEE, pages 206–212, 2006.
[svm]
Wikipedia, svm. http://upload.wikimedia.org/wikipedia/commons/b/ b5/Svm separating hyperplanes %28SVG%29.svg.
[TCTVG12] R. Tios-Cabrera, T. Tuytelaars, and L. Van Gool. Efficient multi-camera vehicle detection, tracking, and identification in a tunnel surveillance application. Computer Vision and Image Understanding, 116(6):742–753, june 2012. [VJ01]
P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 1:511–518, december 2001.
53