Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of 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)