Um cientista explica o Microsoft Kinect, Parte II

A recepção ao meu primeiro artigo explicando a tecnologia por trás do Kinect, o novo acessório da Microsoft sendo lançado essa semana, foi surpreendente, em vários aspectos. O primeiro foi a enorme quantidade de visitantes, comentários e elogios, o que obviamente me deixou muito feliz…

O segundo aspecto, entretanto, foi mais interessante e inesperado: o diretor de incubação da Microsoft Alex Kipman, responsável pelo desenvolvimento do Kinect (e brasileiro!), leu o artigo! E, para minha surpresa, explicou que eu estava enganado com relação à tecnologia usada para obter os resultados surpreendentes que descrevi no artigo anterior, e me apontou no caminho certo.

A minha primeira reação foi a de ficar com vergonha: afinal de contas dei uma explicação que fazia muito sentido mas que não estava totalmente correta, e para uma audiência enorme. Vergonha ou não, só existe uma alternativa correta nesse caso, que é assumir o engano e corrigir a informação, o que é o que faço hoje. Alguns amigos me consolaram dizendo que qualquer cientista erra, e esse é o único jeito de continuar aprendendo, e concordo com eles! Além do mais, é inegável que ser corrigido pelo próprio Alex Kipman é no mínimo algo bem empolgante!

O que continua valendo?

Expliquei no artigo anterior que a antiga Power Glove, o Wii e o Move retornam informações limitadas, e semelhantes. Todos retornam informação a respeito de um ou dois pontos no espaço; o que muda são os graus de liberdade (DOF, de degrees of freedom) retornados para o ponto. O ideal é que você tenha seis graus de liberdade, ou seja, que o sistema saiba não só a posição espacial do controle (as coordenadas x,y,z do controle) mas também os três ângulos (roll, pitch e yaw) que determinam para onde ele está inclinado. O Move e o Wiimotion Plus retornam isso, o que é bem bacana; a Power Glove, nos 1980s, já retornava x,y,z, yaw e roll, ou seja, 5DOF.

Seis graus de liberdade no Wiimote

Seis graus de liberdade no Wiimote

O problema desses sistemas é que eles se restringem à posição (mesmo que com 6DOF) apenas do controle propriamente dito. O Kinect, por sua vez, entrega informação 3D da cena inteira (ou seja, entrega um mapa de profundidade, como apontou o nic nos comentários do primeiro artigo). A partir desse mapa ele detecta a posição do corpo inteiro da pessoa que está em frente à câmera. Essa é a grande inovação, e a explicação continua valendo! O que muda é como esse mapa é construído, e quem desenvolveu o sensor.

Um conto de duas empresas israelenses

No artigo anterior eu disse que a tecnologia usada no Kinect veio da empresa israelense 3DV, que produzia a ZCam, uma câmera TOF (time-of-flight) que entrega um mapa de profundidade como o que era necessário. A 3DV foi comprada pela Microsoft há algum tempo. Pouco depois foi anunciado o Project Natal, que virou o Kinect, e mais tarde comunicaram que a tecnologia dele era de uma empresa israelense que fazia câmeras 3D

Meu engano foi assumir que a empresa israelense era a 3DV! Na verdade a Microsoft comprou a 3DV, mas com interesse no seu portfólio de patentes. conforme explicado no venturebeat.com. Como eu assumi que a tecnologia usada era a da 3DV, eu expliquei como funcionava a câmera dela, a ZCam, que é uma câmera TOF…

Mas o sensor do Kinect foi desenvolvido pela Microsoft, internamente, numa parceria com uma outra empresa israelense que produzia câmeras que retornam mapas de profundidade, a PrimeSense (foi aqui o Alex Kipman me corrigiu). Essa informação muda completamente a minha hipótese, porque a PrimeSense usa um outro método para detectar a profundidade na cena, baseado em luz estruturada (structured light)! E o Kinect não é idêntico aos produtos da própria PrimeSense, pois o sensor em si foi projetado especificamente para as necessidades da Microsoft.

O sensor de profundidade da PrimeSense

Explicada a confusão, posso explicar como funciona o sensor da PrimeSense. Como disse, o sensor do Kinect não é exatamente o mesmo sensor da PrimeSense, então pode ser que algum detalhe seja diferente do que vai ser descrito aqui, mas o princípio é simples de entender a partir de um pequeno exemplo.

