Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação...

28
Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS Prof. Dr. Hemerson Pistori GPEC - Grupo de Pesquisa em Engenharia e Computação UCDB - Universidade Católica Dom Bosco

Transcript of Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação...

Page 1: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

Modelos de Markov Ocultos noReconhecimento da Língua LIBRAS

Prof. Dr. Hemerson Pistori

GPEC - Grupo de Pesquisa em Engenharia e ComputaçãoUCDB - Universidade Católica Dom Bosco

Page 2: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           2/28

Sumário

➢ Conceitos Fundamentais de Probabilidade e Estatística

➢ Redes Bayesianas➢ Processos Estocásticos e Modelos de

Markov➢ Reconhecimento de Língua de Sinais➢ Modelos de Markov Ocultos➢ Principais Algoritmos➢ Conclusão

Page 3: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           3/28

Conceitos Fundamentais

➢ Variáveis Aleatórias Discretas➢ Funções de Distribuição de

Probabilidade➢ Probabilidade Condicional➢ Independência➢ Distribuição Conjunta

Page 4: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           4/28

Variáveis Aleatórias Discretas

Variável Aleatória DiscretaExemplo: x – ocorrência de uma determinada letra doalfabeto em um texto escrito em português.

0

0,0025

0,005

0,0075

0,01

0,0125

0,015

0,0175

0,02

0,0225

0,025

0,0275

0,03

Função de Distribuição de Probabilidade de x

a b c d e f g h i j ...Possíveis valores para a variável x

p(x =a) =0.03p(x =e) =0.02

Poderíamos estimara F.D.P. a partir detextos. Como ?

Page 5: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           5/28

Probabilidade Condicional e Independência

xk – ocorrência de uma letra na posição k

xk-1 – ocorrência de uma letra na posição k-1

p(xk ='a' | xk-1 ='s') > p(xk ='a' | xk-1 ='a') ?

p(xk ='a'|xk-1 ='z') >p(xk ='a'|xk-1 ='z',xk-2 ='z',xk-3 ='i',xk-4 ='p')?

p(xk ='a' ) > p(xk ='a' | xk-1 ='s') ?

p(xk ='a') >p(xk ='a'|xk-2000 ='s') ?

Page 6: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           6/28

Probabilidade Condicional e Independência

xc – curso ('c' – computação, 'd' – direito, 'l' - letras)

