6. Übung Image de-noising

Moderator: Probabilistische Graphische Modelle

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

6. Übung Image de-noising

Beitrag von jlerch » 25. Nov 2009 11:42

Hi,

sehe ich das richtig, dass wir in den Folien zur aktuellen Übung nicht viel finden und uns wohl oder übel an das Buch von Bishop halten müssen? Das benötigte Kapitel ist praktischerweise als Vorschau verfügbar: http://www.springer.com/cda/content/doc ... p134256227
Auf Seite 389 finden sich die Formeln 8.42 und 8.43 die wir wenn ich es richtig verstanden habe verwenden müssen um die Wahrscheinlichkeit des Modells zu bestimmen. Da habe ich ein Problem, denn die Summe über alle i für x(i)*y(i) wird bei i = 500*500 bereits groß genug, dass der Exponent von -E(x,y) nicht mehr darstellbar ist und ich als Wahrscheinlichkeit immer nur ein nichts sagendes "Inf" erhalte.

Was hab ich übersehen?

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

Re: 6. Übung Image de-noising

Beitrag von JanEisklar » 25. Nov 2009 15:03

Hm, also bei mir kommt bei einem 500x500 Bild z.B. folgender Wert heraus: -1.3825e+06

Ob ich nun alles richtig gemacht habe kann ich dir nicht garantieren, aber das denoising funktioniert zumindestens schon einmal.
Als Parameter habe ich die aus dem Buch verwendet. also \(h=0, \eta=2.1, \beta=1\)

Ich habe momentan jedoch noch Probleme damit ein 500x500 Bild in einer hinnehmbaren Zeit zu entrauschen, weshalb ich keine Aussage treffen kann ob der Wert nicht während der Ausführung des Algorithmus' \(\infty\) wird. Bei kleineren Bildern ist dies jedoch bei mir nicht der Fall.

Sandra meinte wir könnten zur Not auch nur die Energie der Punkte der Nachbarschaft berechnen. Damit würden auch deine Werte wieder um einiges kleiner werden, allerdings würde ich erst nochmal schauen ob bei deiner Berechnung alles stimmt.

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

Re: 6. Übung Image de-noising

Beitrag von jlerch » 25. Nov 2009 19:32

Hi,

die Berechnung stimmt denke ich. Wie kommst du auf einen sehr kleinen Wert?
Ich habs auch mal im Kopf überschlagen... x(i)*y(i) ist im initialen Fall immer gleich 1 und da die Summe über alle i läuft ist das Ergebnis der hinteren Summe i und i entspricht 500*500 Pixeln. Das bekommt nun noch einen Faktor und ein negatives Vorzeichen, da bei p(x,y) im Exponent jedoch ein negatives Vorzeichen steht hebt sich das wieder auf und somit müsste das Ergebnis sehr groß werden. Wieso wird es bei dir sehr klein?


Als Performanceverbesserung habe ich mir bereits etwas ausgedacht. Ich speicher die Produkte der Nachbarschaftsbeziehungen in einer Matrix. Ändere ich nun testweise x(i) passe ich alle Einträge der Matrix an, die von x(i) abhängen. So muss ich nicht jedesmal alles neu berechnen.

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

Re: 6. Übung Image de-noising

Beitrag von JanEisklar » 25. Nov 2009 19:56

.joe hat geschrieben:Hi,

die Berechnung stimmt denke ich. Wie kommst du auf einen sehr kleinen Wert?
Ich habs auch mal im Kopf überschlagen... x(i)*y(i) ist im initialen Fall immer gleich 1 und da die Summe über alle i läuft ist das Ergebnis der hinteren Summe i und i entspricht 500*500 Pixeln. Das bekommt nun noch einen Faktor und ein negatives Vorzeichen, da bei p(x,y) im Exponent jedoch ein negatives Vorzeichen steht hebt sich das wieder auf und somit müsste das Ergebnis sehr groß werden. Wieso wird es bei dir sehr klein?
Lies das im Buch nochmal nach..das p(x,y) verwende ich überhaupt nicht, sondern lediglich die Energie. Ich weiss, wenn man sich es überlegt ist die Wahrscheinlichkeit irgendwie logischer, aber so steht es nunmal nicht in dem Buch. Zudem wäre es dann nämlich auch sehr komisch die kleinere der beiden Wahrscheinlichkeiten zu wählen..
.joe hat geschrieben: Als Performanceverbesserung habe ich mir bereits etwas ausgedacht. Ich speicher die Produkte der Nachbarschaftsbeziehungen in einer Matrix. Ändere ich nun testweise x(i) passe ich alle Einträge der Matrix an, die von x(i) abhängen. So muss ich nicht jedesmal alles neu berechnen.
Das habe ich bereits getan, aber für ein 198x198 Bild benötige ich immernoch 42s. Für 500x500 hatte ich bis jetzt noch nicht genug Geduld :lol:

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

