Documente Academic
Documente Profesional
Documente Cultură
Introducere În Recunoaşterea Formelor: Material Disponibil La Adresa HTTP://WWW - Eed.usv - Ro/ Vatavu 1/17
Introducere În Recunoaşterea Formelor: Material Disponibil La Adresa HTTP://WWW - Eed.usv - Ro/ Vatavu 1/17
Introducere n
recunoaterea formelor
Figura 1.1. Obiectele binare reprezentnd caracterele din imaginea scanat pot fi
codificate sub o form matriceal n care valorile fiecrui element sunt date de
procentul de pixeli ai fiecrui obiect din fiecare celul a matricei. Filtrnd
procentele, obinem o reprezentare simplificat cu valori 0/1 a fiecrui obiect.
0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1
1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1
1 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1
1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1
1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1
0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1
Liter Form
a (0,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,...,0,1,1,1,1,1)
b (1,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,...,1,1,1,1,1,0)
c (0,1,1,1,1,0,1,0,0,0,0,1,1,0,0,0,0,0,...,0,1,1,1,1,0)
d (0,0,0,0,0,1,0,0,0,0,0,1,0,1,1,1,1,1,...,0,1,1,1,1,1)
Liter Form
a (20,21,470)
b (37,19,498)
c (18,18,320)
d (39,21,501)
pi pi 1 x xi 1 yi yi 1
2 2
i
i 1 i 1
public Pattern(int p)
{
features = new double[p];
}
public Pattern(Pattern x)
{
features = new double[x.Count];
for (int i = 0; i < features.Length; i++)
features[i] = x.features[i];
this.classIndex = x.classIndex;
}
10,2,5
new window,new tab,close tab,help,home
1.11,0.11,0
1.16,0.11,0
Material disponibil la adresa http://www.eed.usv.ro/~vatavu 14/17
1.41,0.16,1
1.24,0.18,1
1.62,0.26,2
1.65,0.27,2
2.27,0.58,3
2.47,0.57,3
0.6,0.03,4
0.65,0.02,4
// read n, m, p
string[] items = reader.ReadLine().Split(',');
int n = int.Parse(items[0]);
int p = int.Parse(items[1]);
int m = int.Parse(items[2]);
// read n patterns
for (int i = 0; i < n; i++)
{
items = reader.ReadLine().Split(',');
set.Add(pattern);
}
}
finally
{
if (reader != null)
Material disponibil la adresa http://www.eed.usv.ro/~vatavu 15/17
reader.Close();
}
return set;
}
// write n, m, p
writer.WriteLine("{0},{1},{2}",
set.Count, set[0].Count,
classLabels.Count);
// write m labels
for (int i = 0; i < classLabels.Count; i++)
writer.Write("{0}{1}", classLabels[i],
i == classLabels.Count - 1 ? "" : ",");
writer.WriteLine();
x i, j
Important xj i 0
n
2, 3, 5, 5, 5, 6, 6, 7, 7, 8, 9
2, 3, 5, 5, 5, 6, 6, 7, 7, 8, 9, 102
Indicatorii mprtierii
Media este un indicator al tendinei centrale pentru valorile luate de o
caracteristic, descriind la un nivel global mulimea acestora. Luat
singur ns, acest indicator nu ofer informaii complete iar, pentru a
avea o imagine corect asupra valorilor caracteristicii, informaia
furnizat de medie trebuie completat cu cea a indicatorilor
mprtierii: dispersia i abaterea standard.
Dj
1 n1
xi , j x j
n 1 i 0
2
Important
s j Dj
1 n1
xi , j x j
n 1 i0
2
Important
2, 3, 5, 5, 5, 6, 6, 7, 7, 8, 9
return dispersion;
}
...
}
Dj
1 n1
xi , j x j
n 1 i0
2
1 n1 2
xi , j n x j
n 1 i0
1 n1 2 n1
xi , j xi , j
n 1 i0 i 0
cov i , j
1 n1
xk ,i xi xk , j x j
n 1 k 0
Important
cov i ,i
1 n1
xk ,i xi xk ,i xi
n 1 k 0
1 n1
xk ,i xi
n 1 k 0
2
Di
int n = values1.Length;
double mean1 = Mean(values1);
double mean2 = Mean(values2);
double covariance = 0;
for (int i = 0; i < n; i++)
covariance += (values1[i] - mean1)*
(values2[i] - mean2);
covariance /= n - 1;
return covariance;
}
1 n1
1 n1 1 n1
n1
cov i , j xk ,i xi xk , j x j xk ,i xk , j xk ,i xk , j
n 1 k 0 n 1 k 0 n k 0 k 0
// convert to ranks
double[] xRanks = ComputeRanks(x);
double[] yRanks = ComputeRanks(y);
// compute ranks
double[] ranks = new double[n];
for (int i = 0; i < n; i++)
{
int numSmaller = 0, numTies = 0;
for(int j = 0; j < n; j++)
if (j != i)
{
if (x[j] < x[i]) numSmaller++;
else if (x[j] == x[i]) numTies++;
}
return ranks;
}
}
Unit.
Caracterist
msur Formul de calcul
ic
Lungime L pixeli n1 n1
L pi pi 1 xi xi1 2 yi yi1 2
i 1 i 1
1
A. Chris Long, Jr., James A. Landay, Lawrence A. Rowe, Joseph Michiels (2000) Visual similarity of pen
gestures. In: Proceedings of the SIGCHI conference on Human factors in computing systems (CHI '00).
ACM, New York, NY, USA, 360-367. DOI=10.1145/332040.332458
2
vezi observaia privind distribuiile normale i faptul c 99.6% dintre valorile unei
caracteristici sunt cuprinse n trei deviaii standard fa de medie.
Aspect Lung.
L W H Raza Angle1 Angle2 ABB R1 R2 R3 D1 D2 Openness
Ratio norm.
Lungimea L 1 .595 .576 .206 .144 .040 .768 .180 .553 -.050 -.154 .028 .044 .353 .053
Limea W .595 1 .005 .135 -.399 -.416 .500 -.526 .308 .214 -.092 -.018 -.017 .150 .324
nlimea H .576 .005 1 .308 .743 .602 .858 .838 .157 -.538 -.506 -.387 .148 -.411 -.406
Raza .206 .135 .308 1 .563 .629 .386 .134 .743 -.812 -.858 -.889 .460 -.140 -.728
Angle1 .144 -.399 .743 .563 1 .969 .443 .826 .235 -.878 -.637 -.639 .399 -.438 -.853
Angle2 .040 -.416 .602 .629 .969 1 .317 .708 .282 -.927 -.642 -.684 .482 -.394 -.941
ABB .768 .500 .858 .386 .443 .317 1 .443 .332 -.383 -.530 -.389 .128 -.294 -.201
Aspect
.180 -.526 .838 .134 .826 .708 .443 1 -.080 -.528 -.331 -.273 .104 -.423 -.481
Ratio
Lungimea
.553 .308 .157 .743 .235 .282 .332 -.080 1 -.405 -.440 -.366 .317 .482 -.354
norm.
R1 -.050 .214 -.538 -.812 -.878 -.927 -.383 -.528 -.405 1 .850 .867 -.570 .437 .962
R2 -.154 -.092 -.506 -.858 -.637 -.642 -.530 -.331 -.440 .850 1 .934 -.438 .467 .695
R3 .028 -.018 -.387 -.889 -.639 -.684 -.389 -.273 -.366 .867 .934 1 -.431 .543 .763
Density1 .044 -.017 .148 .460 .399 .482 .128 .104 .317 -.570 -.438 -.431 1 -.088 -.608
Density2 .353 .150 -.411 -.140 -.438 -.394 -.294 -.423 .482 .437 .467 .543 -.088 1 .343
Openness .053 .324 -.406 -.728 -.853 -.941 -.201 -.481 -.354 .962 .695 .763 -.608 .343 1
Tema de laborator
Implementai metodele de calcul a indicatorilor statistici pentru
valorile caracteristicilor unui un set de forme: media, deviaia
standard, covariana i coeficientul de corelaie Pearson r.
Figura 3.1. Gruparea gesturilor din capitolul anterior n ase regiuni distincte
n spaiul R1 x AspectRatio x Raza. Fiecare clas este conturat distinct
n spaiul formelor: formele din aceeai clas sunt apropiate n timp ce clasele
sunt deprtate ntre ele.
Distana Euclidian
Distana Euclidian reprezint exemplul cel mai cunoscut al unei
distane i, de regul, este cea mai utilizat n practic pentru
aprecierea asemnrii dintre forme. Pentru caracteristici avem
distana Euclidan definit pentru punctele a=(a0,a1) i b=(b0,b1)
din plan astfel:
d 2 (a, b) a0 b0 2 a1 b1 2
n timp ce pentru , obinem distana Euclidian n spaiul cu trei
dimensiuni:
d 2 (a, b) a0 b0 2 a1 b1 2 a2 b2 2
Figura 3.2 ilustreaz grafic distana Euclidian n cele dou spaii.
Pentru un numr de caracteristici, formula distanei Euclidiene
poate fi extins astfel nct s fie luate n considerare influenele
tuturor celor caracteristicilor.
a b
i 0
i i
2
b c
i 0
i i
2
a
i 0
i ci
2
a=(1, 0, 2, 4)
b=(3, 5, 1, 7)
atunci distana Euclidian va fi:
d2(a,b) = ((1-3)2+(0-5)2+(2-1)2+(4-7)2)1/2
= 391/2 = 6.25
Alte distane
Cu toate c distana Euclidian este cea mai utilizat n practic,
definirea unor alte modaliti pentru a aprecia apropierea dintre
puncte se poate dovedi util pentru anumite probleme.
d1(a,b) = |1-3|+|0-5|+|2-1|+|4-7|
= 11
dChebyshev(a,b) = max{|1-3|,|0-5|,|2-1|,|4-7|}
= 5
1
p1 r
d r (a, b) ai bi
r
i 0
a b a b
2
i i i i
i 0 i 0
ai bi ai bi 2 ai bi a j b j 0 2 a b a j bj
2 2
i i
i 0 i 0 i 0 j i 1 i 0 j i 1
i0 k 0 k 0,k i
d1(a,b) = |1-3|/(1+3)+|0-5|/(0+5)+|2-1|/(2+1)+|4-
7|/(4+7) = 2/4+5/5+1/3+3/11
= 2.11
d (a, b) (a b) M (a b)T
m p1, 0 m p1,1 m p1, p1 a p1 bp1
a p1 b p1
// multiply v * (a-b)T
double d = 0;
for (int i = 0; i < v.Length; i++)
d += v[i] * (a[i] - b[i]);
return d;
}
}
Matricea distanelor
Odat aleas distana, putem calcula matricea distanelor pentru
mulimea formelor de care dispunem. Aceasta este o matrice ptratic
de dimensiune , definit astfel:
0 i j
D d i , j
d f i , f j i j
unde locaia va conine valoarea distanei dintre formele i .
Din modul de definire rezult simetria matricii fa de diagonala
principal.
d f , f
1
J ( E1 , E2 )
n1 n2
i j
i 0 j 0
Tema de laborator
Implementai distana Euclidian, Manhattan i Chebyshev. Calculai
i afiai matricea distanelor.
d ( x, y ) min{d ( x, z ), d ( y, z )}
unde d este o distan. Cu alte cuvinte, distana dintre dou forme aparinnd unei
clase omogene este ntotdeauna mai mic dect distana dintre o form aparinnd
clasei respective i una din afara acesteia. n practic suntem interesai de obinerea
de clase care au proprietatea de omogenitate ntruct regiunile asociate acestora n
spaiul caracteristicilor vor fi compacte i bine separate ntre ele. Proprietatea de
omogenitate deriv din modul de alegere a caracteristicilor n conformitate cu
discuiile avute n capitolele anterioare. Extinznd noiunea la nivelul partiiei, vom
considerao partiie ca fiind omogen dac toate clasele acesteia sunt omogene.
Height
AR =
Width
2. Procentul de umplere al figruii (Fill Ratio, FR) definit ca raportul dintre aria
figurii geometrice (numrul de pixeli ai obiectului binar) i aria
dreptunghiului circumscris:
Area
FR =
Width Height
Pentru exemplul considerat vom avea urmtoarea partiionare a formelor (din Figura
4.1) n cele 3 clase:
C1 = {1,6, 8,14,15,16}
C2 = {2,4, 5, 9,11,17}
C3 = {3,7,10,12,13,18}
return partition;
}
}
return max;
}
return min;
}
...
}
Criteriul va fi ndeplinit pentru o anumit clas dac distana maxim a formelor din
clas va fi mai mic dect distanele minime dintre mulimea clasei respective i toate
celelalte clase. Implementarea privind testarea criteriului de omogeneitate este
prezentat n continuare.
Considernd distana Euclidian, obinem urmtoarele rezultate pentru cele trei clase
i obiectele geometrice prezentate n Figura 4.1:
Putem practic calcula centrul de greutate pentru orice mulime de forme ns este
important semnificaia pe care o asociem acestuia. Astfel, prezint importan
calculul centrului de greutate pentru forme aparinnd aceleiai clase ntruct putem
s asociem acestui calcul semnificaia de forma central sau reprezentativ
pentru clasa respectiv. Dac vom considera exemplul anterior al figurilor
geometrice, formele asociate celor 6 ptrate sunt:
(1.02, 1.00)
(0.86, 1.00)
(0.95, 1.00)
(0.95, 1.00)
(0.97, 1.00)
(0.95, 1.00)
g0 = ((1.02+0.86+0.95+0.95+0.97+0.95)/6,(1+1+1+1+1+1)/6)
= (0.95, 1.00)
Tabelul 4.2 prezint centrele de greutate calculate pentru cele trei clase iar Figura 4.4
ilustreaz grafic reprezentarea centrelor de greutate n spaiul caracteristicilor. Se
observ proprietatea centrelor de greutate de a reprezenta o tendin central a
formelor aparinnd fiecrei clase, dnd aparena unor forme prototip sau
reprezentative pentru fiecare clas sau, cu alte cuvinte, ce ne-am atepta s obinem
n cazul mediu n urma efecturii msurtorilor caracteristicilor asupra unui obiect
aparinnd unei anumite clase.
return g;
} ...
}
Console.WriteLine();
}
Important n 1
I (a ) = d 2 ( f i , a )
i =0
n 1
I (g ) = d 2 ( fi , g )
i =0
Wk = d (f , g )2
k
Important f Ck
m 1 m 1
W = Wk = d 2 ( f , g k )
k =0 k = 0 f Ck
Notaia W pentru ineria intraclas provine din termenul within-class iar notaia B din
between-class. ntre cele trei tipuri de inerii (total, intraclas i interclas) pentru o
anumit partiie a unei mulimi de forme exist relaia:
T = B +W
Nr. AR FR d(fi,g0)
1 1.02 1.00 sqrt((1.02-0.95)2+(1.00-1.00)2)=0.07
6 0.86 1.00 Sqrt((0.86-0.95)2+(1.00-1.00)2)=0.09
8 0.95 1.00 sqrt((0.95-0.95)2+(1.00-1.00)2)=0.00
14 0.95 1.00 sqrt((0.95-0.95)2+(1.00-1.00)2)=0.00
15 0.97 1.00 sqrt((0.97-0.95)2+(1.00-1.00)2)=0.02
16 0.95 1.00 sqrt((0.95-0.95)2+(1.00-1.00)2)=0.00
g0 0.95 1.00
W0 = d2(f1,g0)+d2(f6,g0)+d2(f8,g0)+d2(f14,g0)+d2(f15,g0)+d2(f16,g0)
= 0.072+0.092+0.002+0.002+0.022+0.002
= 0.0134
gk AR FR nk d(gk,g)
g0 0.95 1.00 6 sqrt((0.95-0.90)2+(1.00-0.76)2)=0.245
g1 1.02 0.78 6 sqrt((1.02-0.90)2+(0.78-0.76)2)=0.136
g2 0.72 0.51 6 sqrt((0.72-0.90)2+(0.51-0.76)2)=0.308
g 0.90 0.76
B
J=
W
valoare care se dorete a fi ct mai mare (urmrind maxim pentru B i minim W).
Implementrile celor trei tipuri de inerii sunt prezentate n continuare sub forma
metodelor WithinClassVariance, BetweenClassVariance i TotalVariance ale clasei
SetOfPatterns. Toate metodele primesc ca argument o metric i folosesc funcia
privat Variance care implementeaz ineria unei mulimi de forme fa de centrul ei
de greutate. Funcia WithinClassVariance ntoarce un vector de valori reale
coninnd ineriile intraclas pentru fiecare clas a partiiei mulimii de forme
considerate.
Pattern g = CenterOfGravity();
for (int i = 0; i < patterns.Count; i++)
variance += distance(patterns[i], g)*distance(patterns[i], g);
return variance;
}
return w;
}
double b = 0;
for (int i = 0; i < partition.Count; i++)
{
Pattern gi = partition[i].CenterOfGravity();
b += partition[i].Count * distance(gi, g) * distance(gi, g);
}
return b;
}
double[] w = WithinClassVariance(distance);
double W = 0;
for (int i = 0; i < w.Length; i++)
W += w[i];
return B / W;
}
...
}
Console.WriteLine(
"T = {0:.000}", set.TotalVariance(Metrics.EuclideanDistance)
);
Console.WriteLine(
"B = {0:.000}", set.BetweenClassVariance(Metrics.EuclideanDistance)
);
double[] w = set.WithinClassVariance(Metrics.EuclideanDistance);
double W = 0;
for (int i = 0; i < w.Length; i++)
{
Console.WriteLine("\tw[{0}] = {1:.000}", classLabels[i], w[i]);
W += w[i];
}
Console.WriteLine("W = {0:.000}", W);
Console.WriteLine(
"J = {0:.000}", set.JVarianceCriterion(Metrics.EuclideanDistance)
);
Obiective
{
Echivalent, scriem: x C i dac i = arg max j ( x ) . }
j =1, M
Singura problem rmas este de a identifica forma exact a fiecrei dintre cele
M funcii i ( x) asociate celor M clase pentru o anumit problem de clasificare.
O variant este de a folosi modele de funcii discriminant predefinite pentru care
determinm parametrii fiecrui modelul folosind informaia furnizat de formele
din setul de antrenare (a cror clasificare o cunoatem).
1 0 0 0
0 1 0 0
i considernd n calcul matricea identitate M = , obinem succesiv:
0 0 .. 0
0 0 .. 1
T
d 2 (g i , x ) = (g i x ) (g i x )
respectiv
T
d 2 (g i , x ) = g i g i g i x T x g i + x x T
T
Cum g i x T = x g i , obinem: d
2
(g i , x ) = g i g i T 2 g i xT + x xT
nevoie pentru clasificare de funcii care s fie evaluate la o valoare ct mai mare
cu ct distana este mai mic (forma este mai apropiat de centrul de greutate al
clasei respective).
t
Cum termenul x x are aceeai valoare pentru toate funciile discriminant,
putem renuna la el, ajungnd n final la:
1 t
i ( x) = g i g i + g i x T
2
Cele M funcii garanteaz clasificarea unei noi forme x la clasa pentru care
distana dintre form i centrul de greutate al clasei este minim.
3. Tema de laborator
3a. Implementai algoritmul CLASA pentru clasificarea unei forme noi la una din
cele M clase ale cror centre de greutate sunt calculate folosind setul de
antrenare.
Fie F o mulime de obiecte cunoscute doar prin msurtorile efectuate asupra lor i
fie E mulimea formelor aferente. Fie deasemenea o mulime de etichete
= { 1 , 2 K m } . n cadrul nvrii nesupravegheate se ncearc determinarea unei
funcii de identificare:
:F
care s asocieze fiecrui obiect din F (i corespunztor fiecrei forme din E) o eticheta
din , eticheta preciznd clasa de care aparine forma respectiv.
Iniial, se aleg aleator M forme care vor reprezenta nucleele viitoarelor clase. Restul
formelor vor fi incluse n clasa corespunztoare nucleului celui mai apropiat. Dup
ce toate formele au fost asignate cte unei clase, centrele de greutate ale claselor sunt
calculate i se determin noile nuclee ale claselor ca fiind formele cele mai apropiate
de centrele de greutate. Procedura se reia, reasignnd restului de forme o clas
aferent, pn cnd nucleele dinamice determinate n cursul a dou iteraii succesive
coincid.
procedur NUCLEE-DINAMICE(forme, n, p, m)
*) Initializare:alege nucleele celor m clase n mod aleator
*) din mulimea formelor: n acest caz, primele m forme au
*) fost alese drept nuclee
nuclee {}
pentru i 0, m-1 execut
nuclee[i] forme[i]
sf.pentru
repet
*) clasific formele n funcie de distana
*) fa de nucleul cel mai apropiat
pentru i 0, n-1 execut
minDist MAX_INT
indexClasa -1
pentru j 0, m-1 execut
d DISTANTA-EUCLIDIANA(forme[i], nuclee[j])
dac minDist > d atunci
minDist d
indexClasa j
sf.dac
sf.pentru
clasa[i] indexClasa
sf.pentru
Tema de laborator