Vamos começar por um projetor comum, como os que são usados em cinema e home theaters, ou mesmo um retroprojetor dos antigos, que usam transparências. Esse projetor é usado para projetar um quadriculado uniforme. Se você coloca o projetor perto da parede, o quadriculado aparece pequeno, com cada quadradinho ocupando pouco espaço. Similarmente, se você projeta numa parede bem distante, os quadrados aparecem enormes.

Se você entra na frente do projetor, o quadriculado é projetado em seu corpo. A parte do quadriculado que acerta você aparece de um tamanho, e a parte que acerta a parede lá no fundo aparece de outro… Ou seja, se você mede, na imagem da câmera, o tamanho de cada quadradinho do quadriculado você sabe, baseado no tamanho dele, a que distância ele está! O quadriculado é luz estruturada, ou seja, luz com uma estrutura bem definida que permite que você descubra informações sobre a cena baseado na forma como essa luz é refletida.

Note que você pode detectar a profundidade não só com o tamanho do quadradinho (esse é só um exemplo didático), mas também observando, por exemplo, como linhas que deveriam ser retas são distorcidas ao serem projetas em superfícies curvas.

Luz estruturada projetada em superfície irregular

Luz estruturada projetada em superfície irregular

Um ponto difícil é que você precisa de uma óptica bem precisa: quanto mais resolução tem o quadriculado, mais exata a sua medida. Para enxergar o quadriculado você precisa de uma câmera de alta resolução, e para medir em tempo real o tamanho de todos os quadradinhos você precisa de hardware e software dedicados, numa arquitetura paralela.

No Kinect o quadriculado é projetado com luz infravermelha, invisível, logo você não percebe. Qualquer câmera digital comum detecta infravermelho: se você filmar com seu celular um controle remoto comum de TV funcionando você consegue enxergar o LED infravermelho dele piscando toda vez que você aperta uma tecla. Isso é uma vantagem enorme, porque isso implica que com uma câmera de infravermelho comum você consegue enxergar o quadriculado! Não é preciso o hardware dedicado caro da 3DV, que descrevi no artigo anterior, em que cada “pixel” tem o equivalente a um cronômetro para medir o tempo de vôo. Provavelmente o custo foi a principal razão por terem escolhido a PrimeSense ao invés da 3DV, aliás.

Mas isso não significa que o Kinect seja simplesmente uma câmera infravermelho comum, porque o processamento em tempo real necessário para extrair o mapa de profundidade a partir da imagem do quadriculado é bem sofisticado. Ele usa um sensor (CCD) comum, mas tem bastante coisa por trás.

Ilustração do design de referência da PrimeSense

Ilustração do design de referência da PrimeSense

Alguns aspectos ainda não estão claros para mim: o padrão exato usado, por exemplo (não precisa ser necessariamente um quadriculado; linhas paralelas podem ser usadas, ou mesmo padrões bem sofisticados que codificam mais informação), a resolução desse padrão (e consequentemente a resolução do mapa de profundidade) e outros detalhes do algoritmo usado. Mas isso não afeta o entendimento de como o processo funciona.

Galantucci, L. M. , Percoco, G. and Dal Maso, U. 'Coded targets and hybrid grids for photogrammetric 3D digitisation of human faces', Virtual and Physical Prototyping, 3:3, 167 - 176

Galantucci, L. M. , Percoco, G. and Dal Maso, U. 'Coded targets and hybrid grids for photogrammetric 3D digitisation of human faces', Virtual and Physical Prototyping, 3:3, 167 - 176

Quem estiver interessado em maiores detalhes pode ler as patentes da Prime Sense, como por exemplo:

Conclusão

O fato do sensor do Kinetic usar luz estruturada desenvolvida em conjunto com a PrimeSense, ou uma câmera TOF da 3DV não muda o meu entusiasmo. O interessante, como já expliquei, é ter um mapa de profundidade em tempo real, de baixíssimo custo. O aprendizado de máquina usado para extrair informações de postura corporal a partir do mapa continua o mesmo, e as muitas aplicações que uma tecnologia assim tem também.

A comparação de preço que fiz com a SwissRanger SR4000 da Mesa Imaging agora não é mais tão justa, já que câmeras TOF são mesmo bem mais caras que câmeras baseadas em luz estruturada. Mas comparar, por exemplo, a resolução do mapa de profundidade e a velocidade com que ele é produzido continua válido.

