330 likes | 345 Views
Explore how genetic programming can be used to solve the challenging and conceptually ill-defined problem of image segmentation. Learn about the computational model, genetic operators, fitness measures, and thresholding techniques for producing accurate segmentations.
E N D
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: • Deciding function:
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 crossover 55 + 44 = 12 31 95 32 87 12 0 65 mutation 53 2 91 73
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
Segmentation via GP Genetic Operators • Crossover
Segmentation via GP Genetic Operators • Mutation
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: • Modified Accuracy:
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 The Berkley Segmentation Dataset and Benchmarkhttp://www.cs.berkeley.edu/projects/vision/grouping/segbench/ Koza, J. R.: Genetic Programming: On the programming of computers by natural selection. MIT press, Cambridge, Mass. (1992) Tomassini M.: Evolutionary Algorithms. Swiss Scientific Computing Center, Manno. Darwin, Charles: On the origin of species by means of natural selection. London, John Murray, 1859 Montana, D.J.: Strongly typed genetic programming. Evolutionary Computation 3 (1995) 199–230 Langdon, W.B.: Size fair and homologous tree genetic programming crossovers.Genetic Programming and Evolvable Machines 1 (2000) 95–119. Luke S.: ECJ 13 - a Java based Evolutionary Computation and Genetic Programming research systemhttp://cs.gmu.edu/~eclab/projects/ecj Koza, J. R.: Genetic Programming II: Automatic Discovery of Reusable Programs. MIT press, Cambridge, Mass. (1994)