collapse

* Posts Recentes

Rede de comboios elétricos totalmente autónomos 10 ton em Rust em realtime. por blabla
[18 de Setembro de 2022, 18:44]


NiMH por 18650 por almamater
[18 de Setembro de 2022, 17:21]


How We Get Down to 0.2nm CPUs and GPUs - TechTechPotato por blabla
[18 de Setembro de 2022, 15:38]


Nova secção de Raspberry Pi Bare Metal em C e em Rust e Systems Programming por blabla
[04 de Setembro de 2022, 08:55]


The code for AGI will be simple - John Carmack and Lex Fridman por blabla
[29 de Agosto de 2022, 07:36]


Wavelets: a mathematical microscope por blabla
[28 de Agosto de 2022, 20:50]


Bom livro - Dive Into Systems por blabla
[28 de Agosto de 2022, 12:19]


graus negativos inclinação por josecarlos
[28 de Agosto de 2022, 11:31]


Super obsolescência super programada? por SerraCabo
[06 de Agosto de 2022, 11:36]


Motor de aspirador por dropes
[02 de Agosto de 2022, 22:18]

Autor Tópico: Face tracker (aka weekend project)  (Lida 11158 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline msaleiro

  • Mini Robot
  • *
  • Mensagens: 691
    • Blog
Re: Face tracker (aka weekend project)
« Responder #15 em: 16 de Março de 2010, 18:52 »
Boas!

Estou surpreendido pela positiva de ver tanta gente com interesse na Visão Computacional e nas suas aplicações :) .

No que diz respeito ao processamento de imagem em si.. posso dizer-vos para esquecerem tudo o que sejam processadores abaixo de 1 GHz se querem fazer alguma coisa de jeito. O processamento de imagem é um tipo de processamento bastante pesado, que requer ainda muita memória ( em alguns casos pode ser necessário aplicar vários filtros a uma imagem, mantendo os resultados em memória para depois combiná-los ). Para terem ideia do state-of-the-art em processamento de imagem a nivel de poder de processamento, vejam esta máquinazinha do Laboratório de Visão da Universidade de Antuérpia :P shttp://fastra2.ua.ac.be/ são só 12TFLOPS resultantes da utilização de 13 GPUs (processadores de placas gráficas). O custo do computador é cerca de 6000 euros, o que até nem é caro tendo em conta o poder de processamento. Um servidor com o mesmo poder de processamento seria muuuuuito mais caro.

Mas para algumas experiências caseiras mais simples, um Magalhães serve :P Se forem ao blog da ydreams têm lá uns pequenos exemplos de HCI ( Human Computer Interface ) em que utilizam um Magalhães. Mas o que fazem lá não é assim nada de especial.

A nível de optimização de processamento o ideal é terem um computador com mais do que um processador e utilizarem a biblioteca OpenMP www.openmp.org/ para fazer a paralelização do processamento em múltiplos processadores.

No que diz respeito aos sistemas de visão para pessoas com deficiências vou dar-vos a conhecer dois principais exemplos. Um deles é opensource, o eyewriter http://www.eyewriter.org/. Basicamente é um sistema de tracking do olho que é usado para desenhar graffitis.
O outro, tem selo nacional e segundo li já recebeu alguns prémios. É o Magic Eye: http://www.magickey.ipg.pt/magic_eye.asp que está ligado ao Instituto Politécnico da Guarda.

Continuem o vosso interesse. No que eu puder ajudar, estou disponível :)
msaleiro - Mário Saleiro
UAlg FCT-DEI / VisLab - Instituto de Sistemas e Robótica / eLab Hackerspace
http://thebitbangtheory.com

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.731
  • Helpdesk do sitio
