Código do Detector de Objetos Incluído

Código do Detector de Objetos CMSoft Disponível para Teste

 

Está disponível versão de teste do Detector de Objetos no repositório de código. Faça o download para avaliar as funções e capacidades de detecção. O vídeo abaixo mostra o estado atual do algoritmo detectando faces em uma webcam.

 

Esperamos comentários e sugestões de novas funcionalidades. A implementação foi colocada no namespace OpenCLTemplate.MachineLearning.

OpenCL FFT

OpenCL FFT

 

A Transformada Discreta de Fourier possui uma enorme variedade de aplicações, incluindo: análise espectral, compressão de dados, multiplicação de polinômios e cálculo de vida em fadiga remanescente de materiais.

CMSoft apresenta uma implementação do algoritmo de Transformada Rápida de Fourier (FFT), acelerado com utilização do OpenCL. Código-fonte está disponível para demonstrar os exemplos. Veja o vídeo abaixo e visitea página CMSoft OpenCL FFT.

 

 

 

OpenCLTemplate 1.133

 

Download OpenCLTemplate

 

Lista de Alterações

– Incluída Transformada Rápida de Fourier (FFT) em precisão simples e dupla no namespace OpenCLTemplate.FourierTransform.

Rotinas de Álgebra Linear Esparsa

Rotinas em OpenCL para Sistemas Lineares Esparsos

 

Uma demonstração das rotinas para solução de sistemas lineares esparsos está disponível para download. É utilizada a ferramenta de image2d para armazenar e recuperar os elementos a partir do Device do OpenCL e acelerar os cálculos, conforme mostrado abaixo:

 

 

Nesta demonstração, conseguiu-se uma aceleração de 37x, o que é um resultado muito interessante e que pode ser aplicado em várias áreas de computação científica. 

Código fonte do OpenCLTemplate aberto

Código-fonte do OpenCLTemplate Aberto

 

Estimados desenvolvedores, nós do CMSoft anunciamos com orgulho que tornamos OpenCLTemplate um projeto aberto disponível em http://code.google.com/p/opencltemplate/

Apreciamos toda ajuda na forma de programação, pedidos, detecção de bugs ou mesmo alterações cosméticas. 

Além disso, quaisquer dicas sobre a administração do repositório são muito bem-vindas.

Solver de Sistemas Lineares Esparsos

Solver de Sistemas Lineares Esparsos com OpenCL

 

Uma nova ferramenta, adequada para resolver sistemas lineares esparsos, foi disponibilizada no namespace OpenCLTemplate.LinearAlgebra.

Um tutorial demonstrando as funcionalidades básicas será postado assim que todos os membros CMSoft terminarem de testar a nova funfionalidade. A documentação XML está disponível. Sinta-se à vontade para utilizar e comentar. 

Além disso, as ferramentas para resolver equações diferenciais e construir isosuperfícies usando marching cubes foram movidas para um namespace mais adequado. Código fonte atualizado das demonstrações pode ser obtido nos links acima.

O vídeo abaixo mostra o que é possível fazer com o algoritmo Marching Cubes:

 

O vídeo abaixo mostra as funcionalidades do solver de equações diferenciais do OpenCLTemplate:

 

Alterações OpenCLTemplate 1.132

 

Download OpenCLTemplate

 

– Inclluído OpenCLTemplate.LinearAlgebra para solução de sistemas lineares esparsos positivos definidos;
– Solver de EDOs movido para o namespace OpenCLTemplate.DifferentialEquations;
– Algoritmo Marching Cubes movido para o namespace OpenCLTemplate.Isosurface.

Ideias OpenCL

Ideias OpenCL

 

Gostaríamos de lembrar que nós do CMSoft postamos esse tipo de informação em nossa seção novidades e que estamos abertos a sugestões e ideias de pesquisa. Também gostaríamos de mencionar que estamos pesquisando:

 

Para a próxima versão do OpenCLTemplate:

– Aprendizagem computacional com SVMs, detecção de face e objetos;
– Solução de sistemas lineares esparsos.

Já disponíveis para uso: (para exemplos visite OpenCL Resources):

– Reconstrução de isosuperfícies com Marching Cubes;
– Soluções numéricas de sistemas de equações diferenciais (EDO) com aceleração por OpenCL;
– Classificação usando Support Vector Machine.

Entre em contato.

Detecção de faces

Detecção de Faces em Tempo Real com Aceleração por GPU

 

Detecção de faces é o primeiro passo em muitas aplicações importantes como reconhecimento ou rastreamento de faces. Usando aceleração por GPU com o OpenCL é possível obter excelentes resultados extraindo rapidamente candidatos a face confiáveis a partir de um vídeo para utilizar como entrada no sistema de reconhecimento.

CMSoft traz uma amostra desse recurso, que será incluído na próxima versão do OpenCLTemplate.dll. Trata-se de um detector de objetos treinado com o MIT CBCL Face Database para reconhecer faces em vídeos gratuitamente.

Veja o vídeo abaixo para ter uma ideia da versão atual do algoritmo: 

 

Nota: O algoritmo não é Viola-Jones e não usa OpenCV.

Filtro de imagem criado em tempo de execução

Filtro de imagem criando o filtro em OpenCL em tempo de execução

 

O CMSoft tem recebido alguns emails perguntando como implementar filtros de imagens que não usem image_2d (não compatível com CPUs e algumas GPUs) e construir coisas básicas como inversão de cores.

Por isso, criamos um filtro de imagens simples em que o usuário pode compilar o filtro em tempo de execução e escolher qual device vai usar o código compilado. Visite o Estudo de Caso: filtros de imagens para obter código fonte. Todos os recursos podem ser vistos no vídeo abaixo:

É preferível ver o vídeo no YouTube HD para poder ler o código.

Artigos Científicos CMSoft

Artigos Científicos CMSoft

 

Considerando o fato de já existirem vários tópicos na seção de Tutoriais OpenCL, CMSoft irá se concentrar mais em desenvolver artigos científicos com referências e comparações. Como era de se esperar, praticamente não há trabalhos com OpenCL disponíveis. A maioria dos trabalhos com GPGPU foram desenvolvidos utilizando a tecnologia CUDA da NVidia, uma excelente ferramenta mas que só funciona com GPUs NVidia. Nós acreditamos que, apesar das otimizações específicas para CUDA, OpenCL deve ser a linguagem preferida para aplicativos comerciais que queiram utilizar o processamento da GPU por poder utilizar tanto GPUs NVidia como AMD.

Isto posto, estamos abertos para colaborar com o desenvolvimento de software relevante, acelerado por GPU, desde que haja um esforço combinado para publicar os resultados. Já testamos um solver de equações lineares esparsas com refinamentos sucessivos que fornece excelentes resultados. Temos a intenção de postar esse recurso no futuro próximo, ao lado de Support Vector Machine e o solver Runge-Kutta.