Re: 6. Übung Image de-noising

Beitrag von jlerch » 25. Nov 2009 20:28

Hmm stimmt. E zu verwenden müsste ja reichen, da in p(x,y) sowieso nur Konstanten reinkommen.

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

Re: 6. Übung Image de-noising

Beitrag von xAx » 25. Nov 2009 20:38

die ausführungszeit ist bei mir auch noch ein problem: 200x200 -> 16s, 500x500 -> 11,5min. wenn man nicht den anspruch hat, es für beliebige betas durchführen zu können (sondern nur für beta=1), kann man die nachbarschaftsrechnung (die Summe aus 8.42, die mit beta multipliziert wird) abkürzen: wenn man gerade x(i,j) überprüft (x ist bei mir ne 500x500 matrix), muss man bei der "beta-summe" (8.42) nur die produkte aufaddieren, die ein x(i,j) enthalten (also höchstens 4 summanden, da höchstens 4 nachbarn). alle anderen summanden sind bei beiden möglichen Energiewerten konstant gleich und tragen so nicht zum vergleich bei.
hm, hab grad meinen code n bisl gecleant, kommentare eingefügt, usw. jetzt rennt er bei 500x500 in 50s durch :?
Nichts ist wie es scheint!
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Zuletzt geändert von xAx am 14. Mär 2009 16:17, insgesamt 99-mal geändert.

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

Re: 6. Übung Image de-noising

Beitrag von jlerch » 25. Nov 2009 21:14

Bei mir läufts nun auch. Aber sieht eher nach den 11 Minuten aus als nach den 60 Sekunden ;)

Vielleicht sollte ich auch mal bissl kommentieren, wenns das schneller macht :lol:

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

Re: 6. Übung Image de-noising

Beitrag von xAx » 25. Nov 2009 22:35

mal was ganz anderes: was für eine standardabweichung soll man denn bei 4. - 6. berechnen? die einzigen zahlen, die man hat, die irgendwie von einander abweichen, sind die pixel-werte. ich könnte mir vorstellen, dass die gesuchte standardabweichung bei x_i aus {0, 0.00000000000001} sehr klein wird, und bei x_i aus {-10^20, +10^20} "sehr" groß wird. alles also eine frage der modellierung, denn es geht ja nur um pixel "an" oder pixel "aus" :) {-1, +1} als wertebereich ist ebenso willkürlich.
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: 6. Übung Image de-noising

Beitrag von Sandra » 26. Nov 2009 17:13

Ich hatte Accuracy und Std gemeint. Die accuracy koennt ihr ja direkt aus den klassifizierten Pixeln berechnen, da ihr ja das originalbild habt. Also einfach vergleichen wieviele von den noise pixeln dann tatsaechlich am Ende richtig klassifiziert werden. Und std bekommt ihr wenn ihr das Bild unterschiedlich mit noise initialisiert.

Stefano
Windoof-User
Windoof-User
Beiträge: 25
Registriert: 26. Aug 2008 10:46

Re: 6. Übung Image de-noising

Beitrag von Stefano » 29. Nov 2009 12:06

Hallo zusammen,

die hier genannten Laufzeiten unterscheiden sich stark von den meinen:

Der unoptimierte Algorithmus benötigt bei mir wesentlich länger als 11 Minuten. Ich habe ihn zwar nicht fertig rechnen lassen, doch ich vermute, dass er bis zu einer Stunde gebraucht hätte. Um den Algorithmus zu beschleunigen, habe ich einen ähnlichen Ansatz wie xAx verwendet, allerdings ohne Beschränkung auf b=1. Damit komme ich auf eine Laufzeit von unter einer Sekunde für ein 500x500-Bild. Um sicher zu gehen, dass die Optimierung korrekt ist (neben den formalen Grundlagen), habe ich den unoptimierten Algorithmus beibehalten und mit dem optimierten in verschiedenen Szenarien abgeglichen, wobei sich die Genauigkeiten immer glichen.

Wenn ich innerhalb der Optimierung die n-Summe nicht aktualisiere (sondern nur die b-Summe), komme ich sogar auf wesentlich bessere Ergebnisse (vor allem bei stark verrauschten Bildern) mit bis zu 99,5% Genauigkeit.


Gruß
Stefano

Antworten

Zurück zu „Probabilistische Graphische Modelle“