Estou trabalhando em um pequeno projeto que envolve os rostos dos usuários do twitter através de suas fotos de perfil.
Um problema que encontrei é que, depois de filtrar todas as imagens, exceto as fotos nítidas, uma porcentagem pequena, mas significativa, dos usuários do twitter usa uma foto de Justin Bieber como foto de perfil.
Para filtrá-los, como posso saber programaticamente se uma foto é de Justin Bieber?
[justin-bieber]
tag.Respostas:
Uma idéia melhor pode ser descartar todas as imagens que aparecem no feed de mais de um usuário - não é necessário reconhecimento.
fonte
Sinto que http://www.tineye.com/commercial_api pode ser a solução aqui. Simplesmente jogue a imagem do perfil do Twitter no Tineye, veja se ele retorna imagens (e URLs associadas) que podem ser claramente identificadas (ou pontuadas automaticamente usando uma lógica simples de contagem de palavras) como relacionadas a (ou de) aquele pequeno saco de * *.
Simples!
fonte
Como você pode filtrar apenas aquelas que são fotos de retrato nítidas, presumo que você tenha algum método de geração de recursos para transformar as imagens brutas em recursos úteis para fins de aprendizado de máquina. Se isso for verdade, você pode tentar treinar um algoritmo de classificação (existem muitos: redes neurais etc.) alimentando o algoritmo com um monte de fotos conhecidas de Bieber, bem como um monte de conhecidos não-Biebers. Depois de treinar o modelo, ele pode ser usado para prever se uma nova imagem é Bieber ou não.
Esse tipo de técnica de aprendizado supervisionado exige que você tenha dados onde saiba a resposta correta (Bieber ou não), mas provavelmente esses podem ser encontrados em uma pesquisa de imagens do Google. Também exige que você tenha os tipos certos de recursos e não sei o suficiente sobre processamento de imagem ou seu algoritmo para saber se isso é uma grande desvantagem.
fonte
Você pode usar um método como eigenfaces, http://en.wikipedia.org/wiki/Eigenface . A seguir, é apresentado um bom passo a passo do procedimento, além de links para diferentes implementações.
http://www.pages.drexel.edu/~sis26/Eigenface%20Tutorial.htm
A partir daqui, é comum usar isso em uma abordagem de classificação, treinar um modelo e prever casos. Você pode fazer isso treinando várias celebridades conhecidas e, se prever um rosto do twitter como um dos modelos de celebridades treinados, remova-o. Semelhante a este http://blog.cordiner.net/2010/12/02/eigenfaces-face-recognition-matlab/
Isso sofre alterações constantes. Em breve, haverá um novo Justin Bieber que não estará em seu modelo treinado, então você não poderá prever. Há também um caso como Whitney Houston, que você nunca pensou em adicioná-la antes, mas ela pode ser uma imagem comum por respeito e admiração por algumas semanas. Você não terá o lado negativo de fotos de bebês, como mencionado acima. Para superar esses problemas, você poderia usar mais uma abordagem de cluster hierárquico. Removendo os primeiros conjuntos de clusters que estão muito próximos se atingirem um determinado nível de suporte, seu primeiro cluster possui 15 itens antes da construção de um segundo. Agora você não precisa se preocupar com quem está no seu modelo de treinamento, mas vai cair na questão das fotos do bebê.
fonte
http://face.com/ possui uma API de reconhecimento facial gratuita
fonte
Se você quiser fazer isso sozinho, eu recomendaria o uso do projeto OpenCV (CV para visão computacional) da Intel, de código aberto e gratuito.
http://opencv.willowgarage.com/
http://oreilly.com/catalog/9780596516130
fonte
Você precisa criar um algoritmo para detectar a qual pessoa essa imagem está se referindo. Você pode criar um modelo com base em diferentes imagens de retrato de personalidade famosa e usar classificadores para garantir que essa imagem esteja se referindo a uma imagem da sua base de dados. Você precisa usar um determinado classificador com base nos diferentes parâmetros desejados para o rosto, como a distância entre os olhos ou outros parâmetros para aumentar a precisão do seu modelo. Há também análise da pele. O mais importante é construir um bom classificador. Este método pode ser vulnerável.
Mas também há um projeto muito bom trabalhando no reconhecimento de faces http://opencv-code.com/Opencv_Face_Detection
fonte
Você pode tentar o hash sensível à localidade .
fonte