Posts Tagged ‘Ferramentas’

Realidade Aumentada – Semana Acadêmica Sociesc 2011

Buenas,

Esta semana aconteceu um evento na Sociesc que foi a semana acadêmica de computação, com vários mini-cursos e palestras da área. Ano passado participei da semana acadêmica da Sociesc com uma palestra sobre Domain Driven Design e um Coding Dojo em c#, este ano participei com um mini-curso de realidade aumentada.

O objetivo do mini-curso era fazer uma introdução à realidade aumentada, situando o pessoal no que já existe, nas novas tendências, mercado e as tecnologias envolvidas. A parte prática dividi em duas etapas:

1. Desenvolvimento de um aplicativo para Android utilizando realidade aumentada, integrando com a API de localização interativa Wikitude;
2. Modelagem de objetos 3D no SketchUp e visualização do mesmo com realidade aumentada utilizando uma webcam;

Toda parte prática foi efetuada por mim em um computador cuja imagem estava sendo projetada em um telão, para o pessoal ir acompanhando e fazendo em seus computadores. Mas para facilitar que ninguém se perdesse, durante o mini-curso, ou mesmo para fazer em casa eu criei um tutorial com as atividades. O tutorial e a apresentação estão a seguir:

Outro ponto importante para quem quiser fazer em casa é ter os aplicativos e saber de onde baixar.

Desenvolvimento para Android:

O Motodev é o eclipse com todos os plugins, se assim podemos dizer, prontos para desenvolvimento para Android. Basta instalar o Motodev, configurar o caminho do Android no primeiro acesso e já está pronto para uso, simples e fácil. Importante: É necessário executar o SDK Manager do Android e instalar a versão do sistema operacional que irá trabalhar, a sugestão deste tutorial foi a versão 2.1, mas poderia ser utilizada uma mais recente.
Todo ambiente pode ser feito no Windows, Linux ou Mac e não precisa pagar nada por nenhum dos aplicativos acima citados.
Embora o Motodev seja da Motorola, ele pode ser utilizado tranquilamente para qualquer dispositivo Android.

Modelagem 3D com SketchUp:

O plugin da Ar-media é pago, porém a versão trial pode ser utilizada para conhecer os recursos disponíveis. O custo dela atualmente é de trezentos euros e só funciona em Windows e Mac.

Para quem desejar exportar do SketchUp para um dispositivo móvel, é necessário exportar para extensão OBJ. A versão PRO do SketchUp já efetua exportação, mas quem tem a versão grátis, pode utilizar o plugin ObjExporter para isto. Basta descompactá-lo no diretório plugins do SketchUp para que apareça na brra de menu. Depois de exportado basta salvar no dispositivo móvel e visualizá-lo com um aplicativo específico para leitura de OBJ e visualização no formato realidade aumentada. Uma sugestão é o projeto Andar para Android, ele pode ser instalado direto pelo market. O aplicativo Andar Model Viewer permite selecionar um arquivo .obj diretamente do cartão de memória para visualização com realidade aumentada utilizando o marcador do projeto Andar.

Existiram vários vídeos durante a apresentação, cujos links seguem dentro da própria apresentação, porém para facilitar coloco abaixo para não precisar digitar no navegador.

É isso aí pessoal! Vou fazer um próximo post com os bastidores e mais detalhes do mini-curso.

Abrs a todos,

Lorival

“Não há fatos eternos, como não há verdades absolutas”. Friedrich Nietzsche

Publicação Artigo Científico – Redes Neurais Artificiais

Olá a todos,

Depois de um bom tempo sem alterar nada no Blog eu voltei para tentar escrever um pouco e compartilhar experiências.

Desta vez estou postando um artigo publicado ano passado no  IADIS Multi Conference nn Computer Science and Information System 2010 que aconteceu em Freiburg, Alemanha.

O objetivo do artigo é apresentar uma solução, usando redes neurais artificiais (uma das áreas da inteligência computacional), que consegue prever com 24 horas de antecedência quando ocorrerá cheia no rio Itajaí Açu. E foi feito junto com o Professor Paulo Bousfield.

Antes de explicar um pouco sobre o projeto gostaria de adiantar que a solução consegue prever com 92% de acerto, o que é um valor bem alto para um sistema “inteligênte”.

O Rio Itajaí Açu possuí vários afluentes, sendo que alguns deles possuem estações onde pessoas especializadas medem diariamente o nível de chuva em milímitros. Estas mesmas pessoas medem diariamente o nível do rio lá no final, para saber sua profundidade e quanto “subiu” de um dia para o outro.

As aferições são feitas sempre pela manhã e ao final da tarde, então todo dia sabemos:

  • Quanto choveu em milímitros nos afluentes do rio;
  • Profundidade do rio;

Meu objetivo era criar uma rede neural que pudesse generalizar estas informações da seguinte forma:

  • Entrada: Aferições do dia de hoje em relação a quantidade de chuva;
  • Saída: Profundidade do rio 24 horas depois;

