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.
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 - β 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, α 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.
Odpowiedzi:
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:
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) α
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.
źródło