A regra de Pareto e as máquinas de busca

A declaração recente da Marissa Mayer, “Vice President of Search Product and User Experience at Google”, de que o Google já resolveu 90% do problema de busca, mas que os 10% ainda vão dar um bom trabalho, incomodou muita gente na webosfera.

Prá quem não conhece a moça, Marissa é certamente uma das executivas mais importantes da indústria atualmente, e talvez um dos pontos máximos que um profissional de usabilidade almejaria hoje em dia.

O que há por trás dessa declaração? Bem, podemos desfilar vários aspectos interessantes aqui.

Uma delas é que frequentemente, no desenvolvimento de software, fala-se sempre da regra do 80/20 ou a Regra de Pareto, que originalmente falava que 80% das consequências vinham de 20% das causas. Mas claro que a proporção foi ganhando outros usos, como “80% do desenvolvimento leva 20% do tempo e os 20% restantes levam os outros 80% do tempo”.

Em bom e claro Português, “o diabo vive nos detalhes” :-)

De fato, muito da busca na web chegou a um nível de refinamento e desempenho formidáveis, mas o que significa dizer que 80% ou 90% do problema já está resolvido? E é neste pé que os críticos da web resolveram pegar para criticar o argumento da Marissa.

Segundo a techcrunch por exemplo, o que resta das coisas a serem indexadas e buscadas ainda é muito grande. Ainda não temos resultados satisfatórios GENÉRICOS para buscas semânticas, buscas em imagens, buscas em filmes, e muitos et ceteras.

Podemos dizer, certamente, que existe um grande potencial em buscas de imagens, por exemplo, em contextos restritos, e este é um mercado que deve crescer rapida e intensamente nos próximos anos. Mas se você quer buscar pela foto do gato com o cachorro, a menos que vc tenha intervenções humanas de forma inteligente, não se resolveu ainda o problema computacional de definir o que é exatamente um cachorro. Mas se você souber formatos de armas, talvez consiga localizar, com algum bom grau de precisão, armas num recinto por exemplo.

E aí podemos estender para as buscas em linguagem natural e etc, e a conclusão é: ainda tem muito terreno a ser caminhado neste aspecto, e isso significa, em termos de inovação, que há muito o que explorar ainda nesta área. Será que 10% é achar uma agulha numa cena de 1 segundo no youtube?

Enquanto isso, silenciosamente, coisas acontecem no Yahoo.

Ninguém do porte desta moça dá declarações impensadas. Stay tuned.

Update 11/9: 2 dias depois, Marissa escreveu uma declaração, voltando atrás, e concordando basicamente com a opinião das pessoas (eu entre elas) que acham que ainda falta muito chão, inclusive citando nosso bom e velho Pareto ;-)

Ciências cognitivas, Data Mining, Inovação, Inteligência Artificial, Internet, Linguagem Natural, Teoria da Informação, Visão Computacional, Web 2.0 0 Comentários

Processamento Digital de Imagens com Imagemagick

Outro dia me vi na situação em que eu tinha que aplicar alguns filtros de PDI programaticamente. Um opção para as pessoas que lidam com JAVA é usar o JAI, o Java Advanced Imaging, que resolve vários problemas.

Mas o Murilo acabou achando as ferramentas de linha de comando do imagemagick, que além de funcionarem muito bem, são perfeitamente “programáveis” e bastante poderosas. Provavelmente os linuxeiros mais experientes já devem conhecer o imagemagick, mas, bem, eu não conhecia, talvez seja útil para você um dia destes. Não custa compartilhar.

É, eu sei que GIMP tem linguagem de script, cheia de parêntesis horríveis… bem, pro “quick and dirty”, achei o imagemagick mais interessante. Além do mais, eles têm uma imensa página de cookbook, com as “receitas prontas” de uso, que é uma leitura prá lá de interessante, se você curte Processamento Digital de Imagens (eu particularmente acho legal). Aliás, deve ser uma bela ferramenta para lecionar PDI inclusive.

Basicamente, você passa pela linha de comando vários parâmetros que vão encadeando os “efeitos” como um “pipeline”. Mais simples, impossível. Tem alguns exemplos simples e didáticos nesta página. Mas o potencial para fazer, programaticamente, coisas muito bacanas, também é grande, especialmente se você resolver adicionar Perl à mistura. Vide o exemplo abaixo.

Então se você precisa, programaticamente, converter, ampliar, diminuir, montar mosaicos, aplicar filtros, mudar cor, contraste, espectro, lidar com layers, e muitos et ceteras, talvez você ache mais fácil e mais rápido simplesmente instalar essa ferramenta do que fazer macros do Photoshop ou aprender script-fu.

Processamento de Sinais, Visão Computacional 4 Comentários

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