Uma vez mais, gostaria de agradecer a todos os leitores pela atenção, e de me desculpar com eles pelo engano. Um agradecimento especial, é claro, vai para o leitor mais ilustre, o Alex Kipman, e pela atenção e gentileza dele ao me corrigir. Espero que a leitura tenha sido divertida!

Mundos Virtuais, Processamento de Sinais, Reconhecimento de Faces, Robótica, Visão Computacional 9 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (6 votes, average: 5,00 out of 5)

Software livre no seu carro: “Veneno” open source

Não preciso nem dizer que o Brasil tem tradição em automobilismo – nem que for pra lembrar das incontáveis manhãs de domingo com Fórmula 1. O que acho mais interessante é que nosso tesão por motorsports independe de suporte formal: apesar de alguns esforços heróicos não temos grandes equipes em categorias de ponta.

Mas isso nunca é problema quando se tem alguma criatividade. O extremo mais precário é um dos meus exemplos preferidos: são comuns em cidadezinhas do interior os “jericos” – carros inteiros construídos a partir de sucata, usando motores estacionários (feitos para serrarias, máquinas agrícolas pequenas, etc.). Daí para competições rústicas envolvendo esses carros, jipes e fuscas é um passo.

(Foto: Marco Antonio Teixeira)

(Foto: Marco Antônio Teixeira)

Algumas soluções técnicas pouco convencionais (gambiarras mesmo) fizeram história no automobilismo brasileiro. Em 1969, os jovens Emerson e Wilson Fittipaldi disputaram os Mil Quilômetros da Guanabara ao lado de lendas como Ford GT40 e Alfa P33, a bordo de um Fusca de 400 cavalos, vindos de dois motores acoplados por uma junta elástica de borracha!

(Foto: obvio.ind.br)

Nos anos 1970 e 1980, qualquer um que pensasse em esportivo no Brasil tinha que falar do Opala, e necessariamente do “veneno” – modificações no motor como troca de carburador, bicos injetores e comando de válvulas para deixar o motor seis cilindros do que hoje é um dos maiores clássicos brasileiros ainda mais bravo e, obviamente, divertido.

Opalão SS 9 Silver Star

(Foto: Opala Club de Bragança Paulista)

A chegada da injeção eletrônica ao Brasil com o Gol GTI, em 1989, foi o início de uma grande mudança: agora um programa de computador, sensores e atuadores eletrônicos passariam a ditar o comportamento (e o consumo) do motor, e a era do veneno clássico, dos carburadores Quadrijet e de tantos outros truques começava a terminar.

Só que a história não acaba aqui! No início dos 1990 tomava força também, no mundo todo, uma outra revolução: a do software livre e aberto. Programadores de computador, cientistas da computação, hobbyistas e entusiastas chegavam à conclusão de que o código-fonte dos programas não devia ser trancafiado a sete chaves numa catedral, mas sim compartilhado e melhorado de forma cooperativa e distribuída.

Essa cooperação e o livre fluxo de informação levava ao desenvolvimento de programas e sistemas mais robustos, seguros e eficientes. E o que isso tem a ver com carros esportivos ? A resposta é simples: já que o software domina o seu carro, domine o software e você vai conseguir um “veneno” que de virtual não tem nada!

Provavelmente o exemplo mais famoso disso é a MegaSquirt, um sistema completo de injeção eletrônica, com todos os sensores e um microprocessador de 8 ou 16 bits que controla os bicos injetores e ignição das velas, baseado em software livre. A Mega Squirt é comprada pelo correio, aos pouquinhos, montada nos mais diferentes tipos de carros, e configurada de diversas formas conforme os objetivos da preparação, na melhor tradição DIY (Do It Yourself, “faça você mesmo”):

Componentes da MegaSquirt

(Foto: Marcelo Garcia)

Para “conversar” com a MegaSquirt e fornecer uma interface para o piloto / mecânico / programador / usuário, usa-se um outro software livre, o MegaTunix, originalmente desenvolvido para o Linux e hoje disponível em diversos sistemas operacionais, incluindo o Windows.

Uma das funções mais divertidas do MegaTunix é emular os caríssimos “relógios autometer” (mostradores incluindo conta-giros, termômetros, razão ar/combustível, etc.): tudo é mostrado no monitor de um notebook ou palmtop, e o usuário pode definir exatamente qual o visual ele quer.

