1. Übung

Moderator: Probabilistische Graphische Modelle

jlerch
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 148
Registriert: 18. Okt 2005 14:45

Re: 1. Übung

Beitrag von jlerch » 23. Okt 2009 19:20

Habt ihr schon eine Möglichkeit gefunden im segmentor die FG und BG Wahrscheinlichkeit in akzeptabler Zeit zu berechnen? Ich habs mit einer Schleife über alle Pixel und der Formel im 2. Foliensatz auf Folie 19 versucht und nach 10 Minuten abgebrochen da es nicht fertig wurde.
Der Ratio ist letztendlich der Unterschied zwischen Vordergrund und Hintergrund jedes einzelnen Pixels, d.h. ihr berechnet die Differenz der loglikelihood von pFG und pBG.
Spielt der Rückgabewert logLikelihood da noch rein oder brauchen wir den abgesehen von einer Abbruchbedigung gar nicht?

jlerch
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 148
Registriert: 18. Okt 2005 14:45

Re: 1. Übung

Beitrag von jlerch » 23. Okt 2009 19:50

Ich hab irgendwas geändert das es nun schneller geht. Kann nicht wirklich sagen was ;)
Zumindest läuft es nun durch. Das Ergebnis sieht allerdings bei weitem nicht so gut aus wie im Übungszettel.

Was ich bei der log likelihood ratio visualisieren soll versteh ich nicht. Was ist denn die logLikelihood von pFG bzw. pBG?

tovar
Neuling
Neuling
Beiträge: 1
Registriert: 24. Okt 2009 00:37

Re: 1. Übung

Beitrag von tovar » 24. Okt 2009 00:41

Ich habe ein paar Probleme mit dem Anfang... ich habe noch nie Matlab benutzt, aber das ist jetzt nicht mehr das größte Problem.
Ich weiss nicht, wie ich das allererste Implementieren muss, also das p(j). Ich sehe im Skript keine geschlossene Formel für p(j), oder wie das "pi" definiert ist.
Was ist konkret in estGaussMixEM zu implementieren, die initialisierung der arrays und die gesamte schleife inkl. abbruchbedingung, oder nur ein durchlauf? Ich finde die Aufgabenstellung zu allgemein formuliert. :(

Sandra
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 4. Mär 2005 19:47
Kontaktdaten:

Re: 1. Übung

Beitrag von Sandra » 24. Okt 2009 08:30

.joe hat geschrieben:Habt ihr schon eine Möglichkeit gefunden im segmentor die FG und BG Wahrscheinlichkeit in akzeptabler Zeit zu berechnen? Ich habs mit einer Schleife über alle Pixel und der Formel im 2. Foliensatz auf Folie 19 versucht und nach 10 Minuten abgebrochen da es nicht fertig wurde.
Nein das sollte dann keine 10 Minuten mehr dauern. Du wendest den EM Algorithmus auf den Trainingspunkte an und dann erhaeltst du ja die Kovarianzmatrizen und die Mittelwerte zurueck und mit diesen Parametern schaetzt du dann fuer jeden Punkt die Vordergrund- und Hintergrundwahrscheinlichkeiten.
.joe hat geschrieben:Spielt der Rückgabewert logLikelihood da noch rein oder brauchen wir den abgesehen von einer Abbruchbedigung gar nicht?
Der Rueckgabewert wird dann nicht mehr benoetigt. Ist ja auch nur eine Zahl und kein Vektor.

Sandra
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 4. Mär 2005 19:47
Kontaktdaten:

Re: 1. Übung

Beitrag von Sandra » 24. Okt 2009 08:36

.joe hat geschrieben:Ich hab irgendwas geändert das es nun schneller geht. Kann nicht wirklich sagen was ;)
Zumindest läuft es nun durch. Das Ergebnis sieht allerdings bei weitem nicht so gut aus wie im Übungszettel.
Es kommt auch ein bisschen auf die Bilder an, die ihr verwendet und natuerlich wo ihr hinklickt. Die besten Ergebnisse habe ich bei der Person.
.joe hat geschrieben:Was ich bei der log likelihood ratio visualisieren soll versteh ich nicht. Was ist denn die logLikelihood von pFG bzw. pBG?
Wenn du die likelihood deiner Pixeln hast, die ja in pFG und pBG abgespeichert sind, dann weisst du auch was die log-likelihood ist :wink:

Sandra
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 4. Mär 2005 19:47
Kontaktdaten:

Re: 1. Übung

Beitrag von Sandra » 24. Okt 2009 09:00

