Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Segmentation via Genetic Programming Segmentation Segmentation Splitting an image into segments Hard problem Conceptually ill-defined Segmentation Which segmentation is the correct one? Segmentation Which segmentation is the correct one? Segmentation Which segmentation is the correct one? Segmentation Defining the problem Tagging function: seg x, y : R R segment1 , segment 2 ,, segment n Deciding function: seg x, y : R R true, false Segmentation The Dataset Berkley’s segmentation dataset and benchmark: • Images + Human made segmentation maps • Benchmark for segmentation algorithms Genetic Programming What is Genetic Programming? Bio-Inspired Artificial Intelligence method Inspired by Darwin’s evolutionary principles Genetic Programming Darwin’s principles Variety of species individuals within the population Competition for limited resources Overproduction of offspring generation Survival of the fittest Origin of Species, 1859 Genetic Programming The computational model Gn Gn+1 fitness 55 44 12 31 95 32 87 12 0 65 53 2 91 73 crossover + = mutation Segmentation via GP Individual Representation Individuals are represented as LISP-like functions X2 (* x x) 2x-1 (- (* (+ 1 1) x) 1) Segmentation via GP Individual Representation Equivalent to tree representation * x x * + 1 1 x 1 Segmentation via GP Genetic Operators Crossover * x x * + 1 1 x 1 * + 1 x 1 * x 1 x Segmentation via GP Genetic Operators Mutation * + 1 1 * x * 1 1 x x 1 1 Segmentation via GP Building the trees Function Set: {+, -, *, %, neg, conv, opp, sqrt} Terminal Set: {image, 0, 1, const, gradx, grady, ckernel} Strongly-Typed GP: conv(matrix,kernel) +(matrix,matrix), +(kernel,kernel), +(kernel,number), … Segmentation via GP Building the trees An example: Gradient Magnitude (sqrt (+ (* (conv image gradx) (conv image gradx)) (* (conv image grady) (conv image grady)))) Segmentation via GP Fitness measure Accuracy: acc result segmap result segmap Modified Accuracy: acc 1 result segmap 1 result segmap Segmentation via GP Threshold Individuals produce ‘soft boundary maps’, need threshold value Value too low – more points are reported (false positives) Value too high – less points are reported (true negatives) Segmentation via GP Threshold Berkley’s benchmark: split the threshold range into N equal parts, threshold and keep best. My method: split the threshold range into N unequal parts, by equal increase in reported points, proportional to number of points in the human made segmentation map. Segmentation via GP Miscellaneous Evolutionary Parameters Population size: 60-150 Generation count: unspecified Crossover rate: 90% Mutation rate: 10% Selection: tournament of 3 Tree depth: limited to 6-9 Sean Luke’s ECJ13 was used for running GP sessions Results A typical GP session Results A typical GP session Generation 0: 0.176 best, 0.08 average Generation 93: 0.262 best, 0.242 average Fitness does not always increase! Fitness leaps in best individual Results Best Individual Segmentation function (- (- (conv (* (conv image gradx) (conv image gradx)) (- (- (kernel 5.381114 -8.362269 8.888325 1.1866289 -6.4069843 -8.251046 -9.389916 6.183886 7.817788) grady) (- (kernel -2.334486 -4.6182337 9.115009 8.010966 -3.0507333 3.22619 2.068446 2.932576 -6.243905) 0.0))) (conv (* (conv image gradx) (conv image gradx)) (- (- (kernel 2.4412537 -8.362269 8.888325 1.1866289 -6.4069843 -8.251046 9.389916 6.183886 -7.817788) grady) (- (kernel 9.936699 -4.6182337 -9.115009 8.010966 -3.0507333 3.22619 2.068446 -2.932576 -6.243905) 0.0)))) (- ((- (conv image grady) (* 1.0 9.336973)) (% (* 1.0 9.336973) 9.336973)) (% (% (* -3.9138038 0.0) (* 0.0 0.0)) (% (* 1.0 9.336973) (* 1.0 9.336973))))) Results Best Individual Segmentation function (- (- (conv (* (conv image gradx) (conv image gradx)) (- (- (kernel 5.381114 -8.362269 8.888325 1.1866289 -6.4069843 -8.251046 -9.389916 6.183886 7.817788) grady) (- (kernel -2.334486 -4.6182337 9.115009 8.010966 -3.0507333 3.22619 2.068446 2.932576 -6.243905) 0.0))) (conv (* (conv image gradx) (conv image gradx)) (- (- (kernel 2.4412537 -8.362269 8.888325 1.1866289 -6.4069843 -8.251046 9.389916 6.183886 -7.817788) grady) (- (kernel 9.936699 -4.6182337 -9.115009 8.010966 -3.0507333 3.22619 2.068446 -2.932576 -6.243905) 0.0)))) (- ((- (conv image grady) (* 1.0 9.336973)) (% (* 1.0 9.336973) 9.336973)) (% (% (* -3.9138038 0.0) (* 0.0 0.0)) (% (* 1.0 9.336973) (* 1.0 9.336973))))) Results Best Individual Segmentation function (- (- (conv (* (conv image gradx) (conv image gradx)) (- (- (kernel 5.381114 -8.362269 8.888325 1.1866289 -6.4069843 -8.251046 -9.389916 6.183886 7.817788) grady) (- (kernel -2.334486 -4.6182337 9.115009 8.010966 -3.0507333 3.22619 2.068446 2.932576 -6.243905) 0.0))) (conv (* (conv image gradx) (conv image gradx)) (- (- (kernel 2.4412537 -8.362269 8.888325 1.1866289 -6.4069843 -8.251046 9.389916 6.183886 -7.817788) grady) (- (kernel 9.936699 -4.6182337 -9.115009 8.010966 -3.0507333 3.22619 2.068446 -2.932576 -6.243905) 0.0)))) (- ((- (conv image grady) (* 1.0 9.336973)) (% (* 1.0 9.336973) 9.336973)) (% (% (* -3.9138038 0.0) (* 0.0 0.0)) (% (* 1.0 9.336973) (* 1.0 9.336973))))) Results Best Individual Segmentation function (- (- (conv (* (conv image gradx) (conv image gradx)) (- (- (kernel 5.381114 -8.362269 8.888325 1.1866289 -6.4069843 -8.251046 -9.389916 6.183886 7.817788) grady) (- (kernel -2.334486 -4.6182337 9.115009 8.010966 -3.0507333 3.22619 2.068446 2.932576 -6.243905) 0.0))) (conv (* (conv image gradx) (conv image gradx)) (- (- (kernel 2.4412537 -8.362269 8.888325 1.1866289 -6.4069843 -8.251046 9.389916 6.183886 -7.817788) grady) (- (kernel 9.936699 -4.6182337 -9.115009 8.010966 -3.0507333 3.22619 2.068446 -2.932576 -6.243905) 0.0)))) (- ((- (conv image grady) (* 1.0 9.336973)) (% (* 1.0 9.336973) 9.336973)) (% (% (* -3.9138038 0.0) (* 0.0 0.0)) (% (* 1.0 9.336973) (* 1.0 9.336973))))) Results Best Individual Accuracy = 0.307 (GM accuracy = 0.280) Results Best Individual Accuracy = 0.172 (GM accuracy = 0.193) Results Best Individual Accuracy = 0.262 (GM accuracy = 0.245) Results Best Individual Accuracy = 0.126 (GM accuracy = 0.119) Summary Discussion It is possible to evolve segmentation functions using GP Results are good, can be better Evolved function ‘beats’ the gradient magnitude function Improve results by more power Summary Future Work More CPU and RAM More functions and terminals Use ADFs Evolve kernels separately Evolve threshold function separately Include more inputs: color images, textures, output of other edge detectors References 1. The Berkley Segmentation Dataset and Benchmark http://www.cs.berkeley.edu/projects/vision/grouping/segbench/ 2. Koza, J. R.: Genetic Programming: On the programming of computers by natural selection. MIT press, Cambridge, Mass. (1992) 3. Tomassini M.: Evolutionary Algorithms. Swiss Scientific Computing Center, Manno. 4. Darwin, Charles: On the origin of species by means of natural selection. London, John Murray, 1859 5. Montana, D.J.: Strongly typed genetic programming. Evolutionary Computation 3 (1995) 199–230 6. Langdon, W.B.: Size fair and homologous tree genetic programming crossovers. Genetic Programming and Evolvable Machines 1 (2000) 95–119. 7. Luke S.: ECJ 13 - a Java based Evolutionary Computation and Genetic Programming research system http://cs.gmu.edu/~eclab/projects/ecj 8. Koza, J. R.: Genetic Programming II: Automatic Discovery of Reusable Programs. MIT press, Cambridge, Mass. (1994)