Segmentation Segmentation via via Genetic Programming Genetic Programming
Jan 21, 2016
SegmentationSegmentationviavia
Genetic ProgrammingGenetic Programming
SegmentationSegmentation
Splitting an image into
segmentssegments
Hard problem
Conceptually ill-definedill-defined
SegmentationSegmentation
SegmentationSegmentation
Which segmentation is the correct Which segmentation is the correct one?one?
SegmentationSegmentation
Which segmentation is the correct Which segmentation is the correct one?one?
SegmentationSegmentation
Which segmentation is the correct Which segmentation is the correct one?one?
SegmentationSegmentation
Tagging function:
Deciding function:
Defining the problemDefining the problem
nsegmentsegmentsegmentRRyxseg ,,,:, 21
falsetrueRRyxseg ,:,
SegmentationSegmentation
Berkley’s segmentation dataset
and benchmark:
• Images + Human made segmentation
maps
• Benchmark for segmentation
algorithms
The DatasetThe Dataset
Genetic ProgrammingGenetic Programming
Bio-InspiredBio-Inspired Artificial
Intelligence method
Inspired by Darwin’s evolutionary
principles
What is Genetic Programming?What is Genetic Programming?
Genetic ProgrammingGenetic Programming
VarietyVariety of species individuals
within the population
CompetitionCompetition for limited resources
OverproductionOverproduction of offspring
generation
Survival of the fittestSurvival of the fittestOrigin of Species, 1859
Darwin’s principlesDarwin’s principles
Genetic ProgrammingGenetic Programming
The computational modelThe computational model
GGnn
55
44
12
31
95
32
87
12
0
65
53
2
91
73
+
GGn+n+
11
=
crossover
mutation
fitness
Segmentation via GPSegmentation via GP
Individuals are represented as
LISP-like functions
X2 (* x x)
2x-1 (- (* (+ 1 1) x) 1)
Individual RepresentationIndividual Representation
Segmentation via GPSegmentation via GP
Equivalent to tree representation
Individual RepresentationIndividual Representation
*
x x
-
*
x +
1 1
1
Segmentation via GPSegmentation via GP
Crossover
Genetic OperatorsGenetic Operators
*
x
x
-
*
x
+
1 1
1
*
x x
-
*
x +
1 1
1
Segmentation via GPSegmentation via GP
Mutation
Genetic OperatorsGenetic Operators
-
*
x +
1 1
1
-
*
x *
- x
1
1 1
Segmentation via GPSegmentation via GP
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), …
Building the treesBuilding the trees
Segmentation via GPSegmentation via GP
An example: Gradient Magnitude
(sqrt
(+
(* (conv image gradx)
(conv image gradx))
(* (conv image grady)
(conv image grady))))
Building the treesBuilding the trees
Segmentation via GPSegmentation via GP
Accuracy:
Modified Accuracy:
Fitness measureFitness measure
segmapresult
segmapresultacc
segmapresult
segmapresultacc
1
1
Segmentation via GPSegmentation via GP
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)
ThresholdThreshold
Segmentation via GPSegmentation via GP
Berkley’s benchmark: split the threshold
range into N equalequal parts, threshold and
keep best.
My method: split the threshold range into
N unequalunequal parts, by equal increase in
reported points, proportional to number
of points in the human made
segmentation map.
ThresholdThreshold
Segmentation via GPSegmentation via GP
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 sessionsSean Luke’s ECJ13 was used for running GP sessions
Miscellaneous Evolutionary Miscellaneous Evolutionary ParametersParameters
ResultsResults
A typical GP sessionA typical GP session
ResultsResults
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
A typical GP sessionA typical GP session
ResultsResults
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)))))
Best IndividualBest Individual
ResultsResults
Segmentation function (- (- (conv (* (conv image gradxgradx) (conv image
gradxgradx)) (- (- (kernel 5.381114 -8.362269 8.888325
1.1866289 -6.4069843 -8.251046 -9.389916 6.183886 -
7.817788) gradygrady) (- (kernel -2.334486 -4.6182337 -
9.115009 8.010966 -3.0507333 3.22619 2.068446 -
2.932576 -6.243905) 0.0))) (conv (* (conv image
gradxgradx) (conv image gradxgradx)) (- (- (kernel 2.4412537
-8.362269 8.888325 1.1866289 -6.4069843 -8.251046 -
9.389916 6.183886 -7.817788) gradygrady) (- (kernel
9.936699 -4.6182337 -9.115009 8.010966 -3.0507333
3.22619 2.068446 -2.932576 -6.243905) 0.0)))) (- (-
(- (conv image gradygrady) (* 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)))))
Best IndividualBest Individual
ResultsResults
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)))))
Best IndividualBest Individual
ResultsResults
Segmentation function (- (- (conv (* (conv image gradx) (conv image (* (conv image gradx) (conv image
gradx))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 (* (conv image
gradx) (conv image gradx))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)))))
Best IndividualBest Individual
ResultsResults
Accuracy = 0.307 (GM accuracy = 0.280)
Best IndividualBest Individual
ResultsResults
Accuracy = 0.172 (GM accuracy = 0.193)
Best IndividualBest Individual
ResultsResults
Accuracy = 0.262
)GM accuracy = 0.245(
Best IndividualBest Individual
ResultsResults
Accuracy = 0.126
)GM accuracy = 0.119(
Best IndividualBest Individual
SummarySummary
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
DiscussionDiscussion
SummarySummary
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
Future WorkFuture Work
ReferencesReferences1. 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)