• Nenhum resultado encontrado

3. Monitorização da alimentação com HMMs

3.2. Sistema de monitorização de alimentação

3.2.3. Classificação de gestos

O módulo de classificação de gestos proposto está representado, na Figura 28, através do seu diagrama. C o o rd en ad as g es to c a n d id a

to HMM Líquidos (mão esq.) HMM Líquidos (mão dir.)

HMM Sopa HMM Prato (mão dir.) HMM Prato (mão esq.)

G e st o c o n h e ci d o

Figura 28 – Módulo de Classificação de gestos.

Os gestos candidatos são processados em 5 sub-módulos HMM, de forma a calcular a probabilidade, de um dado gesto, face aos diferentes HMMs que representam os gestos considerados, nomeadamente:

1 – Transporte de comida do tipo sopa do prato até à boca (utilizando a mão direita); 2 – Transporte de comida do tipo prato principal do prato até à boca (utilizando a mão direita);

3 – Transporte de comida do tipo prato principal do prato até à boca (utilizando a mão esquerda);

4 – Transporte de líquidos até à boca (utilizando a mão direita); 5 – Transporte de líquidos até à boca (utilizando a mão esquerda).

O HMM que possuir a maior probabilidade de gerar a sequência de valores do gesto fornecido, será aquele que irá caraterizar o gesto. Finalmente, os gestos reconhecidos são comunicados ao módulo de Estimação de alimentação.

39

Sub-módulos HMM

Os HMMs permitem que seja realizado o cálculo da probabilidade de uma sequência ter sido gerada pelo respetivo HMM.

Cada um dos 5 sub-módulo possui 7 HMM (um para cada uma das articulações: mãos, cotovelos, ombros e o centro dos ombros), num total de 5x7 = 35 HMMs. Foram aqui descartadas as articulações da cabeça, uma vez que esta se manteve praticamente imóvel durante os testes realizados e possui um comportamento semelhante à do centro dos ombros, e as articulações dos pulsos que possuem um comportamento paralelo às das mãos.

Como observações, foram utilizadas as coordenadas das articulações, pré-processadas e representadas com 40 direções (M = 40), conforme apresentado na seção 3.2.2.

Todos os HMM utilizados são compostos por 5 estados (N = 5) com uma estrutura ergódica2, equivalente à representada no diagrama da Figura 29.

2

4

1

5

a14 a34 a54 a15 a25 a35 a12 a24 a55 a44 a11 a22

3

a33 a23 a31 a13 a32 a21 a51 a45 a43 a52 a42 a53 b1 (o) b2 (o) b5 (o) b3 (o) b4 (o) a41

Figura 29 – Diagrama de estados dos HMMs criados.

Como resultado de avaliação de cada gesto, são obtidas 35 probabilidades que representam a probabilidade de cada HMM em gerar a sequência dada. Na Tabela 7, são apresentadas as probabilidades obtidas na avaliação de um gesto de exemplo.

2Estrutura ergódica de um HMM descrita no Anexo B.

40

Tabela 7 – Exemplo de probabilidades obtidas na avaliação. Probabilidade logarítmica Sopa Prato (mão dir.) Prato (mão esq.) Líquidos (mão dir.) Líquidos (mão esq.) Ar ti culaç ão

1 (mão direita) -109,8 -124,1 -132,6 -123,6 -infinito 2 (cotovelo direito) -135,6 -129,0 -174,8 -161,5 -infinito 3 (ombro direito) -48,6 -44,8 -infinito -57,2 -infinito 4 (centro dos ombros) -28,5 -27,1 -32,4 -222,0 -114,5 5 (mão esquerda) -3,9 -5,8 -infinito -5,0 -infinito 6 (cotovelo esquerdo) -1,2 -infinito -infinito -3,5 -infinito 7 (ombro esquerdo) -11,7 -12,7 -12,8 -16,9 -infinito

Como se pode observar na Tabela 7, para cada gesto, obtemos 7 valores diferentes em cada sub-módulo HMM, um para cada articulação. Estes valores são negativos e representam a probabilidade através de uma notação logarítmica. Isto é frequentemente utilizado neste tipo de cálculos, devido a este se realizar através da utilização de somas que são menos pesadas computacionalmente, ao contrário das multiplicações que são usadas no cálculo tradicional de probabilidades.