MegaTunix / MegaSquirt

MegaTunix rodando em notebook conectado à MegaSquirt

(Foto: Marcelo Garcia)

E é a flexibilidade do código aberto que permite que sistemas assim sejam tão interessantes. O Marcelo Garcia, que forneceu fotos e consultoria para esse artigo, dá um exemplo da liberdade a que se tem acesso: ele conta que é possível, usando bastante engenhosidade, um fogão, multímetro e outros truques, atualizar o firmware da MegaSquirt para que ela usasse sensores de temperatura de qualquer carro em qualquer motor. Uma mão na roda para quem tem carros antigos (dos quais não se encontram mais peças originais) ou exóticos (cujas peças custam uma fortuna).

Calibrando sensores de temperatura no fogão

Calibrando sensores de temperatura no fogão

(Foto: Marcelo Garcia)

É claro que há limites para o que é possível fazer com software; nem o hacker mais brilhante do mundo vai fazer seu Uninho 1.0 rodar 25 km/l ou andar junto com o Opalão seis cilindros do seu tio. Mas saber que o “veneno” feito-em-casa ainda existe apesar de todas as inovações tecnológicas das últimas décadas é muito, muito bacana – e dá um outro sentido à expressão computador de bordo!

Automação, Desenvolvimento, Inovação, Processamento de Sinais 8 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

Recuperando Informação Visual

Há algum tempo aqui no Blog, um post do Kenji chamou atenção para a categorização e recuperação de imagens. Com o aumento da oferta de câmeras digitais (cada dia melhores e mais baratas) e a farta disponibilidade de imagens na WEB (Picasa, Flickr e afins), a capacidade de humana de categorizar e buscar imagens tem diminuído rapidamente (quem nunca se esqueceu em qual pasta armazenou aquela foto perfeita?). Uma maneira de automatizar este processo é utilizar um sistema de Recuperação de Imagens com Base no Conteúdo – RIBC (em inglês Content-Based Image Retrieval).

Na abordagem RIBC, como nome indica, o próprio conteúdo visual é utilizado na análise da imagem. De maneira geral esta análise é realizada utilizando alguma técnica de Processamento Digital de Imagens ou Visão Computacional. Mas o que seria este conteúdo visual de uma imagem? De forma simples, é possível definir o conteúdo visual com base em atributos de baixo nível como cores, formas e texturas presentes na imagem.

Assim, para a categorização de uma base de dados visuais qualquer (como as fotos de suas últimas férias), algoritmos que, por exemplo, detectam correlações entre as cores, orientação em texturas ou formas presentes nas imagens são empregados na geração de vetores de características (feature vectors).

Consultas a uma base já categorizada podem ocorrer de várias formas:

  • busca por exemplo, onde uma imagem de exemplo é fornecida. Tal imagem pode ser um desenho criado pelo usuário ou algum imagem pré-existente;
  • busca por distribuição de cores, onde a distribuição de cores esperada é fornecida (60% azul e 40% verde representando imagens panorâmicas com o horizonte ao fundo);
  • busca por formas, onde a forma desejada é fornecida (como o formato de um automóvel);

A recuperação da informação visual é, então, realizada pela comparação entre os vetores de características da base e aquele obtido da consulta.

Uma das aplicações mais interessante desta tecnologia, e que serve para ilustar o seu uso, pode ser encontrada no site do Museu Hermitage de São Petersburgo, Rússia. Desenvolvido em parceria com a IBM, o site possibilita ao visitante virtual pesquisar a grande coleção de arte do museu utilizando o sistema QBIC de recuperação de informação visual. Consultas por distribuição de cores e por desenho de exemplo são permitidas e os resultados são bastante interessantes (veja um exemplo nas imagens abaixo).

Consulta

Consulta por distribuição de cores no sistema QBIC.

Resultado

Resultado de busca do sistema QBIC.

A RIBC é um campo de pesquisa ainda em aberto e muito desafios não possuem soluções satisfatórias como, por exemplo, a realização de consultas semânticas como “fotos de cachorros”. E, exatamente por isso, é uma área tão interessante ;-).

Inovação, Internet, Processamento de Sinais, Visão Computacional 0 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)

O que é inteligência?

