Szkolenie podstawowego pola losowego Markowa do klasyfikowania pikseli na obrazie

16

Próbuję nauczyć się korzystać z losowych pól Markowa do segmentowania regionów na obrazie. Nie rozumiem niektórych parametrów w MRF ani tego, dlaczego maksymalizacja oczekiwań, którą wykonuję, czasami nie jest zbieżna z rozwiązaniem.

Zaczynając od twierdzenia Bayesa, mam , gdzie y jest wartością skali szarości piksela, a x jest etykietą klasy. Wybrałem użycie rozkładu Gaussa dla p ( y | x ) , podczas gdy p ( x ) jest modelowane przy użyciu MRF.p(x|y)=p(y|x)p(x)/p(y)yxp(y|x)p(x)

Używam funkcji potencjalnej dla MRF, która ma zarówno potencjał klikowy pary, jak i potencjalną wartość dla etykiety klasy klasyfikowanego piksela. Potencjalna wartość pojedynczego piksela to pewna stała która zależy od etykiety klasy x . Funkcje potencjału parami są oceniane dla 4 połączonych sąsiadów i zwracają dodatnią β, jeśli sąsiad ma taką samą etykietę klasy jak ten piksel i - βαxββ jeśli etykiety różnią się.

W punkcie maksymalizacji oczekiwań, w którym muszę znaleźć wartości i β, które maksymalizują oczekiwaną wartość logarytmu, zastosowałem numeryczną metodę optymalizacji (wypróbowany gradient sprzężony, BFGS, metoda Powella), ale zawsze okaże się, że wartość β stałaby się ujemna, αα(x)ββα dramatycznie wzrosłyby, a iteracja lub dwa później cały obraz zostałby przypisany tylko do jednej etykiety (tło: przypisywanie etykiet klas, biorąc pod uwagę parametry MRF, zostało wykonane przy użyciu ICM). Gdybym usunął alf, tzn. Używając tylko parowych potencjałów kliki, maksymalizacja oczekiwań działałaby dobrze.

Proszę wyjaśnić, jaki jest cel alf dla każdej klasy? Myślałem, że będą one powiązane z ilością tej klasy, która jest obecna na obrazie, ale wydaje się, że nie. Kiedy dostałem MRF działający tylko z parami potencjałów, porównałem go z prostym modelem mieszanki Gaussa i stwierdziłem, że dają one prawie identyczne wyniki. Spodziewałem się, że pary potencjałów nieco wygładzą klasy, ale tak się nie stało. Proszę doradzić, gdzie popełniłem błąd.

wióry
źródło
Ciekawe, dlaczego wybrałeś model wykresu niekierowanego?
W mojej aplikacji wartość liczby pikseli w skali szarości i sąsiednich pikseli jest bardziej prawdopodobna z tą samą etykietą klasy, ale nie ma żadnego powodu, aby używać innej wersji beta dla każdej kliki parowej. Mam nadzieję, że dobrze zrozumiałem twoje pytanie.
chippies
1
Wydaje się, że stałe alfy służą do modelowania wcześniejszej dystrybucji na etykietach. Jak można przypuszczać, prawidłowe alfy prawdopodobnie nałożą te etykiety, które występują częściej w zestawie szkoleniowym. Jeśli Twój model działa bez nich dobrze, dlaczego po prostu nie upuścisz ich z modelu? Twój opis nie jest wystarczająco wyczerpujący, aby odpowiedzieć, dlaczego alfy rosną i psują wszystko, ale prawdopodobnie potrzebujesz regulacji. Spróbuj dodać gaussian przed alfą do modelu, tzn. Dodaj do log-tylnego, prawdopodobnie zapobiegnie to nadmiernemu dopasowaniu. λα2
Roman Shapovalov
Co jest niejasne z twojego pytania: 1) Czy twoje prawdopodobieństwo p (y | x) rozkłada się na piksele, więc dla każdego używasz gaussa 1D? 2) Jaki jest dokładnie cel, który optymalizujesz w EM (wspomniałeś o prawdopodobieństwie dziennika, ale używasz MRF do modelowania wcześniej)? 3) Czy definiujesz potencjały w domenie logarytmicznej? Czy zwiększenie beta oznacza zwiększenie P (x) lub energii, która jest -log P (x) lub energii ujemnej? 4) Czy zdołasz faktycznie zmniejszyć cel EM, ustawiając takie zdegenerowane alfy, czy też optymalizacja kończy się niepowodzeniem?
Roman Shapovalov
Co z propagowaniem przekonań loopy?
wolfsatthedoor

Odpowiedzi:

1

Diagnoza

To brzmi jak problem z inicjalizacją.

Używany model MRF jest niewypukły i jako taki ma wiele lokalnych minimów. O ile mi wiadomo, wszystkie istniejące techniki optymalizacji są wrażliwe na inicjalizację, co oznacza, że ​​na jakość ostatecznego rozwiązania duży wpływ ma to, od czego zaczynasz procedurę optymalizacji.

Sugerowane rozwiązanie

Sugeruję wypróbowanie różnych strategii w celu zainicjowania modelu. Na przykład jedna strategia, która przychodzi mi na myśl, jest następująca:

  1. najpierw wytrenuj model dla i na razie zignoruj ​​poprzedni termin; to jest poprawka p ( x ), aby była jednorodna, na przykład przez ustawienie α = β = 0 i utrzymanie ich na stałym poziomie . Jeśli chcesz być bardziej wyrafinowany, możesz ustalić , że p ( x ) jest rozkładem mutomalnym, który reprezentuje względne częstotliwości etykiet w zestawie treningowym. Możesz to zrobić, odpowiednio ustawiając wartości α .p(y|x) p(x)α=β=0 p(x)α

  2. odblokować jednostkowe i parowe terminy w modelu MRF; to znaczy, pozwól optymalizatorowi zmienić wartość i βαβ .

Sugerowana inicjalizacja w żadnym wypadku nie jest najlepszym sposobem na zainicjowanie optymalizacji, ale tylko jedną z możliwych opcji.

λα||α||2+λβ||β||2λαλβ

Sobi
źródło