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:
- Java SDK (JDK): http://www.oracle.com/technetwork/java/javase/downloads/index.html
- Motodev Studio for Android: http://developer.motorola.com/docstools/motodevstudio/download/
- Android SDK: http://developer.android.com/sdk/index.html
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:
- SketchUp 7 ou 8, não precisa ter a versão PRO: http://sketchup.google.com/
- Ar-media plugin for SketchUp: http://www.inglobetechnologies.com/en/new_products/arplugin_su/info.php
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.
- Introdução: http://www.youtube.com/watch?v=JDN_ZN0XEow
- Exemplos de RA: http://www.youtube.com/watch?v=P9KPJlA5yds e http://www.youtube.com/watch?v=hXtq1qBMLIw
- Exemplos de Wikitude: http://www.youtube.com/watch?v=g-0cuqeUvCQ e http://www.youtube.com/watch?v=hAcAHgUge-8&feature=related
- Encerramento: http://www.youtube.com/watch?v=gHNBS5NJxHk
- Outros: http://www.youtube.com/watch?v=yCEHIkJanm4
É 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