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 a223
a33 a23 a31 a13 a32 a21 a51 a45 a43 a52 a42 a53 b1 (o) b2 (o) b5 (o) b3 (o) b4 (o) a41Figura 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