xs – sexo ('f' – feminino, 'm' – masculino')

p(xs ='f') = 1/2p(xc ='c') = 1/3p(xs ='f'|xc ='c' ) =1/4

MCMCMCFC

MDMDMDFDFDFD

FLFL

Situação 1

MCMCFCFC

MDMDMDFDFDFD

MLFL

Situação 2

p(xs ='f') = 1/2p(xc ='c') = 1/3p(xs ='f'|xc ='c' ) =1/2

Page 7: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           7/28

Probabilidade Condicional e Independência

p(xs ='f'|xc ='c' ) =1/4 =(1/12) / (4/12) =p(xs ='f' ,xc ='c' )/p(xs ='c')

MCMCMCFC

MDMDMDFDFDFD

FLFL

Situação 1

MCMCFCFC

MDMDMDFDFDFD

MLFL

Situação 2

p(xs ='f'|xc ='c' ) =1/2 =p(xs ='f')

Caso geral.......: p(x|y) = p(x,y) / p(y)Independência.: p(x|y) = p(x)

Outro exemplo: p(x|y1,y2,y3,y4,y5) = p(x|y1,y2)

Page 8: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           8/28

Distribuição Conjunta

MCMCMCFC

MDMDMDFDFDFD

FLFL

Masc. Femin.Comput. 0,25 0,08 0,33Direito 0,25 0,25 0,5Letra 0 0,17 0,17

0,5 0,5

p(xs ='f', xc ='l' )

p(xs ='m') = p(xs ='m',xc ='c')+p(xs ='m',xc ='d')+p(xs ='m',xc='l')

Page 9: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           9/28

Distribuição Conjunta

p(xk ='a'|xk-1 ='z',xk-2 ='z',xk-3 ='i',xk-4 ='p')?

Caso as variáveis não sejam independentes teremosque manter os valores da distribuiçao conjunta de5 variáveis.

Considerando 23 diferentes letras:

Precisaremos de um matriz com 235 células:~ 6 Mega - 24 Mb (4 bytes por célula)

Page 10: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           10/28

Redes Bayesianas

Utiliza informações sobre independência paradiminuir custo em espaço para armazenardistribuição conjunta

x1 x2 x4 x6

x3

x5

p(x1,x2,x3,x4,x5,x6) = p(x1).p(x2|x1).p(x3|x2). p(x4|x2).p(x5|x2).p(x6|x3,x4,x5)

106 10 + 102 + 102 + 102 + 102 + 104

~4 Mb ~40 Kb - 4 bytes por célula- 10 valores por variável

Page 11: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           11/28

Teorema de Bayes

p(x | y) = p(x,y) / p(y)

p(y | x) = p(y,x) / p(x)

p(x,y) = p(y,x) Conjunção é comutativa.

p(x | y) = ( p(y | x) * p(x) ) / p(y)

p( d = 'meningite' | s = 'dor na nuca') = ?p( d = 'torcicolo' | s = 'dor na nuca') = ?

meningite ou torcicolo ?

p(n|m)*p(m) > p(n|t)*p(t)

Page 12: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           12/28

Modelos de Markov de ordem n

x1 x2 x3 x4 x5 x6

p(xk| xk-1,xk-2,...,x1) = p(xk| xk-1,xk-2)

x1 x2 x3 x4 x5 x6

p(xk| xk-1,xk-2,...,x1) = p(xk| xk-1)

Um tipo de modelo utilizado para representarProcessos Estocásticos.

Page 13: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           13/28

Modelos de Markov de Ordem n

xk – ocorrência de uma letra na posição k

Qual a ordem do modelo de Markov quemelhor representaria o problema de“adivinhar a próxima letra”

Compromisso:

Complexidade no Espaço X Margem de Erro

Page 14: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           14/28

Outras Limitações

xk – ocorrência de uma letra na posição i

O estado pode não ser diretamente observável

P I S T O R I

[4 9 1]' , [1 2 0]' , [2 5 0]' , [3 7 1]' , [1 6 0]' , [0 3 0]' , [1 2 0]'

Atributos: Tot. Extremidades, Comprim. do Contorno, Cruzamentos.

Page 15: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           15/28

Reconhecimento de Língua de Sinais

FRUTAS EM LIBRASFonte: Dicionário de Libras Ilustrado (Governo do Estado de São Paulo)

Page 16: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           16/28

Reconhecimento de Língua de Sinais

Exemplos de Atributos

(1) Total pixels de pele visível, (2) Total pixels mão direita(3) Total pixels mão esquerda, (4) Pontas de dedos visíveis,(5) Distância entre centros de massa das mãos(6) Distância entre centro de massa da mão esquerda e face

Observações (Seqüências de Vetores de Atributos):

[200 50 0 5 20 2]' , [200 70 0 5 20 4]' , [200 60 0 2 20 3]' , ...

Estados (exemplos)

1 - Mão direita na configuração “C”, próxima ao queixo, e mão direita fora da área de interesse.2 – Duas mãos na configuração “V”, na altura do peito, com mão direita ao lado direito do tronco e mão esquerda...

Page 17: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           17/28

Modelos de Markov Ocultos

s1 s2 s3 s4 s5

Probabilidade de termos duas mãos na configuração “V”, na altura do peito, com mão direita ao lado direito do tronco e mão esquerda do lado esquerdo do tronco, no quadro k, sabendo que tínhamos a mão direita na configuração “C”, próxima ao queixo, e mão direita fora da área de interesse, no quadro k-1.

...

o1 o2 o3 o4 o5 ...

p(sk| sk-1) =

p(ok| sk) = Probabilidade de observarmos um vetor de atributos [200 50 0 5 20 2]' sabendo que a mão direita está na configuração “C”, próxima ao queixo, e a mão direita está fora da área de interesse.

Page 18: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           18/28

Modelos de Markov Ocultos

s1 s2 s3 s4 s5 ...

o1 o2 o3 o4 o5 ...

o1 = [200 50 0 5 20 2]', o2 = [200 70 0 5 20 4]' , o3 = [200 60 0 2 20 3]' , ...

= Frutas

p(|o1,o2,...,oT) = p(o1,o2,...,oT)

p(o1,o2,...,oT|) * p()

Pode serIgnorado

Fácil deEstimar

p(o1,o2,...,oT|) – Parte Interessante

Page 19: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           19/28

Modelos de Markov Ocultos

s1 s2 s3 s4 s5 ...

o1 o2 o3 o4 o5 ...

= Frutas

p(o1,o2,...,oT|) = V s1,...,sn

p(o1,...,oT,s1,...,sT)

p(o1,...,oT,s1,...,sT) = p(s1).p(o1|s1).p(o2|s2)...p(oT|sT).p(s2|s1).p(s3|s2)...p(sT|sT-1)

p(o1,...,oT,s1,...,sT) = p(ok|sk).p(sk+1|sk)k = 1

T

p(s1).

Page 20: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           20/28

Modelos de Markov Ocultos

s1 s2 s3 s4 s5 ...

o1 o2 o3 o4 o5 ...

= Frutas

p(o1,o2,...,oT|) = V s1,...,sT

p(ok|sk).p(sk+1|sk)k = 1

T

p(s1).

Homogeneidade no “Tempo” – Mesmas distribuições

S = {1,...,N} O = {1,...,M}

p(o1=2|s1=3) = p(o3=2|s3=3) p(s2=1|s1=2) = p(s5=1|s4=2)

Page 21: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           21/28

Modelos de Markov Ocultos

1p(s1=1)

2p(s1=2)

3p(s1=3)

Np(s1=N)

...

p(sk+1=1|sk=2)

p(sk+1=3|sk=3)

1

2

M...

p(ok=2|sk=1)

2 M...

p(ok=M|sk=N)1

Notação Usual:

πi = p(s1 = i)aij = p(sk+1=j|sk=i)bij = p(ok=j|sk=i)

Page 22: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           22/28

Modelos de Markov Ocultos

1(0.4)

2(0.2)

3(0.4)1

2

3

23

3

2

10.8

0.1

0.1

0.70.3

0.6

0.3

0.1

0.7

0.1

0.2

0.8

0.2

0.6

0.2

0.40.20.4

0.7 0.2 0.10.8 0 0.20 0.4 0.6

0.8 0.1 0.10 0.7 0.30.1 0.3 0.6[ ] [ ] [ ]B =A =π =

Page 23: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           23/28

Modelos de Markov Ocultos

0.40.20.4

0.7 0.2 0.10.8 0 0.20 0.4 0.6

0.8 0.1 0.10 0.7 0.30.1 0.3 0.6[ ] [ ] [ ]B =A =π =

p(|o1=1,o2=1,o3=2,o4=3,o5=2) ?

Treliça

0.8

1 1 2 3 2

0

0.1

0.8

0

0.1

osk

k+1

0.7

0.20.1

0.8

0.2

0.4

0.6

0.1

0.7

0.3

0.7

0.2

0.8

0.2

0.4

0.6

0.1

0.3

0.6

0.7

0.2

0.8

0.2

0.4

0.6

0.1

0.7

0.3

0.7

0.2

0.8

0.2

0.4

0.6

1

1

1

0.4

0.2

0.4

0.1 0.1 0.1

Page 24: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           24/28

Modelos de Markov Ocultos

p(|o1=1,o2=1,o3=2,o4=3,o5=2) ?

0.8

1 1 2 3 2

0

0.1

0.8

0

0.1

0.7

0.20.1

0.8

0.2

0.4

0.6

0.1

0.7

0.3

0.7

0.2

0.8

0.2

0.4

0.6

0.1

0.3

0.6

0.7

0.2

0.8

0.2

0.4

0.6

0.1

0.7

0.3

0.7

0.2

0.8

0.2

0.4

0.6

1

1

1

0.4

0.2

0.2

VI VF

p(o1,o2,...,oT|) = V s1,...,sT

p(ok|sk).p(sk+1|sk)k = 1

T

p(s1).

Problema: Somar o custo (multiplicação dos pesos de vértices e arestas) de cada caminho ligando um vértice de VI a um de VF

0.1 0.1 0.1

Page 25: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           25/28

Algoritmo Forward/Backward

➢ Reduz complexidade de O(TNT) para O(T2N) ➢ Baseado em Programação Dinâmica (Tópico de Otimização e Pesquisa Operacional)

91

2

3

4

5 67

810

11

1*2*3*4*5*6*9 + 1*2*3*4*5*7*10 + 1*2*3*4*5*8*11

... ...

...

aij = Acumulador tempo i estado j

1*2*3*4*5*(6*9 + 7*10 + 8*11)

Page 26: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           26/28

Algoritmo Viterbi

➢ Encontra seqüência mais provável de estados➢ Modificação simples do Forward/Backward➢ Armazenar caminhos de maior valor enquanto calcula valores aij

0.8

1 1 2 3 2

0

0.1

0.8

0

0.1

0.7

0.20.1

0.8

0.2

0.4

0.6

0.1

0.7

0.3

0.7

0.2

0.8

0.2

0.4

0.6

0.1

0.3

0.6

0.7

0.2

0.8

0.2

0.4

0.6

0.1

0.7

0.3

0.7

0.2

0.8

0.2

0.4

0.6

1

1

1

0.4

0.2

0.4

0.1 0.1 0.1

Page 27: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           27/28

Algoritmo Baum-Welch

➢ Calcula os valores das matrizes p, A e B.➢ Aprendizagem Supervisionada (amostras pré-classificadas)➢ Amostras com informações “incompletas” (diferente do caso dos cursos e sexo).➢ Algoritmo EM (expectation-maximization) aplicado aos modelos de Markov ocultos.

Observações (Seqüências de Vetores de Atributos):

[200 50 0 5 20 2]' , [200 70 0 5 20 4]' , [200 60 0 2 20 3]' , ...

Estados (manualmente identificados)

1 1 1 1 2 2 3 3 4 4

Page 28: Modelos de Markov Ocultos no Reconhecimento da Língua LIBRAS · MD MD MD FD FD FD FL FL Situação 1 MC MC FC FC MD MD MD FD FD FD ML FL Situação 2 p(xs ='f') = 1/2 ... MD MD MD

GPEC – Grupo de Pesquisa em Engenharia e Computação da UCDB – ww.gpec.ucdb.br           28/28

Considerações Finais

➢ Áreas envolvidas: probabilidade, estatística, processos estocásticos, teoria dos grafos, programação dinâmica, otimização combinatória, pesquisa operacional, complexidade de algoritmos, aprendizagem de máquina, redes bayesianas, inteligência artificial.➢ Conceito análogo – Filtros de Kalman (distribuições contínuas)➢ Conceitos relacionados – Modelos de Markov de Tempo Contínuo. Campos Aleatórios de Markov. Modelos Gráficos.