Mauricio Ferreira Aurelio Moraes - ppt carregar
PublicouHeitor Testa Alterado mais de 4 anos atrás
Apresentação em tema: "Mauricio Ferreira Aurelio Moraes"— Transcrição da apresentação:
1 Mauricio Ferreira Aurelio Moraes
Trabalho 2 Mauricio Ferreira Aurelio Moraes
2 O Trabalho Encontrar um método geral para identificar onde estão os jogadores em imagens de futebol obtidos a partir de vídeos de TV. Um método geral deve possuir algumas características: Ser rápido e confiável; Ser robusto e auto-adaptativo na medida do possivel. Ou seja, deve funcionar não só sob condições ideais, mas também nos casos mais complicados; Deve ser o mais independente possível de escolhas de parâmetros que precisem ser modificados pelo usuário de uma imagem para outra. Métodos que possuam essas qualidades podem ser considerados métodos "automáticos" para a resolução do problema em questão.
3 Estratégias Características de Textura
Clusterização por Growing Neural Gas Redes Neurais + Análise de Sensibilidade
4 1. Textura O que é textura? Fácil de reconhecer, porém difícil definir. Apesar de não haver uma definição estrita do conceito de textura de imagem, ela é facilmente perceptível pela visão humana e representa uma fonte de informação visual muito rica acerca da natureza e estrutura tridimensional dos objetos físicos. De uma forma genérica, podemos considerar que texturas, são padrões visuais complexos compostos por entidades ou sub-padrões que apresentam propriedades características brilho, a uniformidade, densidade, regularidade, dureza, linearidade, freqüência, fase, direcionalidade, suavidade, finura, granulação, aleatoriedade, grossura, etc, da textura como um todo (Levine – 1985).
5 Análise de Textura Estrutural: Repetição dos padrões primitivos básicos com uma certa regra de posicionamento. Estatística: Padrões sobre os quais podem ser definidos modelos estatísticos por forma a caracterizar esses mesmos padrões. - Funções de auto-correlação; - Transformadas ópticas; - Transformadas numéricas; - Análise por detecção de contorno; - Análise de elementos estruturais; - Probabilidade de co-ocorrência espacial de níveis de cinza; - Comprimento de seqüências do mesmo nível de cinzento; - Modelo auto-regressivo;
6 Análise Estatística de Textura
O método de análise estatística de textura tem sido desenvolvido usando-se padrões de freqüência (Chen, 1990) Estatísticas de Primeira ordem (Hsu, 1978; Irons e Peterson,1981) Estatísticas de Segunda ordem (Haralick et al., 1973)
7 Análise Estatística de Textura Primeira Ordem
Define com que frequência um pixel aparece na imagem. Não levam em consideração a distribuição espacial dos níveis de cinza da imagem. As medidas de primeira ordem mais utilizadas são: Média, Variância, Desvio padrão, Simetria, Energia e Entropia.
8 Análise Estatística de Textura Segunda Ordem
9 Análise Estatística de Textura Segunda Ordem
SGLDM – "Spatial Grey Level Dependence Level"  Calcula a probabilidade de ocorrer uma transição entre dois pixels da imagem em tons de cinza separados por uma dada orientação espacial. GLDM – "Grey Level Difference Method"  Calcula a probabilidade de existência de uma dada diferença entre dois pixels, separados por uma dada orientação espacial. RLM – "Run Length Method"  Calcula a probabilidade de exitência de sequências de pixels idênticos, para um dado comprimento e, ao longo de uma dada orientação.
10 Análise Estatística de Textura Segunda Ordem
11 Grey Level Co-Ocurrence Matrix.
Haralick et al. (1973) apresentaram a matriz de co-ocorrência dos níveis de cinza, que representa a distância e as relações espaciais angulares sobre uma sub-região de uma imagem de tamanho especificado. Cada elemento da GLCM é uma medida de probabilidade de ocorrência de valores de níveis de cinza separados por uma dada distância numa dada direção (Mather, 1999). A GLCM pode ser denominada como sendo um histograma bidimensional que fornece a freqüência de ocorrência P(i,j,d,θ), de um determinado par de níveis de cinza i e j, numa determinada distância d e uma direção θ.
12 Grey Level Co-Ocurrence Matrix Etapas:
1- Montar Matrizes de Co-ocorrências 2- Normalizar Matrizes 3- Calcular Descritores Texturais
13 Grey Level Co-Ocurrence Matrix 1-Montar Matrizes de Co-ocorrências
14 Grey Level Co-Ocurrence Matrix 1-Montar Matrizes de Co-ocorrências
15 Grey Level Co-Ocurrence Matrix 2-Normalizar matrizes (Matriz de probabilidades)
Número máximo de elementos na Matriz: M(0°)  2 * (Ngx – 1) * Ngy M(45°)  2 * (Ngx – 1) * (Ngy – 1) M(90°)  2 * Ngx * (Ngy – 1) M(135°)  2 * (Ngx – 1) * (Ngy – 1)
16 Grey Level Co-Ocurrence Matrix 3-Calcular Descritores Texturais
Descritores utilizados: Energia: Avalia a uniformidade textural. Entropia: Mede a desordem em uma imagem. Contraste: Mede a presença de transição abrupta de níveis de cinza (bordas) Homogeneidade Local: Mede a homogeneidade da imagem. Correlação: Mede a dependência linear de um nível de cinza em relação aos vizinhos. Variância: Mede a dispersão em relação à média.
17 Grey Level Co-Ocurrence Matrix 3-Calcular Descritores Texturais
18 Processo de extração de textura
19 Processo de avaliação dos descritores texturais
Para fazer a classificação da imagem de entrada é preciso: - Que o usuário identifique o pedaços de algumas classes que ele queira identificar na imagem. - Calcular para cada classe identificada os descritores texturais. - Varrer uma janela NxN para classificar o pixel central calculando os descritores texturais para cada angulo e de acordo com a distância euclediana classifica-lo de acordo com cada classe existente.
20 Resultados parciais (pixel a pixel):
Energia, Janela 11x11, 16cores, d=1, theta=0
21 Resultados parciais (pixel a pixel):
Variância, Janela 11x11, 64cores, d=1, theta=0
22 Otimização:
23 Otimização:
24 Otimização:
25 Otimização:
26 Conclusões Dificuldades para selecionar parâmetros: distância, descritores de textura, quantização (quantas cores?), ângulos. Algoritmo caro computacionalmente, porem com otimizações na literatura. Método funciona bem para texturas bem definidas Resultados dependem da orientação da textura Sensíveis a distorções de tons de cinza
27 Outras aplicações
28 2 . GNG (Growing Neural Gas):
Suponhamos que tivéssemos os 18 pontos no R2 representados abaixo como nossos vetores de entrada, e que quiséssemos separá-los em 4 grupos: A cada passo, uma das amostras de treino (pontos pretos) é escolhida ao acaso. Verifica-se a distância entre essa amostra escolhida e cada um dos possíveis representantes (azuis). Dentre os possíveis representantes, escolhe-se aquele que estiver à menor distância da amostra. O escolhido é "movido" na direção da amostra (tipicamente os pesos atuais do representante passam a ser a média ponderada entre seu peso atual e os pesos da amostra que está sendo treinada.
29 GNG (Growing Neural Gas):
Em métodos de aprendizado não supervisionado somente os dados de entrada estão disponíveis, e não existe nenhuma informação a respeito das saídas desejadas. Um objetivo possível é obter redução de dimensionalidade dos dados de entrada, encontrar um sub-espaço de menor dimensão que represente a maior parte ou todo o conjunto de dados. Diminuir o número de amostras de um determinado conjunto de dados. Dependendo da relação existente entre a dimensionalidade dos dados de entrada e dos dados da saída, alguma informação pode ser perdida durante o processo.
30 GNG (Growing Neural Gas Algorithm): http://www. ki. inf. tu-dresden
O algoritmo é descrito abaixo: Passo 0: Iniciar com duas unidades a e b com vetores posição aleatórios Wa e Wb em Rn; Passo 1: Escolher uma amostra da ser treinada segundo a distribuição de probabilidades do conjunto de amostras; Passo 2: Encontrar, dentre as unidades disponíveis, as duas unidades mais próximas da amostra de entrada, S1 e S2;
31 GNG (Growing Neural Gas Algorithm):
Passo 3: Incrementar o peso de todas as arestas que tenham S1 como um de seus vértices; Passo 4: Adicionar a distância quadrada existente entre a amostra sendo treinada e a unidade mais próxima dessa amostra ao acumulador de erros do neurônio:
32 GNG (Growing Neural Gas Algorithm):
Passo 5: Mover a unidade S1 e seus vizinhos topológicos na direção da amostra sendo treinada, por frações iguais a eb e en respectivamente: Passo 6: Caso as unidades S1 e S2 estejam conectadas por arestas, essa aresta deve receber 0 (zero) como peso; Passo 7: Remover todas as arestas que possuam peso maior que Amax. Caso após a remoção das arestas alguma das unidades fique sem arestas, remover essa unidade da rede;
33 GNG (Growing Neural Gas Algorithm):
Passo 8: Caso o número de amostras já treinadas seja igual a λ, inserir uma nova unidade na rede da seguinte maneira: Determinar a unidade q que possui o maior erro acumulado; Inserir uma unidade r entre a unidade q e o seu vizinho topológico de maior erro acumulado f; Os pesos iniciais de r terão, portanto, a seguinte configuração: Inserir arestas conectando a nova unidade criada r às duas unidades através das quais r foi gerada; Decrementar o erro das unidades q e f multiplicando esses error pela constante a. Inicializar o erro acumulado da nova unidade r como sendo o novo valor de erro da unidade q;
34 GNG (Growing Neural Gas Algorithm):
Passo 9: Decrementar os erros de todas as unidades existentes multiplicando seus erros acumulados por uma constante d; Passo 10: Caso o critério de parada seja atingido (ex: caso o número de unidades existentes na rede seja alcançado), o treinamento está completo. Caso contrário, voltar ao passo 1. Um exemplo de execução do algoritmo pode ser visto aqui. Os parâmetros de entrada para esse caso foram: λ=100, eb=0.2, en=0.006, a=0.5, Amax=50, d=0.995:
35 Resultados parciais - GNG
36 Resultados parciais - GNG
37 Resultados parciais - GNG
38 Resultados parciais - GNG
39 Resultados parciais - GNG
40 Resultados parciais - GNG
41 λ=100, eb=0.2, en=0.006, a=0.5, Amax=50, d=0.995:
42 Redes Neurais e Análise de Sensibilidade
Podemos interpretar uma instância de uma rede neural com algoritmo de retropropagação (backpropagation) como uma espécie de "interpolador universal de funções". Como caso geral, suponha que tem-se um fenômeno qualquer que possa ser descrito através de uma função f(x1, x2, ..., xn). Suponha que, apesar de não se ter idéia de qual é essa função, temos um conjunto de n amotras conhecidas, isto é, para cada uma das n amostras temos seu resultado {y1, y2, ..., ym} e seu respectivo conjunto de entradas {x1, x2, ..., xn}. Uma vez que esses dados SEJAM REPRESENTATIVOS DO FENÔMENO a ser classificado, através de uma instância de rede neural BKP podemos encontrar uma boa aproximação da função que descreve o fenômeno.
43 Uma instância qualquer de rede neural BKP é basicamente caracterizada pela topologia dessa rede.
Comumente, uma rede desse tipo está dividida em camadas de neurônios. Os neurônios existentes numa camada c produzem informação e estão ligados aos neurônios existentes da camada c+1. O número de neurônios existentes na camada de entrada da rede é o mesmo número de variáveis contidas em cada amostra de entrada. Da mesma forma, o número de neurônios na camada de saída é o mesmo número de variáveis contidas em cada amostra de saída. O "poder de interpolação" de uma rede é definido pelo número de camadas escondidas, bem como pelo número de neurônios existentes em cada uma dessas camadas.
44 Vamos tentar exemplificar o raciocínio através de um exemplo bem simples.
Vamos escolher encontrar a função AND. Dessa forma, nosso conjunto E de entradas/saídas seria formado por: E1 = {(0,0),(0)}, E2 = {(0,1),(0)}, E3 = {(1,0),(0)}, E4 = {(1,1),(1)} Quando tratando de problemas difíceis é comum que não se tenha um conjunto de amostras que descreva perfeitamente o fenômeno que se deseja caracterizar. O mais comum é que exista ruído no conjunto de amostras de entrada/saída. O treinamento de uma rede neural BKP pode, até certo ponto, minimizar o efeito desse ruído. No entanto, mesmo para fenômenos relativamente simples, o nível de ruído não poderá ser completamente eliminado.
45 Para demonstrar isso, vamos refazer nosso exemplo da função AND, só que agora introduzindo entradas ruidosas. Nossa nova rede seria: Depois de a rede estar treinada, executamos uma análise verificando, depois da convergência, qual o PESO médio, ou seja, qual a importância que era dada a cada uma das entradas para cada uma das amostras. O resultado foi:
46 Percebe-se claramente que, apesar de no processo de aprendizado a rede minimizar a influência das entradas aleatórias, essa influência ainda existirá, gerando erros na classificação produzida pela rede. Para uma rede neural BKP de uso geral, o correto seria verificar dentre as entradas que foram fornecidas (não necessariamente caracterizam perfeitamente o fenômeno), quais são as que mais importam. Feito isso, pode-se "retirar" essas entradas, criar uma nova instância de rede onde essas entradas foram eliminadas. Geralmente, pelo fato de o novo conjunto de entradas ser formado somente por entradas de mais peso, essa nova rede será bem mais precisa.
47 Análise de Sensibilidade
Como dito, algoritmos de redes neurais BKP aprendem a partir dos dados. Em problemas difíceis, mesmo especialistas no domínio encontram dificuldades para identificar quais os parâmetros de entrada que têm influência para o problema. Quando tratando de problemas complicados, é bastante difícil identificar como os diferentes parâmetros escolhidos como entrada se relacionam entre si. Consequentemente, é comum a inclusão de parâmetros que constituem informação redundante, ou mesmo a falta total de informação no que diz respeito ao fenômeno a ser caracterizado. A análise de sensibilidade é uma das ferramentas que podem ser utilizadas para tentar reduzir a quantidade de parâmetros contendo informação redundante, ou mesmo nenhuma informação.
48 A análise de sensibilidade reflete o relacionamento existente entre uma determinada entrada da rede e cada uma das suas saídas. Faz-se um "trace-back" desde a saída para qual está sendo feita a análise até a entrada, e verifica-se o peso que essa determinada entrada exerce na saída em questão. DEPOIS DE EXECUTADO O TREINAMENTO completo da rede a ser analisada, para cada uma das amostras, o relacionamento valor_entrada/valor_saída é acumulado. Depois obtem-se a média desse valor para todas as amostras de treino. Esse é o valor da sensibilidade.
49 Isso é bastante útil quando queremos encontrar quais são as entradas importantes que caracterizam um determinado fenômeno. Por exemplo, aqui estão alguns resultados dessa análise feita para as redes criadas para a identificação de jogadores de futebol.
50 A análise de sensibilidade também serve para encontrar a importância relativa das componentes das amostras entre si:
51 Abordagem utilizada O primeiro método: utilizar redes neurais BKP que tivessem uma série de entradas que intuitivamente pudessem ser representativas do problemas em questão. Depois poderíamos utilizar resultados de análise de sensibilidade para que as entradas que porventura se mostrassem desnecessárias fossem retiradas. Apesar do alto grau de convergência mostrado pelas redes neurais BKP nos testes que fizemos, sua utilização possui como desvantagem o fato de seu processamento ser relativamente pesado. Além disso, seria uma vantagem considerável termos um método que pudesse ser implementado numa GPU, tirando proveito da sua enorme capacidade de processamento. Tal método seria incrivelmente rápido. Outro método: formarmos grupos (clusters) a partir de informações obtidas da imagem sendo analisada. Caso pudéssemos conseguir grupos que somente representassem pixel de jogadores, ao mesmo tempo que tivéssemos grupos que somente representassem pixel de campo, Poderíamos, para um pixel qualquer, verificar a qual grupo ele pertence.
52 O método GNG (otimização do largamente conhecido K-means) tem se mostrado um dos melhores métodos de clusterização de dados de que se tem notícia. Para que a clusterização funcione de forma conveniente, é preciso que se tenha uma FUNÇÃO DE DISTÂNCIA de clusterização adequada. Uma FUNÇÃO DE DISTÂNCIA é uma função que mede CORRETAMENTE, para o problema em questão, o quanto uma determinada amostra está relacionada com um cluster (grupo) ou outro. Por exemplo, caso estivéssemos tentando resolver um problema de proximidade de pontos no R3, nossa função de distância poderia ser a própria distância Euclidiana. Maior vantagem do GNG seria que, alcançada a convergência, os clusters formados poderiam provavelmente ser armazenados facilmente numa GPU na forma de uma textura, permitindo a classificação dos pixels ser feita rapidamente na placa de vídeo. PRECISÁVAMOS DE UM MÉTODO FLEXÍVEL E AUTO-ADAPTÁVEL COMO AS REDES NEURAIS BKP, MAS QUE TIVESSE CARACTERÍSTICAS DE GNG.
53 Caracterizando o problema:
Ao criarmos instâncias de redes neurais BKP que resolvam um problema, temos que supor o quanto as funções que queremos encontrar são de grau mais ou menos elevado. O grau da função que uma determinada rede BKP pode aproximar é determinado fortemente pelo número de neurônios existentes nas camadas escondidas dessa rede. A escolha do número ideal de neurônios nas camadas escondidas é importante, pois caso esse número seja excessivamente reduzido, a função não poderá ser encontrada. Por outro lado, caso esse número seja um pouco maior que o necessário, provavelmente a função ainda será corretamente interpolada, porém ao custo de grande quantidade de processamento desnecessária.
54 Para o nosso problema, testando as mais variadas imagens, chegamos a algumas conclusões:
-Em primeiro lugar, Através da análise de sensibilidade, chegamos a um conjunto de variáveis de entrada que representam satisfatoriamente o problema de classificação desejado. -Média, variância e entropia (Shannon) dos componentes RGB de uma janela de tamanho variável ao redor do pixel a ser classificado são boas entradas, apesar sua importância individual variar fortemente de uma imagem para outra:
55 Além disso, constatamos que a função a ser aproximada possui grau relativamente baixo. Para uma mesma imagem, temos abaixo os resultados da análise de sensibilidade de três redes, com 2, 3, e 4 neurônios na camada escondida. O resultado da análise (muito parecido) e a porcentagem de acerto (quase idêntica) sugere que as redes com 3 e 4 neurônios têm neurônios "de sobra":
56 Isso nos levou intuitivamente a pensar que, sendo a função polinomial aproximada de grau baixo (como sugere o número de neurôinios na camada escondida), uma boa função de distância para o GNG pudesse ser obtida como uma distância com valores ponderados pelo resultado da análise de sensibilidade. Fizemos vários testes do algoritmo GNG, no entanto com a função de distância sendo obtida a partir dos resultados da análise de sensibilidade de uma rede neural BKP previamente treinada no mesmo conjunto de amostras. Na prática, isso FUNCIONOU INCRIVELMENTE BEM. Para classificarmos os clusters formados (como clusters que representam campo ou clusters que representam jogador), utilizamos o fato de que, para o conjunto de amostras de TREINO, já sabemos quais delas são campo ou jogador.
57 A escolha dos grupos Para caracterizar os grupos, recorremos a um algoritmo de votação, da seguinte forma: Para cada uma das amostras de treino, obtemos o seu representante. Para cada representante é feito um somatório do número de vezes em que foi considerado campo e o número de vezes em que foi considerado jogador:
58 ISSO MELHORARIA OS RESULTADOS TREMENDAMENTE!!!
A escolha dos grupos Depois disso, "cortamos" aqueles representantes cujo somatório for próximo de um determinado patamar. ESSA DEFINITIVAMENTE NÃO É A MELHOR MANEIRA DE REALIZAR ESSE CÁLCULO, POIS HOJE OS PATAMARES DE CORTE ESTÃO FIXOS PARA TODAS AS IMAGENS. O correto seria escolher patamares adequados, que refletissem as características das amostras apresentadas. ISSO MELHORARIA OS RESULTADOS TREMENDAMENTE!!!
60 Por último, alguns resultados de análise de sensibilidade de casos diferentes, mostrando que o método REALMENTE SE ADAPTA a cada caso: