Treinar um campo aleatório básico de Markov para classificar pixels em uma imagem


16

Estou tentando aprender como usar os campos aleatórios de Markov para segmentar regiões em uma imagem. Não entendo alguns dos parâmetros no MRF ou por que às vezes a maximização de expectativas que realizo não converge para uma solução.

A partir teorema de Bayes, eu tenho , onde é o valor de escala de cinza do pixel e é um rótulo de classe. Eu escolhi usar uma distribuição gaussiana para p ( y | x ) , enquanto p ( x ) é modelado usando o MRF.p(x|y)=p(y|x)p(x)/p(y)yxp(y|x)p(x)

Uso uma função potencial para o MRF que possui potenciais de clique em pares e um valor potencial para o rótulo de classe do pixel que está sendo classificado. O valor potencial de pixel único é uma constante α que depende do rótulo da classe x . As funções potenciais em pares são avaliadas para os vizinhos conectados em 4 e retornam positivo βse o vizinho tiver o mesmo rótulo de classe que esse pixel e β se os rótulos diferirem.

No ponto da maximização da expectativa, em que tenho que encontrar os valores de α(x) e β que maximizam o valor esperado da probabilidade logarítmica, usei um método de otimização numérica (gradiente conjugado tentado, BFGS, método de Powell), mas sempre descubra que o valor de β se tornaria negativo, os α aumentariam drasticamente e uma iteração ou duas depois a imagem inteira seria atribuída a apenas um rótulo (background: atribuir rótulos de classe aos parâmetros MRF foi feito usando ICM). Se eu removesse os alfas, ou seja, apenas usando potenciais de clique em pares, a maximização da expectativa funcionaria perfeitamente.

Por favor, explique qual é o objetivo dos alfas para cada classe? Eu pensei que eles estariam relacionados à quantidade dessa classe que está presente na imagem, mas não aparece. Depois que o MRF funcionou apenas com potenciais emparelhados, comparei-o com um Modelo Gaussiano de Mistura direto e descobri que eles produziam resultados quase idênticos. Eu esperava que o potencial dos pares suavizasse um pouco as aulas, mas isso não aconteceu. Por favor, informe onde eu errei.


Apenas curioso, por que você escolheu o modelo de gráfico não direcionado?

No meu aplicativo, é mais provável que o valor em escala de cinza das contagens de pixels e dos pixels vizinhos tenha o mesmo rótulo de classe, mas não há motivo para usar uma versão beta diferente para cada clique em pares. Espero ter entendido sua pergunta corretamente.
chippies

1
Alfas constantes parecem servir ao propósito de modelar a distribuição anterior nos rótulos. Como você supunha, os alfas corretos provavelmente superporiam os rótulos encontrados com mais frequência no conjunto de treinamento. Se o seu modelo funciona bem sem eles, por que você não os solta? Sua descrição não é detalhada o suficiente para responder por que os alfas cresceriam e estragariam tudo, mas você provavelmente precisará de regularização. Tente adicionar o antes Gaussian no alfa para o modelo, ou seja, adicionar para o log-posterior, isto provavelmente impediria overfitting. λα2
Roman Shapovalov

O que não está claro em sua pergunta: 1) Sua probabilidade p (y | x) se decompõe sobre pixels, então você usa um gaussiano 1D para cada um? 2) Qual é o objetivo exato que você otimiza no EM (você mencionou a probabilidade de log, mas usa o MRF para modelagem anterior)? 3) Você define potenciais no domínio logarítmico? Aumentar beta significa aumentar P (x), ou energia, que é -log P (x), ou energia negativa? 4) Você consegue realmente diminuir o objetivo do EM definindo esses alfas degenerados ou a otimização falha?
Roman Shapovalov

E a propagação de crenças malucas?
wolfsatthedoor

Respostas:


1

Diagnóstico

Isso soa como um problema de inicialização.

O modelo MRF que você está usando não é convexo e, como tal, possui vários mínimos locais. Até onde eu sei, todas as técnicas de otimização existentes são sensíveis à inicialização, o que significa que a qualidade da solução final é altamente afetada por onde você inicia o procedimento de otimização.

Solução sugerida

Sugiro tentar estratégias diferentes para inicializar o modelo. Por exemplo, uma estratégia que me vem à mente é a seguinte:

  1. treine um modelo para primeiro e ignore o termo anterior por enquanto; que é a correção p ( x ) para ser uniforme, por exemplo, definindo α = β = 0 e mantendo-os fixos . Se você deseja ser mais sofisticado, pode corrigir p ( x ) como uma distribuição mutinomimal que representa as frequências relativas de rótulos no conjunto de treinamento. Você pode fazer isso definindo os valores α adequadamente.p(y|x) p(x)α=β=0 0 p(x)α

  2. descongelar os termos unários e aos pares no modelo MRF; ou seja, deixe seu otimizador alterar o valor de e β .αβ

A inicialização sugerida é, de maneira alguma, a melhor maneira de inicializar sua otimização, mas apenas uma opção possível.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.