Como funciona o cérebro humano? A resposta desta pergunta solucionaria um dos maiores mistérios sobre a natureza do homem. Mas, como ainda não temos esta resposta, buscamos, através de diversas teorias, explicar como nós somos capazes de resolver problemas, memorizar enormes quantidades de dados, reconhecer padrões sensoriais (imagens, sons, cheiros, etc.) com grande rapidez, além de realizar diversas outras tarefas que não sabemos ao certo como são tratadas no nosso cérebro.

Uma das mais importantes teorias sobre o cérebro, mais especificamente sobre o córtex cerebral, foi cunhada pelo neurocientista Vernon Mountcastle e se refere às colunas corticais e aos padrões cerebrais. O córtex cerebral é a camada mais externa, constituída de tecido nervoso cinzento, que encobre a parte interna do cérebro (tecido nervoso branco) de todos os mamíferos. Nos humanos, o córtex possui seis camadas, cada uma da espessura uma carta de baralho. Acredita-se que quanto mais camadas, mais ‘inteligente’ a espécie – os golfinhos possuem apenas três camadas. Não entrarei em detalhes sobre a parte da teoria que fala sobre as colunas corticais, mas de uma forma geral elas mapeiam o córtex em uma arquitetura de colunas conectadas de forma hierárquica e dispostas nas seis camadas que constituem o córtex cerebral. Essa dica não ajuda muito a entender como as colunas funcionam (quem quiser se aventurar busque por: An Organizing Principle for Cerebral Function…” 1978, por Vernon Mountcastle), mas será importante para compreender como os padrões cerebrais são transformados em memórias e vice-versa.

Mas o que são estes tais padrões cerebrais? Você já deve ter ouvido falar das sinapses e dos pulsos elétricos (provavelmente nas aulas de biologia que você assitiu no segundo grau), utilizados pelas células cerebrais (neurônios), para se ‘comunicarem’ entre si. Não se lembra? Tudo bem. Imagine que o cérebro é formado por uma malha de bilhões de fios metálicos que trafegam freneticamente energia elétrica de um ponto a outro do cérebro. Hmm, mas e os padrões? Bom, os padrões podem ser compreendidos como sequências de pulsos elétricos, que passam a ter um significado se levado em consideração o intervalo de tempo que estes pulsos chegam ao cérebro. Para ficar mais interessante, pense em todos os seus órgãos sensoriais (olhos, ouvidos, pele, etc.) como conversores de padrões. Eles capturam, no ambiente externo, dados brutos de diversos tipos, fazem o devido tratamento e entregam os resultados ao cérebro no formato destes pulsos elétricos temporalmente ordenados. Dessa forma, o cérebro “apenas” tem que se preocupar em receber os padrões, reconhecê-los, catalogá-los, armazená-los e prover alguma forma de serem recuperados futuramente. É importante ressaltar que qualquer parte do córtex é capaz de tratar padrões provenientes de quaisquer fontes sensoriais.

Ei, espera aí. Qualquer parte do córtex é capaz de tratar padrões de qualquer origem? Mas como ficam aquelas teorias que sempre ouvimos falar sobre o cérebro ter uma área responsável por reconhecer padrões visuais, outra para lidar com a língua falada, outra para realizar raciocício matemático, etc. ? Mountcastle acredita que o córtex não é constituído de forma modular. Segundo ele, qualquer área do córtex é capaz de lidar com informações de qualquer natureza. Ah! É por isso que eu já vi vários casos de pessoas acidentadas perderem boa parte do cérebro e depois de um tempo de recuperação voltaram a viver suas vidas normalmente (ou quase). Sim, é muito provável que o cérebro funcione desta forma e, levando isto em consideração, podemos dizer que o córtex trabalha com um “algoritmo genérico de manipulação de padrões”. Ou seja, qualquer padrão que chegue ao cérebro ou trafegue por ele é tratado da mesma forma, sem essa de módulo que faz isso pra cá e módulo que faz aquilo pra lá.

O modelo forjado por esta teoria permitiu o avanço de diversas pesquisas sobre a organização e o processamento dos padrões cerebrais. Um exemplo disso: o criador do mundialmente conhecido Palm Pilot e entusiasta dos estudos sobre o córtex cerebral, Jeff Hawkins, que escreveu um livro em 2005 chamado OnIntelligence. Neste livro ele reforça com diversos outras suposições, relatos e experimentos as teorias de Mountcastle e ainda faz especulações sobre vários outros assuntos ainda não explicados sobre o funcionamento do cérebro. É importante ressaltar o autor de OnIntelligence é um computeiro e um sujeito bastante prático. Ele deixa claro que o seu objetivo, no final das contas, é converter as teorias criadas por neurocientistas, biólogos, psicólogos, filósofos e outros estudiosos (incluindo ele próprio) num modelo computacional aplicável à construção de máquinas inteligentes. Mas, o que chama atenção em seu livro é a forma com que ele aborda os principais fundamentos das teorias sobre o córtex cerebral, além de explicá-las de forma prática. De uma forma sintética, as principais responsabilidades do córtex, apresentadas por Hawkins, são:

  • Armazenamento sequencial de padrões: Quando o cérebro precisa armazenar alguma informação, os padrões que chegam ao córtex são armazenados de forma sequencial. Isso significa que o cérebro cria elos de comunicação entre os padrões de entrada, constituindo a memória a partir de um encadeamento de padrões. Como o tempo é levado em consideração durante este sequenciamento, as cadeias geradas também possuem informações temporais, que indicam o momento de chegada e/ou ativação de cada padrão. A ativação se refere ao acionamento de um padrão já armazenado no córtex, que também pode compor uma nova memória, combinando-se com outros novos padrões.
  • Capacidade de invocar padrões auto-associativos: Ao tentar se lembrar de algum fato, nosso cérebro começa a busca pelo padrão que inicializa a cadeia referente à memória que explica tal fato. Depois que este padrão foi recuperado, ele invoca o padrão consequente através do elo criado entre os dois. Este processo se repete até que toda a cadeia tenha sido recuperada e o fato relembrado. Por isso você consegue se lembrar do alfabeto de A a Z com facilidade, mas não consegue de Z a A, pois você não foi ‘treinado’ e não possui os padrões sequenciais necessários para se lembrar do alfabeto de trás p/ frente. É claro, que se você fizer um treinamento – pensando no córtex, este treinamento seria o armazenamento de padrões temporais que representam as letras de Z a A – semelhante ao que você fez para se lembrar de A a Z, você conseguirá facilmente realizar esta tarefa.
  • Armazenamento de padrões num formato invariante: Imagine que você está num parque brincando com uma criança. Você tem uma bola em suas mãos. A criança pede a bola e você a joga. Então a criança repete o seu gesto e joga a bola para você. Você a pega e continua a brincadeira. Todo o mecanismo necessário para realizar as ações que você e a criança executaram é tratado de forma ‘inconsciente’. Você não se preocupa com a velocidade da bola, as forças que atuam sobre ela, o seu peso, etc. Simplesmente a joga e depois a pega. Isto porque existe uma invariante armazenada no seu cérebro que representa ‘pegar algo’ e ‘jogar algo’. Uma invariante nada mais é do que um conjunto de padrões genéricos, que serve como modelo para o processamento de padrões mais específicos. Não existe, de forma detalhada, uma teoria que explique como são formadas as invariantes mas, acredita-se que as invariantes são as responsáveis por conseguirmos lidar com uma variedade enorme de estímulos durante o dia, sem ficar a todo momento se perguntando “o que é aquilo?” ou “como isto funciona?”.
  • Armazenamento padrões em hierarquia: Como já foi dito anteriormente, as colunas corticais são organizadas hierarquicamente. Os padrões mais genéricos e invariantes ficam no alto desta hierarquia. Padrões mais específicos ficam mais abaixo nesta hierarquia. Quando o estímulo vem dos órgãos sensoriais, os padrões são ativados num fluxo de baixo para cima nesta hierarquia de colunas. Mas quando imaginamos alguma coisa ou tentamos nos lembrar de um fato, os padrões são ativados de cima para baixo, das invariantes para os padrões específicos. Esta organização permite o reaproveitamento de padrões por diversos fragmentos de memória, evitando a replicação desnecessária e formando uma malha que facilita a recuperação posterior de informações.
  • Recuperação da memória auto-associativa: Basicamente, a recuperação de memórias funciona assim. Temos diversos padrões sequenciais armazenados no córtex. Você então passa a ele uma seqüência de padrões que representa uma caneta. Então o cérebro te devolve uma seqüência de padrões que representa a caneta e por fim você entende que é uma caneta. Parece meio estúpido a princípio, mas o mecanismo de recuperação de informação no córtex é algo extremamente poderoso. Por exemplo, se você passa, ao invés dos padrões da caneta inteira, padrões que apenas representam a ponta da caneta, ou a caneta de cabeça p/ baixo, ou apenas metade da caneta ou uma caneta deformada pelo fogo de um isqueiro ou… A resposta será a sequência completa de padrões que representam a caneta e você entenderá que é uma caneta. O nosso cérebro completa as informações com diversos padrões, realiza buscas nas invariantes, faz conexões associativas com outras cadeias de padrões e te devolve a resposta de maneira completa, desde que ela já esteja previamente armazenada. Estar previamente armazenada exige que seu cérebro já tenha sido exposto àqueles padrões.
  • Antecipação dos fatos: O cérebro prevê o futuro o tempo todo, mas não é como a mãe Diná que ‘enxerga um futuro distante’. As conseqüências de todas as nossas ações a curto prazo são antecipadas pelo nosso cérebro. Quando chegamos em casa depois do trabalho e giramos a maçaneta da porta, o cérebro já antecipa o quanto de força será necessário aplicar sobre a maçaneta para girá-la e empurrar a porta. Se as forças aplicadas abrirem a porta como o de costume, a antecipação é confirmada e o cérebro continua seu papel de ‘vidente a curto prazo’. Caso alguém tenha mexido na porta e a força aplicada não seja o suficiente para abrí-la ou enquanto você a empurra para trás ela fizer um rangido que antes não fazia, haverá uma violação na previsão e o cérebro tentará buscar padrões que expliquem o porquê disso. Logo, você pode considerar todo e qualquer tipo de aprendizado como um treinamento que construirá padrões a serem utilizados para antecipar fatos.