tovar hat geschrieben: Ich weiss nicht, wie ich das allererste Implementieren muss, also das p(j). Ich sehe im Skript keine geschlossene Formel für p(j), oder wie das "pi" definiert ist.
Das meiste wurde eigentlich schon weiter oben diskutiert. p(x|theta_j) ist auf Folie 19 definiert. Das ist die Gaussverteilung fuer mehrdimensionale Zufallsvariablen. Daher auch der Name Gaussian Mixture Models. Mit dieser Formel weist du jeden Punkt einem Mixture zu anhand der aktuellen Parameter, die sich aber permanent aendern in den ersten Iterationen. Den eigentlichen Algorithmus findest du dann auf Folie 25 und dort ist auch pi definiert.
tovar hat geschrieben:Was ist konkret in estGaussMixEM zu implementieren, die initialisierung der arrays und die gesamte schleife inkl. abbruchbedingung, oder nur ein durchlauf? Ich finde die Aufgabenstellung zu allgemein formuliert. :(
Wenn du in den Code reinschaust, dann siehst du dass von estGaussMixEM die Kovarianzmatrizen, die Mittelwerte und die Gewichte fuer den Vordergrund und den Hintergrund erwartet werden. Mit diesen Parametern wird dann spaeter auf den Testpunkten jeder einzelne Pixel klassifiziert. Wenn du also nur die Initialisierung der Arrays oder die Ergebnisse nach einem Durchlauf zurueck gibst, dann wird deine Segmentierung fehl schlagen, weil die Werte eher zufaelligen Charakter haben.

jlerch
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 148
Registriert: 18. Okt 2005 14:45

Re: 1. Übung

Beitrag von jlerch » 24. Okt 2009 09:06

Was ist denn die likelihood der Pixel? Ich hab dafür die sum(p(i|j) * p(j)) (sum über alle j = 1:M) verwendet.

Ich hab bei der Person gerade so gute Ergebnisse, dass man in der Klassifizierung erahnen kann das eine Person auf dem Bild ist. Beim Mond haut das zu 100% hin. Was mir aufgefallen ist, es macht für meine Berechnung kaum einen Unterschied ob ich 10 oder 100 Iterationen ansetze und ob ich 3 Mixtures oder 10 nehme. Die errechnete log-likelihood pendelt ebenfalls permanent bei 480 herum. Ich geh davon aus, dass ich dem zu folge einen Rechenfehler drin habe.

Sandra
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 4. Mär 2005 19:47
Kontaktdaten:

Re: 1. Übung

Beitrag von Sandra » 24. Okt 2009 19:24

.joe hat geschrieben:Was ist denn die likelihood der Pixel? Ich hab dafür die sum(p(i|j) * p(j)) (sum über alle j = 1:M) verwendet.
Wenn das die Formel von slide 19 ist: Ja.
.joe hat geschrieben:Ich hab bei der Person gerade so gute Ergebnisse, dass man in der Klassifizierung erahnen kann das eine Person auf dem Bild ist. Beim Mond haut das zu 100% hin. Was mir aufgefallen ist, es macht für meine Berechnung kaum einen Unterschied ob ich 10 oder 100 Iterationen ansetze und ob ich 3 Mixtures oder 10 nehme. Die errechnete log-likelihood pendelt ebenfalls permanent bei 480 herum. Ich geh davon aus, dass ich dem zu folge einen Rechenfehler drin habe.
Das wuerde ich auch vermuten, weil das Personenbild sehr gut funktioniert und das Mondbild mit der geforderten Implementierung gar nicht laeuft. Warum das so ist und was man dagegen tun kann, soll Gegenstand der naechsten Uebung sein :-)

xAx
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 157
Registriert: 6. Mär 2008 17:20

Re: 1. Übung

Beitrag von xAx » 24. Okt 2009 20:34

der mond klappt imo nicht, weil der hintergrund keine varianz hat. wenn man es trotzdem testen will, kann man ja ein bisschen vom mond mit in den hintergrund anklicken :D
frage: habe ich die chance auf einen bonus, wenn ich mit k-means initialisiere und sage, dass man die maximale anzahl an iterationen vom EM auf 1 setzen soll, sodass nur die k-means werte verwendet werden?
Nichts ist wie es scheint!
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Zuletzt geändert von xAx am 14. Mär 2009 16:17, insgesamt 99-mal geändert.

Sandra
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 4. Mär 2005 19:47
Kontaktdaten:

Re: 1. Übung

Beitrag von Sandra » 24. Okt 2009 21:30

xAx hat geschrieben:der mond klappt imo nicht, weil der hintergrund keine varianz hat. wenn man es trotzdem testen will, kann man ja ein bisschen vom mond mit in den hintergrund anklicken :D
Immer diese super-schlauen Studenten :D
xAx hat geschrieben:frage: habe ich die chance auf einen bonus, wenn ich mit k-means initialisiere und sage, dass man die maximale anzahl an iterationen vom EM auf 1 setzen soll, sodass nur die k-means werte verwendet werden?
Je nachdem ob du es selbst programmiert hast oder die vorimplementierte Version von Matlab nimmst, gibt es dann mehr oder weniger Bonuspunkte ;-) Und es ist sicherlich auch vorteilhaft, wenn du es in eine eigene Datei schreibst, dann kannst du es direkt fuer die naechste Uebung verwenden und k-means mit GMM vergleichen.

jlerch
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 148
Registriert: 18. Okt 2005 14:45

Re: 1. Übung