O sub-módulo HMM com a maior probabilidade para cada articulação será classificado como tendo gerado o gesto.

Na Tabela 8, estão representadas as probabilidades máximas para cada articulação e a qual sub-módulo HMM correspondem.

Tabela 8 – Exemplo de probabilidades obtidas na avaliação de uma sequência. Probabilidades

logarítmicas máximas

Sub-módulo HMM correspondente

Articulação

1 (mão direita) -109,8 Sopa

2 (cotovelo direito) -129,0 Prato (mão direita) 3 (ombro direito) -44,8 Prato (mão direita) 4 (centro dos ombros) -27,1 Prato (mão direita) 5 (mão esquerda) -3,9 Sopa

6 (cotovelo esquerdo) -1,2 Sopa 7 (ombro esquerdo) -11,7 Sopa

Através da observação da Tabela 8, verificamos que os HMMs das articulações da mão direita, mão esquerda, cotovelo esquerdo e ombro esquerdo, classificaram o gesto como sendo de Sopa. Por outro lado, os HMMs das articulações da mão direita, ombro direito e centro dos ombros, classificaram como sendo de Prato realizado com a mão direita.

41

Até aqui obtemos as probabilidades para cada articulação individual, contudo, isso apresentou-se como sendo insuficiente, sendo necessária uma classificação global com todas as articulações. Para realizar esta classificação, propuseram-se três métodos.

Método 1 – Conta ocorrências

No Método de classificação 1, é contado o número de ocorrências de probabilidades máximas de cada sub-módulo HMM e, aquele que tiver o maior número, será a classificação do gesto. Contudo, existe a possibilidade de existirem 2 ou 3 tipos de gesto como o mesmo número de ocorrências. Para isso, foram analisados os gestos utilizados para o treino dos modelos, feita a classificação dos mesmos e elaborada uma tabela de “desempate” (Tabela 9), através da contagem de acontecimentos de empate e identificação do gesto correspondente. Para o caso de empates que não aconteceram nos gestos de treino, é usada a classificação da mão direita para desempate.

Tabela 9 – Tabela de desempate do Método 1. Empates Desempate 1 2 1 1 3 Mão direita 1 4 4 1 5 Mão direita 2 3 3 2 4 Mão direita 2 5 Mão direita 3 4 Mão direita 3 5 3 4 5 Mão direita 1 2 3 3 1 2 4 Mão direita 1 2 5 Mão direita 1 3 4 Mão direita 1 3 5 Mão direita 1 4 5 Mão direita 2 3 4 3 2 3 5 5 2 4 5 Mão direita 3 4 5 Mão direita Legenda: 1 – Sopa;

2 – Prato (mão direita); 3 – Prato (mão esquerda); 4 – Líquidos (mão direita); 5 – Líquidos (mão esquerda).

42

De forma a melhor explicar o funcionamento deste método, considere-se um primeiro exemplo, com base nas classificações de um gesto expressas na Tabela 10.

Tabela 10 – Exemplo 1 do processo de avaliação.

Sub-módulo HMM com probabilidade máxima

Articulação

1 (mão direita) Sopa 2 (cotovelo direito) Sopa

3 (ombro direito) Prato (mão direita) 4 (centro dos ombros) Prato (mão direita) 5 (mão esquerda) Sopa

6 (cotovelo esquerdo) Prato (mão direita) 7 (ombro esquerdo) Líquidos (mão direita)

Pela observação da Tabela 10, obtemos a seguinte contagem do número de ocorrências:

 Sopa: 3 ocorrências;

 Prato (mão direita): 3 ocorrências;

 Prato (mão esquerda): 0 ocorrências;

 Líquidos (mão direita): 1 ocorrência;

 Líquidos (mão esquerda): 0 ocorrências.

Após a contagem do número de ocorrências, podemos verificar que houve um empate entre o número de ocorrências do tipo Sopa e Prato (mão direita). Com base na consulta da tabela de desempate, este gesto será classificado globalmente como sendo do tipo Sopa.

Considere-se um segundo exemplo de funcionamento, com base nas classificações representadas na Tabela 11.