Se você sempre imaginou o cérebro como um processador utilizado em computadores, você pode estar se perguntando: Mas é só isso? Nosso cérebro somente lida com memórias em formato de padrões? Ele apenas faz o armazenamento e a recuperação de padrões? Nada de cálculos e processamentos complexos assim como os processadores fazem? Nada disso. Quando esticamos os braços para segurar uma bola jogada para nós, nosso cérebro não calcula a trajetória da bola, muito menos integra as forças para realizar a cinemática inversa, ele simplesmente consulta a memória e traz a resposta. Isso mesmo. O cérebro sempre consulta as respostas dos problemas que queremos resolver. Por isso temos que aprender técnicas para lidar com problemas complexos. Usamos estas técnicas para organizar as variáveis do problema na memória, recuperar os padrões necessários para reconhecer estas variáveis através de associações e, por fim, alcançar a solução (que também será armazenada). Problemas desconhecidos são resolvidos através de analogias a problemas conhecidos já armazenados em nossa memória.

Bom, agora que você já conhece um pouco sobre as teorias que são utilizadas para explicar o funcionamento do nosso cérebro, podemos definir o que é inteligência de uma forma bem simples. Basicamente, inteligência é a capacidade de antecipar as coisas. Os testes de QI exploram justamente esta capacidade. Portanto, segundo esta teoria, é possível que o cérebro seja treinado para se tornar inteligente (inclusive para tirar notas altas em testes de QI). Quanto mais invariantes e padrões mais genéricos para a resolução de problemas diversos, mais eficiente o cérebro será na antecipação de situações desconhecidas ou consideradas complicadas para a maioria das pessoas. Esta é apenas uma definição sintética de inteligência, baseada nas teorias de Mountcastle e Hawkins. Se você se interessou pelo assunto, vale a pena ler os trabalhos destes dois pesquisadores. Lembrando que Hawkins é um cara da computação e seu trabalho é uma releitura, fortemente direcionada à sua área, das teorias de Mountcastle.

Curiosidade: Os transistores que compõem um processador são muito mais rápidos que os neurônios. Enquanto os neurônios trafegam informações na ordem de milisegundos, transistores gastam apenas nanosegundos. Mas por que os processadores ainda não superaram o cérebro humano na resolução de problemas comuns para o cérebro, como por exemplo o reconhecimento de imagens. Ainda tomando como base as teorias descritas neste artigo, o cérebro apenas consulta a resposta na memória, não realiza os cálculos complexos que são efetuados pelos softwares.

Inteligência Artificial, Memória, Processamento de Sinais 5 Comentários

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)