Beitrag von jlerch » 25. Okt 2009 09:36

Sandra hat geschrieben:Das wuerde ich auch vermuten, weil das Personenbild sehr gut funktioniert und das Mondbild mit der geforderten Implementierung gar nicht laeuft. Warum das so ist und was man dagegen tun kann, soll Gegenstand der naechsten Uebung sein :-)
Hi,
danke für den Tipp. Dadurch bin ich darauf gekommen, dass meine Kovarianzmatrix wohl falsch ist und so war es auch. Nun geht das Mondbild bei mir auch nicht mehr ;) Obwohl ich so gern durch 0 teile.

Benutzeravatar
JanEisklar
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 18. Okt 2007 13:29
Kontaktdaten:

Re: 1. Übung

Beitrag von JanEisklar » 25. Okt 2009 13:59

Hi,

vielleicht könnte mir jemand mal auf die Sprünge helfen wie pFG und pBG zu berechnen ist.

Weiter oben hatte jemand geschrieben, dass er \(p(x|\Theta) = \displaystyle\sum_{j=1}^{M}\left[p(x|\Theta_j) \cdot{} p(j)\right]\) verwendet hat(Skript S.19 erste Formel). So hatte ich das auch vor nur wird \(p(x|\Theta_j)\) ja nicht von der Funktion estGaussMixEm zurückgegeben und müsste jetzt wieder komplett neu ausgerechnet werden.

Dürfen wir das als Rückgabewert noch mit einbauen? Alternativ könnte ich auch meine E-Step Funktion noch einmal aufrufen, aber das ist irgendwie auch etwas seltsam.

Vielleicht habe ich ja auch etwas komplett falsch verstanden und versuche hier etwas sehr merkwüdiges..wäre schön wenn mir jemand etwas dazu sagen könnte.

Sandra
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 4. Mär 2005 19:47
Kontaktdaten:

Re: 1. Übung

Beitrag von Sandra » 25. Okt 2009 14:20

JanEisklar hat geschrieben: Weiter oben hatte jemand geschrieben, dass er \(p(x|\Theta) = \displaystyle\sum_{j=1}^{M}\left[p(x|\Theta_j) \cdot{} p(j)\right]\) verwendet hat(Skript S.19 erste Formel). So hatte ich das auch vor nur wird \(p(x|\Theta_j)\) ja nicht von der Funktion estGaussMixEm zurückgegeben und müsste jetzt wieder komplett neu ausgerechnet werden.

Dürfen wir das als Rückgabewert noch mit einbauen? Alternativ könnte ich auch meine E-Step Funktion noch einmal aufrufen, aber das ist irgendwie auch etwas seltsam.
Ich habe da auch noch mal eine eigene Funktion dafuer geschrieben, weil ich es einfacher fand. Aber man kann vermutlich auch die E-Funktion aus dem EM Algorithmus so anpassen, dass es fuer beides funktioniert.

Xepha
Neuling
Neuling
Beiträge: 5
Registriert: 9. Feb 2008 11:50

Re: 1. Übung

Beitrag von Xepha » 25. Okt 2009 21:00

Hallo,

ist schon relativ spät aber wir haben ein Problem bei dem wir nicht auf die Ursache kommen.

Bei der Ausführung des EM-Algorithmus verschieben sich die Gewichtungen derart, dass manche Komponenten eine Gewichtung von 0 haben. Dadurch nehmen die Kovarianzmatrizen dieser Komponenten sehr kleine Werte an während die Kovarianzmatrizen der Komponenten mit einer größeren Gewichtung sehr groß werden. Dadurch bricht unser Algorithmus immer mit einem Fehler ab.

Welcher Rechenschritt könnte zu solch abgedrehten Werten führen? - Wir haben alle Rechenschritte direkt mit den Formeln aus den Folien verglichen und kamen auf keinen Fehler.

Sandra
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 4. Mär 2005 19:47
Kontaktdaten:

Re: 1. Übung

Beitrag von Sandra » 25. Okt 2009 22:54

Xepha hat geschrieben:Hallo,

ist schon relativ spät aber wir haben ein Problem bei dem wir nicht auf die Ursache kommen.

Bei der Ausführung des EM-Algorithmus verschieben sich die Gewichtungen derart, dass manche Komponenten eine Gewichtung von 0 haben. Dadurch nehmen die Kovarianzmatrizen dieser Komponenten sehr kleine Werte an während die Kovarianzmatrizen der Komponenten mit einer größeren Gewichtung sehr groß werden. Dadurch bricht unser Algorithmus immer mit einem Fehler ab.

Welcher Rechenschritt könnte zu solch abgedrehten Werten führen? - Wir haben alle Rechenschritte direkt mit den Formeln aus den Folien verglichen und kamen auf keinen Fehler.
Ist euer Wahrscheinlichkeitsvektor auch ein Wahrscheinlichkeitsvektor, d.h. summiert sich jede Zeile zu 1?

Antworten

Zurück zu „Probabilistische Graphische Modelle“