Para isto eu tive várias dificuldades. Abaixo segue os procedimentos, resumidos, que eu fiz para chegar neste resultado.

Primeira etapa: gerar uma tabela, no excel mesmo, com todas as aferições de chuva.

Começamos com a primeira dificuldade, seria fácil se o histórico não tivesse em formato ASCII em um arquivo texto tabulado. Eram várias estações, 21 para ser mais preciso, e eu não queria ficar perdendo tempo ajustando/importando manualmente no excel.

Além disso eu precisava que esta tabela fosse, na verdade, uma matriz com os dados de entrada e saída fosse, que seria a profundidade do rio no dia seguinte. A maior dificulade de trabalhar com redes neurais não é gerar a rede, mas sim tratar os dados de forma que ela possa generalizá-lo.

Criei um software em C# que lia estes arquivos ASCII e gerava esta matriz…. foram 4 horas de trabalho, mas ainda assim acredito que ganhei muito tempo. Se fosse fazer manualmente, além de uma LER, eu demoraria umas 20h.

Com a tabela em mãos vamos para a segunda etapa: Criar uma rede que generalize estas informações. Em outra oportunidade irei detalhar um pouco mais sobre redes neurais, mas de forma resumida, precisamos ensinar a rede, através de técnicas e métodos, a reconhecer padrões dentro de um determinado cenário.

Neste caso tinhamos vários uma quantidade X de informações. Nós ensinávamos a rede com uma porcentagem desta quantidade, refinava com outra e testava com outra. Ou seja, os testes finais eram com informações que a rede nunca tinha visto antes. No artigo vemos a tabela com estas informações.

A ferramenta utilizada para isto foi o MatLab 2009 com seu excelente Wizard.. hehehehe.

Eu criei 15 arquiteturas de redes diferentes, testando cada uma delas com as entradas e avaliando as saídas através de progressões matemáticas.

Aqui chegamos a segunda dificuldade. A rede não queria generalizar. Não passava de 70% de acerto. Então o Paulo Bausfield teve uma excelente idéia: “Vamos dividir todos os números pelo maior deles”. Ótimo agora todos os números ficaram entre 0 e 1 e a rede tinha mais facilidade de generalização assim. A consequência teria que ser converter o valor novamente ao final de todo processo.

Foram mais 15 redes agora com os dados em forma de 0 e 1.

No artigo vemos em negrito a arquitetura que teve maior rendimento. Ao final chegamos aos seguintes dados:

  • Utilizamos 70% do histórico para treinar a rede;
  • Utilizamos 15% para validação e refinamento;
  • Utilizamos 15% para testes finais;
  • No treinamento e validação a rede chegou a 93% de generalização;
  • Nos testes finais a rede chegou a 92% de generalização, ou seja, acerto.
  • A arquitetura da rede era dividida em 3 camadas:
    • Camada entrada: 21 neurônios, um para cada estação;
    • Camada intermediária (hidden): 20 neurônios, escolhida através de testes;
    • Camada saída: 1 neurôno: resultado da profundidade do rio.

Mas ainda tinha uma última etapa: Criar uma interface em Matlab para possibilitar o usuário utilizar a rede, ou seja, digitar quanto choveu HOJE e ver como estará o rio AMANHÃ.

Esta tive uma dificuldade, que foi encotrar material de utilização, em forma de programação, da rede construída na ferramenta. Ao final consegui fazer a tela e deixá-la funcionando. O ideal seria evoluí-la um pouco mais, mas já estava funcional.

Por fim enviei para o professor a solução em Matlab, a tabela com o resultado dos testes de cada arquitetura e uma imagem ilustrativa da rede, estas informações podem ser vistas no artigo.

O artigo foi feito entre janeiro e fevereiro de 2010 e apresentado em Julho do mesmo ano pelo professor. Infelizmente não consegui recurso financeiro para ir para lá.

Gostei bastante de fazer este artigo, principalmente pelo desafio de algo novo. É sempre empolgante. Seria melhor se fosse possível tirar um tempo durante o dia para fazer isto e não nas madrugadas regadas a café e biscoito =)

Abaixo segue o artigo:

É isso aí, outros virão assim que possível. Escrevi mais dois sozinho, mas tenho que publica-los ainda… hehehehe

Abrs,

“Se eu vi mais longe, foi por estar de pé sobre ombros de gigantes” Isaac Newton

Desenvolvedor de software, amante pela tecnologia, empreendedor, eclético em sistemas operacionais, analista de sistemas, entusiasta em inteligência artificial, absurdamente ocupado, arquiteto de software , está sempre envolvido em projetos, consultor , adora ir em eventos de tecnologia e empreendedorismo. Desenvolve para PC e Web. Iniciou uma nova jornada de desenvolvimento e estudos em Android e IOS.
Calendário
February 2012
M T W T F S S
« Nov    
 12345
6789101112
13141516171819
20212223242526
272829  
Nuvem de tags
Total de visitas até ontem
@lorivalsc

Posting tweet...

Powered by Twitter Tools

Biblioteca
Shelfari: Book reviews on your book blog