Tabela 11 – Exemplo 2 do processo de avaliação.

Sub-módulo HMM com probabilidade máxima

Articulação

1 (mão direita) Sopa 2 (cotovelo direito) Sopa

3 (ombro direito) Prato (mão direita) 4 (centro dos ombros) Prato (mão direita) 5 (mão esquerda) Prato (mão esquerda) 6 (cotovelo esquerdo) Prato (mão esquerda) 7 (ombro esquerdo) Líquidos (mão esquerda)

43

Pela observação da Tabela 11, obtemos a seguinte contagem do número de ocorrências:

 Sopa: 2 ocorrências;

 Prato (mão direita): 2 ocorrências;

 Prato (mão esquerda): 2 ocorrências;

 Líquidos (mão direita): 0 ocorrências;

 Líquidos (mão esquerda): 1 ocorrência.

Após a contagem do número de ocorrências, podemos verificar que houve um empate entre o número de ocorrências do tipo Sopa, Prato (mão direita) e Prato (mão esquerda). Com base na consulta da tabela de desempate, este gesto será classificado globalmente como sendo do tipo Prato (mão esquerda).

Método 2 – Classificação ponderada dos braços direito e esquerdo

No Método 2, a classificação é feita através da separação do braço direito (articulações da mão direita, cotovelo direito e ombro direito) e braço esquerdo (articulações da mão esquerda, cotovelo esquerdo e ombro esquerdo) – não se considera a articulação do centro dos ombros.

Para cada braço, foi atribuído um fator de relevância a cada uma das suas articulações (Tabela 12) que permite classificar o braço a partir das classificações dos HMMs. A processo de cálculo de relevância das articulações encontra-se disponível em Anexo D.

Tabela 12 – Relevância das articulações para cada braço. Percentagem de relevância Ordem de relevância Braço direito 1 (mão direita) 34.44% 1º 2 (cotovelo direito) 32.78% 2º 3 (ombro direito) 32.78% 3º Braço esquerdo 5 (mão esquerda) 32.28% 2º 6 (cotovelo esquerdo) 35.61% 1º 7 (ombro esquerdo) 32.11% 3º

Quando a classificação dos dois braços é diferente, foi utilizada uma tabela de decisão (Tabela 13), obtida com base nas classificações dos gestos de treino. Nas combinações que não aconteceram nos gestos de treino, optou-se por atribuir a classificação do braço direito.

44

Tabela 13 – Tabela de decisão do Método 2.

Braço direito Braço esquerdo Classificação Classificação pelo braço direito

1 1 1 1 2 1 1 3 1 1 4 4 1 5 1 2 1 1 2 2 2 2 3 3 2 4 4 2 5 5 3 1 1 3 2 3 3 3 3

3 4 Não aconteceu no treino 3

3 5 3

4 1 4

4 2 4

4 3 3

4 4 4

4 5 Não aconteceu no treino 4 5 1 Não aconteceu no treino 5 5 2 Não aconteceu no treino 5

5 3 3

5 4 Não aconteceu no treino 5

5 5 5

Legenda: 1 – Sopa;

2 – Prato (mão direita); 3 – Prato (mão esquerda); 4 – Líquidos (mão direita); 5 – Líquidos (mão esquerda).

Assim, para o primeiro exemplo, com base nas classificações dos HMMs da Tabela 10, obtêm-se as seguintes classificações dos braços:

Braço direito: Sopa, Sopa, Prato (mão direita).

Classificação: Sopa.

Braço esquerdo: Sopa, Prato (mão direita), Líquidos (mão direita).

Classificação: Prato (mão direita).

45

Para as classificações dos HMMs do segundo exemplo (Tabela 11), obtêm-se as seguintes classificações dos braços:

Braço direito: Sopa, Sopa, Prato (mão direita).

Classificação: Sopa.

Braço esquerdo: Prato (mão esquerda), Prato (mão esquerda), Líquidos (mão direita).

Classificação: Prato (mão esquerda).

Classificação do gesto: Sopa (com base na Tabela 13).

Método 3 – Gestos da mão direita vs. gestos da mão esquerda

