Imagine a seguinte situação: você está em uma sala com mais duas pessoas. Uma delas arremessa uma bola e você a pega com as mãos. Nada poderia ser mais simples, certo?
Errado. Na verdade, este é um dos processos mais complexos que já tentamos compreender, ou seja, como o cérebro processa a visão de modo que sabemos exatamente o que é uma bola e quando ela está vindo em nossa direção. E ensinar uma máquina que seja capaz de ver da mesma forma que nós seres humanos é uma tarefa realmente difícil, não só porque é difícil fazer computadores executarem um cálculo matemático que reproduza a visão humana, mas porque não estamos inteiramente certos de como o processo da visão realmente funciona.
Primeiro vamos descrever de forma sucinta e aproximada como ocorre o processo de visão no caso do arremesso da bola: a imagem da esfera passa através de seu olho e golpeia sua retina, que faz alguma análise elementar e envia o resultado longitudinalmente ao cérebro, onde o córtex visual analisa mais profundamente a imagem. Em seguida, ele envia para o resto do córtex, que compara a tudo o que já sabe, classifica os objetos e dimensões e, finalmente, decide sobre algo a fazer: levantar a mão e pegar a bola (tendo previsto o seu caminho). Isso ocorre em uma pequena fração de segundo, com quase nenhum esforço consciente e quase nunca falha. Assim, recriar a visão humana não é apenas um problema difícil, é um conjunto deles, cada um dos quais depende do outro.
O que significa Visão Computacional?
A visão computacional é o processo de modelagem e replicação da visão humana usando software e hardware. A visão computacional é uma disciplina que estuda como reconstruir, interromper e compreender uma cena 3d a partir de suas imagens 2d em termos das propriedades da estrutura presente na cena.
Visão computacional e reconhecimento de imagem são termos frequentemente usados como sinônimos, mas o primeiro abrange mais do que apenas analisar imagens. Isso porque, mesmo para os seres humanos, “ver” também envolve a percepção em muitas outras frentes, juntamente com uma série de análises. Cada ser humano usa cerca de dois terços do seu cérebro para o processamento visual, por isso não é nenhuma surpresa que os computadores precisariam usar mais do que apenas o reconhecimento de imagem para obter sua visão de forma correta.
O reconhecimento de imagens em si – a análise de pixel e padrão de imagens – é uma parte integrante do processo de visão computacional que envolve tudo, desde reconhecimento de objetos e caracteres até análise de texto e sentimento. O reconhecimento de imagem de hoje, ainda na maior parte, apenas identifica objetos básicos como “uma banana ou uma bicicleta em uma imagem.” Mesmo crianças podem fazer isso, mas o potencial da visão computacional é sobre-humano: ser capaz de ver claramente no escuro, através de paredes, em longas distâncias e processar todos esses dados rapidamente e em volume maciço.
Já a visão computacional em seu sentido mais pleno está sendo usada na vida cotidiana e nos negócios para conduzir todos os tipos de tarefas, incluindo identificar doenças médicas em raios-x, identificar produtos e onde comprá-los, anúncios dentro de imagens editoriais, entre outros. A visão computacional pode ser usada para digitalizar plataformas de mídia social a fim de encontrar imagens relevantes que não podem ser descobertas por meio de pesquisas tradicionais. A tecnologia é complexa e, assim como todas as tarefas acima mencionadas, requer mais do que apenas reconhecimento de imagem, mas também análise semântica de grandes conjuntos de dados.
Ninguém nunca disse que isso seria fácil. Exceto, talvez, Marvin Minsky, pioneiro da Inteligência Artificial, que, em 1966, instruía um estudante de pós-graduação a “conectar uma câmera a um computador e fazer com que descrevesse o que vê”. Mas a verdade é que 50 anos depois, ainda estamos trabalhando nisso, porém, agora há uma diferença (ou duas talvez): temos Big Data e Processamento Paralelo em GPU’s. E acredite, isso está realmente fazendo a diferença.
A pesquisa séria sobre visão computacional começou nos anos 50 ao longo de três linhas distintas:
- replicar o funcionamento do olho (difícil);
- replicar o funcionamento do córtex visual (muito difícil);
- e reproduzir o funcionamento do resto do cérebro (sem dúvida o problema mais difícil jamais tentado).
Reinventar o olho é a área onde tivemos mais sucesso. Nas últimas décadas, criamos sensores e processadores de imagem que combinam e, de certa forma, superam as capacidades do olho humano. Com lentes maiores e mais “opticamente perfeitas” e subpixels de semicondutores fabricados em escalas de nanômetros, a precisão e sensibilidade de câmeras modernas é nada menos que incrível. As câmeras também podem gravar milhares de imagens por segundo e detectar distâncias com grande precisão.
No entanto, apesar da alta fidelidade de suas saídas, esses dispositivos são, em muitos aspectos, não melhores do que uma câmera comum do século XX: eles simplesmente registram a distribuição de fótons que vêm em uma determinada direção. O melhor sensor de câmera já feito não poderia reconhecer uma bola – muito menos ser capaz de pegá-la. O hardware por sua vez é severamente limitado sem o software – que de longe é o maior problema a ser resolvido. Mas a tecnologia de câmeras modernas fornece uma plataforma rica e flexível para trabalhar.
Este não é um artigo para um curso completo sobre neuroanatomia visual, mas basta dizer que nossos cérebros são construídos a partir do zero com a visão em mente, por assim dizer. Mais do cérebro é dedicado à visão do que qualquer outra tarefa e a especialização nesta atividade segue todo o caminho até as próprias células. Bilhões delas trabalham juntas para extrair padrões do ruidoso e desorganizado sinal da retina.
Conjuntos de neurônios excitam uns aos outros. Redes de nível superior agregam esses padrões em meta-padrões: as camadas vão crescendo de tamanho até que uma imagem começa a emergir dessas descrições brutas mas complementares.
As primeiras pesquisas sobre a visão computacional, considerando essas redes como sendo incrivelmente complexas, tomaram uma abordagem diferente: o raciocínio “de cima para baixo” (Top-down). Para alguns objetos em situações controladas, isso funcionou bem, mas imagine tentar descrever cada objeto ao seu redor, de todos os ângulos, com variações para iluminação e movimento e uma centena de outras coisas. Tornou-se claro que para alcançar até níveis de reconhecimento semelhantes a crianças pequenas, seriam necessários conjuntos de dados impraticáveis.
Uma abordagem “de baixo para cima” (Bottom-up) imitando o que é encontrado no cérebro é mais promissora. Um computador pode aplicar uma série de transformações a uma imagem e descobrir bordas, os objetos que eles implicam, perspectiva e movimento quando apresentado com várias imagens e assim por diante. Os processos envolvem uma grande quantidade de matemática e estatística, mas eles equivalem ao computador tentando combinar as formas que vê com as formas que foi treinado para reconhecer – treinado em outras imagens, da mesma forma como os nossos cérebros foram treinados (alguém mostrou a você uma imagem de um carro e o ensinou que aquilo era um carro). Em processos supervisionados de aprendizagem de máquina, fazemos o mesmo com algoritmos.
Até recentemente (poucos anos atrás), a criação e operação de redes neurais artificiais era impraticável por causa da imensa quantidade de computação que eles exigem. Os avanços na computação paralela têm corroído essas barreiras, e nos últimos anos assistiu-se a uma explosão de investigação e utilização de sistemas que imitam – ainda muito aproximadamente – os do nosso cérebro. O processo de reconhecimento de padrões foi acelerado por ordens de magnitude e estamos fazendo mais progressos a cada dia. Redes Neurais Convolucionais vem sendo usadas com sucesso e alta taxa de precisão em atividades de visão computacional. Deep Learning em ação.
É aqui que as fronteiras da Ciência da Computação e da Inteligência Artificial convergem – e onde estamos atualmente apostando nossas fichas. Os avanços são perceptíveis (você já deve ter visto vídeos sobre carros autônomos e o Uber pretende em breve lançar sua frota de carros sem motoristas. Esses carros autônomos aplicam visão computacional). O futuro da visão computacional é integrar sistemas poderosos e específicos, com os mais amplos que estão focados em conceitos que são um pouco mais difíceis de definir: contexto, atenção, intenção.
Dito isto, visão computacional, mesmo em seu estágio nascente ainda é incrivelmente útil.
Está em nossas câmeras, reconhecendo rostos e sorrisos. Está presente em carros self-driving, leitura de sinais de trânsito e reconhecendo pedestres. Está em robôs de fábrica, monitorando problemas e navegando em torno de colegas de trabalho humanos. Há ainda um longo caminho a percorrer antes que os algoritmos processem a visão da mesma forma como nós fazemos, mas considerando a velocidade com que estamos evoluindo na solução de problemas de visão computacional, podemos afirmar que esta é uma das áreas mais promissoras da Inteligência Artificial.
1 Comentários
Muy explicativo, gracias justo estoy trabajando en el marco teorico de mi tesis y la forma como la has explicado es muy interesante y concisa.
Un saludo.