Re: Face tracker (aka weekend project)
« Responder #16 em: 16 de Março de 2010, 20:25 »
Na verdade a tecnologia arm está cada vez mais acessível, a NXP tem uns kits fantástico, tanto o mbed, para ser programado em visual basic se não me engano, muito simples de usar em conjunto com a plataforma .net da microsoft e depois tens os "kits" lpc expresso 1343, que têm incluido um processador arm numa placa de desenvolvimento e um programador usb e que custa só 26€ :o
http://pt.mouser.com/ProductDetail/NXP-Semiconductors/OM11048/?qs=sGAEpiMZZMvIGAkyPb0MlJWWc4XwPRSH
Como este á mais uns quantos kits da NXP, tudo dentro desta gama de preços, se fores ao site da nxp, podes fazer o download do IDE deles, que é gratuito e começar logo a programar em C, e já existe o arm-gcc para quem usa sistemas mais para os lados do linux, logo já tens vários tool-chains para usar, e ainda tens o cross-works da rowley que penso que tem uma versão gratuita mas o arm-gcc e o code red já te permitem usar e abusar do arm.
Como podes ver, actualmente ter megas de Flash para meter código, megas de ram para ter bastante liberdade, um processador de 32bits, em muitos casos com unidade de virgula flutuante incluida custa tanto como usar um simples micro-controlador de 8 bits sem nenhuma dessas vantagens, para além de que muitos dos arms correm a mais de 80MHz.
E já agora fica aqui um tópico com muitos links para fórum e grupos de users de arms e com muita informação tambem:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=89609
Avr fanboy

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.631
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re: Face tracker (aka weekend project)
« Responder #17 em: 16 de Março de 2010, 20:26 »
Muito bom, ja tentei fazer algo para detectar objectos com o processing, mas por alguma razão não me deixa usar a webcam :(

Offline Marvin

  • Mini Robot
  • *
  • Mensagens: 677
    • The scientist and the geek
Re: Face tracker (aka weekend project)
« Responder #18 em: 16 de Março de 2010, 21:44 »
Muito bom, ja tentei fazer algo para detectar objectos com o processing, mas por alguma razão não me deixa usar a webcam :(

Obrigado amando96 eu ha uns tempos andei a ver algumas aplicações em processing em especial realidade aumentada, tens este site http://www.bryanchung.net/?p=227 que tem uma biblioteca com exemplos com a webcam. Qual é o problema em especifico que tens ao ligar a camara?

Na verdade a tecnologia arm está cada vez mais acessível, a NXP tem uns kits fantástico, tanto o mbed, para ser programado em visual basic se não me engano, muito simples de usar em conjunto com a plataforma .net da microsoft e depois tens os "kits" lpc expresso 1343, que têm incluido um processador arm numa placa de desenvolvimento e um programador usb e que custa só 26€ :o
http://pt.mouser.com/ProductDetail/NXP-Semiconductors/OM11048/?qs=sGAEpiMZZMvIGAkyPb0MlJWWc4XwPRSH

Isto é muito interessante. Vou investigar um pouco mais.


Já agora, seguindo as sugestões aqui dadas aumentei a performance e a suavidade dos movimentos. Assim que possa coloco novos videos a demonstrar a melhoria.
Dronetech BlogThe Scientist and the Geek

Offline msr

  • Mini Robot
  • *
  • Mensagens: 798
Re: Face tracker (aka weekend project)
« Responder #19 em: 16 de Março de 2010, 23:02 »
Acho que vale a pena acrescentar uma keyword a este tópico: DSP (Digital Signal Processors)

Penso que serão os sistemas mais utilizados neste tipo de coisas (exigentes a nivel de processamento), certo msaleiro?

Offline msaleiro

  • Mini Robot
  • *
  • Mensagens: 691
    • Blog
Re: Face tracker (aka weekend project)
« Responder #20 em: 17 de Março de 2010, 01:06 »
Os DSPs são muito usados para aplicações de processamento de sinal. No entanto não tenho visto muitas aplicações de visão em DSPs. É mais comum ver implementações em FPGAs e em computadores normais. No entanto em aplicações de processamento de audio, ou processamento de voz os DSPs já são muito usados. Geralmente quando os DSPs são usados na visão computacional é mais para fazer um pré processamento da imagem como por exemplo a aplicação de filtros de maneira que a imagem já chegue com determinadas características realçadas quando chega ao computador que realmente fará o reconhecimento de objectos. Alguns desses filtros podem ser por exemplo a conversão do espaço de cor de RGB para HSV ou LAB, a filtragem de ruído, alisamento da imagem, segmentação, realçamento de arestas, realçamento de contornos, etc. Mesmo assim as FPGAs para isso são ainda melhores que os DSPs porque nesse caso os filtros são aplicados mesmo por hardware e não por software. Se não me engano, há pelo menos uma equipa de futebol robótico nacional que utiliza FPGA para fazer uma segmentação das imagens obtidas pelas câmaras omnidireccionais.

Já agora, para quem não sabe, FPGA significa Field Programmable Gate Array. De uma forma simples, as FPGAs são circuitos integrados reconfiguráveis. Possuem milhares de transístores que podem ser ligados de diversas maneiras de forma a que o próprio circuito faça o que for pretendido sem ter k estar a correr nenhum código. Enquanto num microcontrolador se coloca um programa que é executado linha a linha, numa FPGA coloca-se um circuito combinatório ou sequencial. Daí que se possa por exemplo meter numa FPGA sistemas completos com processador de 32 bits, módulos de DSP, etc. As FPGAs podem ser essencialmente programadas em VHDL, Verilog ou por blocos, dependendo este último do fabricante e do software do fabricante. Também há quem as programe em C, mas é menos eficiente.

Resumindo, os DSPs e as FPGAs quando usados em visão computacional são mais usados no sentido de tratar a imagem de forma a melhorá-la ou a realçar determinadas características. Este tipo de tratamento geralmente é feito através de convoluções, que são operações que alguns DSPs conseguem fazer por hardware, sendo por isso bastante rápido. Após a imagem ser tratada, geralmente é necessário um computador para fazer o processo de reconhecimento de objectos/faces/etc. Neste caso os computadores são mais usados porque os métodos de reconhecimento não são apenas convoluções, mas sim uma série de condições que podem resultar na extracção de uma série de características que posteriormente são submetidas a novas condições. Neste caso os computadores normais são mais eficientes porque possuem maior velocidade de processamento e maior quantidade de memória para armazenamento de características que vão sendo extraídas das imagens.

Não sei se me fiz entender, mas espero k sim... é k cheguei agora a casa e tou com umas quantas "mines" em cima :P
msaleiro - Mário Saleiro
UAlg FCT-DEI / VisLab - Instituto de Sistemas e Robótica / eLab Hackerspace
http://thebitbangtheory.com

Offline Rebel

  • Mini Robot
  • *
  • Mensagens: 153
    • Raspberry Pi
Re: Face tracker (aka weekend project)
« Responder #21 em: 17 de Março de 2010, 10:28 »
Só para acrescentar mais umas coisitas sobre as FPGA's.
Trabalhei cerca de dois anos com FPGA's da Altera que permitiam ser configuradas com um Processador 16 bits, o Nios, que era por sua vez programado em C. Conforme o numero de portas da FPGA, era possível colocar lógica (And, Or, Nand Shift Register, Uart, etc) à volta do processador. Só posso dizer que são bichinhos bem poderosos... e caros ;)

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re: Face tracker (aka weekend project)
« Responder #22 em: 22 de Julho de 2010, 13:38 »
As possibilidades que estas aplicações nos dão são mesmo imensas, é só preciso ter imaginação.

Marvin, o código que deixei neste tópico pode-te dar uma ideia para centrares a face em relação à camara e também para evitar saltos nos movimentos dos servos.. estou a usar um low-pass filter deste género, quanto menor o valor do filtro mais tempo levará a chegar até à posição de destino:

Filtro = 0.01;
ValorDestino = ValorAntigo * (1.0 - Filtro) + ValorDestino * Filtro;

A PSEye é uma câmara barata, versátil, e de excelente qualidade, e ainda tem um microfone array para o qual estão a ser desenvolvidos drivers.. mas que ainda não consegui por nenhum a funcionar.

Não deixes o teu projecto "morrer"  ;)

« Última modificação: 22 de Julho de 2010, 14:55 por guibot »

Offline Marvin

  • Mini Robot
  • *
  • Mensagens: 677
    • The scientist and the geek
Re: Face tracker (aka weekend project)
« Responder #23 em: 22 de Julho de 2010, 14:32 »
Obrigado Guilherme! Vou implementar o teu filtro, embora na versão mais avançada isto já n aconteça (os saltos dos servos).

O problema do meu projecto foi falta de tempo, exames e volume de trabalho no escritorio não ajudaram.

Logo a noite vou tentar fazer um video c a nova versão, ainda só com uma camara.

Entretanto chegou a minha camara cctv wireless portanto em breve tambem vai haver novidades.
Dronetech BlogThe Scientist and the Geek

Offline eduardo_d

  • Mini Robot
  • *
  • Mensagens: 13
Re: Face tracker (aka weekend project)
« Responder #24 em: 25 de Julho de 2010, 19:15 »
Bom, n sei se ainda irá a tempo mas encontrei este link,
http://blog.aicookbook.com/2010/06/building-a-face-tracking-robot-headroid1-with-python-in-an-afternoon/

a programação foi feita em python, mas cm está td explicadinho n será dificil migrar para outras linguagens  :)

abr a tds