No método 3, é feita a contagem do número de ocorrências em separado para os gestos realizados com a mão direita [Sopa, Prato (mão direita) e Líquidos (mão direita)] e os gestos realizados com a mão esquerda [Prato (mão esquerda) e Líquidos (mão esquerda)] referentes ao respetivo braço. A mão do braço que tiver mais ocorrências irá servir de classificador do gesto. Caso, no braço a decidir, a mão possuir uma classificação de um gesto do braço contrário, a função de decisão será passada ao cotovelo e sucessivamente ao ombro.

Se o número de ocorrências for igual, a mão do braço que tiver mais ocorrências de um mesmo tipo irá classificar o gesto. Caso continua a existir um empate, em último caso, é definido que será a mão direita (articulação com mais classificações corretas nos gestos de treino) a classificar o gesto. Neste método também não é considerada a articulação do centro dos ombros.

Para o primeiro exemplo, com base nas classificações de um gesto expressas na Tabela 10, a contagem do número de ocorrências dos tipos de gestos para cada braço é:

 Gestos realizados com a mão direita classificados no braço direito: 3 [2 de Sopa e 1 de Prato (mão direita)];

 Gestos realizados com a mão esquerda classificados no braço esquerdo: 0.

46

Para o segundo exemplo, com base nas classificações representadas na Tabela 11, a contagem do número de ocorrências dos tipos de gestos para cada braço é.

 Gestos realizados com a mão direita classificados no braço direito: 3 [2 de Sopa e 1 de Prato (mão direita)];

 Gestos realizados com a mão esquerda classificados no braço esquerdo: 3 [2 de Prato (mão esquerda) e 1 de Líquidos (mão esquerda)].

Desempate:

 Nº ocorrências Sopa para braço direito: 2

 Nº ocorrências Prato (mão direita) para braço direito: 1

 Nº ocorrências Líquidos (mão direita) para braço direito: 0

 Nº ocorrências Prato (mão esquerda) para braço esquerdo: 2

 Nº ocorrências Líquidos (mão esquerda) para braço esquerdo: 1

Como se pode observar, existe o mesmo número de ocorrências máximas para um tipo de gestos de cada braço. Neste caso, a classificação será feita pela mão direita.

47

Treino e avaliação

Para realizar o processo de treino e avaliação, foram utilizadas as funções sobre HMMs de raiz do MATLAB, com o auxílio de uma toolbox escrita por Kevin Murphy [49]. Após a criação dos HMMs, estes foram inicializados com as matrizes de transição e observação com valores aleatórios, transformadas em matrizes estocásticas3 com a função

mk_stochastic da toolbox de Murphy.

De seguida, é apresentado o código MATLAB, de exemplo, para inicialização das matrizes de um HMM.

Após a inicialização, é efetuado, o treino dos HMMs com os dados adquiridos para o respetivo HMM. O processo de treino de um HMM, utilizando as funções de toolboxes incluídas no MATLAB, é efetuado utilizando a seguinte função:

O código anterior apenas treina as matrizes com uma sequência de treino. No trabalho desenvolvido, foi utilizada uma chamada recursiva da função, para realizar o treino com todas as sequências de treino adquiridas.

Após o treino de todos os HMMs com as respetivas sequências de treino, vem a fase de avaliação. Nesta fase, o objetivo é determinar a probabilidade, dado uma determinada sequência, dos HMMs treinados gerarem essa mesma sequência. O código a seguir representa um exemplo de avaliação (ou decodificação) de uma sequência.

A variável logpseq irá conter a probabilidade logarítmica. A probabilidade logarítmica é um valor negativo.

3Matriz estocástica em HMMs: todas as entradas são não-negativas e todas as entradas das linhas têm soma 1.

hmmTransicao = rand(5, 5);

hmmTransicao = mk_stochastic(hmmTransicao); hmmObservacao = rand(5, 40);

hmmObservacao = mk_stochastic(hmmObservacao);

[hmmTransicaoTreinada, hmmObservacaoTreinada] =

hmmtrain(sequenciaTreino, hmmTransicao, hmmObservacao);

[estadosPosteriores, logpseq] = hmmdecode(sequenciaTeste, hmmTransicaoTreinada, hmmObservacaoTreinada);

48

Documentos relacionados