Mostrando postagens com marcador reconhecimento de padrões. Mostrar todas as postagens
Mostrando postagens com marcador reconhecimento de padrões. Mostrar todas as postagens

terça-feira, 12 de março de 2013

Olhar de gafanhoto evita que você bata o carro

Olhar de gafanhoto evita que você bata o carro: Os gafanhotos possuem uma forma de processamento das informações visuais extremamente rápida e incorporada em sua própria biologia.

Como muitas das principais inovações em tecnologia de sensoriamento e navegação, mais uma vez a natureza tem mostrado uma solução mais adequada que a abordagem tradicional.

Quando for possível modelar o sistema visual, e/ou de navegação, de animais mais complexos, como aves e mamíferos, talvez seja possível o desenvolvimento de sistemas com muito mais autonomia do que o que existe atualmente.

sexta-feira, 8 de março de 2013

Softwares gratuitos de análise estatística

Hoje vi este site: http://www.analyticbridge.com/forum/topics/list-of-free-statistical e achei que seria muito interessante difundir todo o trabalho desenvolvido para a elaboração de softwares estatísticos gratuitos.

Segue a lista de softwares em ordem alfabética.

A
ADaMsoft - Data mining, data management and reporting. Has web based features.
Ade4 - It contains Data Analysis functions to analyse Ecological and Environmental data in the framework of Euclidean Exploratory methods, hence the name ade4.
ADePT - Developed to automate and standardize the production of analytical reports.
ADMB - Non-linear statistical modelling.
AM  General stats package.
AnSWR - A software system for coordinating and conducting large-scale, team-based analysis projects that integrate qualitative and quantitative techniques.
Apophenia - General stats package but with more flexibility to be creative in model building.
Arc - Applied regression including computing and graphics.
Assistat - General stats package.

B
Bayesian Filtering Library - Bayesian software for use in advanced machine and robot control.
BiNGO - Bioinformatics software. Biological Network Gene Ontology.
BioEstat - Ecological statistics program (only available in Portuguese).
Biogeme - Stands for: Bierlaire's Optimization Toolbox for GEV (Generalized Extreme Value) Model Estimation.
Biomapper - A GIS-toolkit to model ecological niche and habitat suitability.
BKD - Bayesian Knowledge Discoverer
BlockTreat - A general frequentist Monte Carlo program for block and treatment tests, tests with matching, k-sample tests, and tests for independence.
BrightStat - General stats package.
BV4.1 - A procedure for the decomposition and seasonal adjustment of monthly and quarterly economic series. Used by the German Federal Statistical Office.

C
Calcugator - Calculator, plotting engine, and programming environment.
Caleydo - Bioinformatics data visualisation software.
CCOUNT - Designed for market research purposes, including: data cleaning, manipulation, cross tabulation and data analysis. Similar to SPSS.
CDC EZ-Text - Developed to assist researchers create, manage, and analyze semi-structured qualitative databases.
Chronux - Developed for the analysis of neural data.
Conc - Text concordance program.
Concorder - Text concordance program. Allows you to take given texts and find out the frequency of words.
Correlate -
CSPro - Census and Survey Processing System (CSPro) is a questionnaire-oriented statistical package for Windows.
Cytoscape - Bioinformatics software platform for visualizing molecular interaction networks and integrating these interactions with gene expression profiles and other state data.

D
DAP - Alternative to SAS.
Dataplot - General stats package. Designed for science and engineering.
DAVID - Bioinformatics software. Database for Annotation, Visualization and Integrated Discovery.
dChip - Bioinformatics software. dChip Software: Analysis and visualization of gene expression and SNP microarrays
Demetra - Time series package.
Dia - Diagram drawing program. Allows the drawing of entity relationship diagrams, UML diagrams, flowcharts, network diagrams, and many others.
Draco - Econometrics package with spreadsheets.

E
EASE - Bioinformatics software. Expression Analysis Systematic Explorer.
EasyReg Int. - Econometrics package.
EasySample - Simple sampling program.
EDGAR - Experimental design programs.
ELKI - Environment for developing KDD-applications supported by index-structures. Compares data mining algorithms.
EMMIX - Fortran software to fit mixture models.
Epi Info - Designed for epidemiologists and other public health and medical professionals.
Epidata - Epidemiology package.
EqPlot - Equation graph plotter.
ErmineJ - Bioinformatics software. Performs analyses of gene sets in expression microarray data or other genome-wide data that results in rankings of genes.
ESA - Event Structure Analysis (ESA) is an on-line Java program that helps you analyze sequential events.
ESS - Emacs Speaks Statistics. Add-on package for emacs text editors.
Esta+ - General (and simple) stats package.
Euler - Similar to Matlab.
EVE - Embedded Vector Editor. Vector graphics program.
Excellent Analytics - Excel plug-in that lets you import web analytics data from Google Analytics into a spreadsheet.
EzANOVA - Simple ANOVA program.

F
Factor - Simple factor analysis program.
Firebird - Relational database management system (RDBMS).
Fityk - Nonlinear least squares curve fitting.
Freemat - Similar to Matlab and IDL.

G
G Power - Power and sample size calculator.
G7 - Econometrics package. Allows the building and useage of data banks.
GATE - Text mining program. General Architecture for Text Engineering.
Gemma - Bioinformatics software. Database and software system for the meta-analysis of gene expression data.
GEMS - Bioinformatics software (online forms). Gene Expression Module Sampler.
GenePattern -Bioinformatics software. Genomic analysis platform that provides access to more than 125 tools for gene expression analysis, proteomics, SNP analysis and more.
GenMAPP - Bioinformatics software. Designed to visualize gene expression and other genomic data on maps representing biological pathways and groupings of genes.
GeoDa - Geospatial analysis and computation.
GGobi - Data visualisation.
Gist - Bioinformatics software. Contains software tools for support vector machine classification and for kernel principal components analysis.
Gnumeric - Spreadsheet program.
Gnuplot - Command driven graphing program.
GoMiner - Bioinformatics software. A tool for biological interpretation of 'omic' data, including data from gene expression microarrays.
Gostat - Bioinformatics software (online forms). Find statistically overrepresented Gene-Ontology (GO) terms within a group of genes.
Gretl - Stands for Gnu regression, econometrics and time-series library. Alternative to EViews. REVIEWED!!!
Grocer - An econometric toolbox for Scilab.
GUIDE - Multi-purpose machine learning algorithm for constructing classification and regression trees.

H
HLM - Hierarchical linear and nonlinear modelling.

I
IHMC CmapTools - Concept mapping program.
Instats - General stats package.
Interactive Statistical Unit -
Inverse Symbolic Calculator - An online form where the output is a list of possible sources for the number you enter (such as simple equations or well known constants).
IRRIStat - General stats package. Designed for analysis of agricultural field trials data.
IVEware - Imputation and Variance Estimation.

J
JAGS - Stands for just another Gibbs sampler. Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC).
jHepWork - Mathematics and statistics package.
JMulTi - Time series and econometrics package.

K
Kyplot - Graphs program.

L
Lisp-stat - General stats package with emphasis on graphics.
LISREL - Originally limited to structural equation modelling (SEM) but now has other functions.

M
MacAnova - General stats package.
MacSHAPA - Macintosh-based software environment that supports observational data analysis, including the analysis of video.
Matrixer - Econometrics package.
Matrix2png - Bioinformatics software. A simple program for making visualizations of microarray data and many other data types.
Matvec - Current capabilities range from matrix and vector manipulation to the analysis of linear and generalized linear mixed models.
Maxima - A computer algebra system. Mathematics program.
MicroConcord - Text concordance program.
MicrOsiris - Statistical and data management package.
Ministep - Constructs Rasch measures from simple rectangular data sets.
MINUIT - Physics analysis tool for function minimization.
Mondrian - Data visualisation.
MorePower - Statistical power calculator for hypothesis tests.
Mx - Matrix algebra interpreter and numerical optimizer for structural equation modelling and other types of statistical modelling of data.
MYSTAT - Free SYSTAT version for students.

N
NLTK - Text mining program. Natural Language Toolkit.
NORM - Multiple imputation of multivariate continuous data under a normal model.

O
Octave - Similar to Matlab.
Onto-Tools - Bioinformatics programs. Onto-Express, Onto-Compare, Onto-Design, Onto-Translate, Onto-Miner, Pathway-Express, Promoter-Express, nsSNPCounter, OE2GO, KUTE-BASE.
OpenBUGS - Bayesian inference using Gibbs sampling.
Open Code - A tool for coding qualitative data generated from text information such as interviews, observations or field notes.
OpenEpi - Epidemiology package.
OpenOffice - Open source alternative to Microsoft Office. Includes Calc, an alternative to Excel.
Openstat - General stats package.
Orange - Data mining through visual programming or Python scripting. Extensions for bioinformatics and text mining.

P
PAM -
PAMCOMP - Person-years And Mortality COMputation Program.
PAST - Statistics program for palaeontology.
PCP - Pattern Classification Program.
PINT - Power analysis IN Two-level designs (for determination of standard errors and optimal sample sizes in multilevel designs with 2 levels).
Ploticus - Graphs program.
PopTools - Population modelling program.
POSDEM - A program to choose between sampling plans based on the population frame.
PostgreSQL - Relational database management system (RDBMS).
PQRS - Stands for probabilities, quantiles and random samples.
Program Mark - Ecological statistics program. Advanced mark-recapture modelling.
PS - Power and sample size calculator.
PSPP - Alternative to SPSS.

Q
QCA - Qualitative Comparative Analysis is a special-purpose program designed to analyze quantified data from multiple cases.
QPL - Questionnaire Programming Language.
Quail - Quantitative analysis in Lisp.

R
R - Widely used alternative to SPlus.
R Commander - GUI interface for R.
RapidMiner - Data mining.
Red R - Visual programming interface for R.
Regress+ - Mathematical modelling for the Macintosh.
RMAexpress - Bioinformatics software. A standalone GUI program to compute gene expression summary values for Affymetrix Genechip data.
Rosetta - A rough set toolkit for data analysis / data mining.
Rule Discovery System - Data mining program.
Rundom Pro - General stats package with emphasis on resampling procedures.
Rweb - An online form that processes R commands.

S
|STAT - General stats package.
Sage - Mathematics software.
SalStat - General stats package designed for the analysis of science and psychology data.
SAM - Bioinformatics software. Sequence Alignment and Modeling System.
Scilab - Numerical computation.
Shogun - A large scale machine learning toolbox.
Simfit - Simulation, curve fitting, statistics, and plotting.
Simplex Method Tool - An online form that solves linear programming problems.
SimulME - A Java ME (J2ME) application with queuing calculator, Monte Carlo simulation and more. Compatible with Sony-Ericsson, Samsung, Motorola and other cell phones.
SL Gallery - Statistical distribution graphs and calculations.
SOCR - Stands for statistics online computational resource. General stats package.
SOFA Statistics - Statistics, analysis and reporting program.
Software for Permutation Methods: A Distance Function Approach
Sonar - Survey administration and data collection system.
SpreadCE - Spreadsheet program.
SSP (Smith's Statistical Package) - General stats package.
StatCalc - A Calculator that computes table values of 34 statistical distributions. It also computes moments, and many other statistics.
StatEasy - General stats package.
Statext - Statistics expressed in text (even the graphs).
Statibot - An interactive www-based expert system for basic statistical analysis.
Statist - General stats package.
Statistical Lab - R based general stats package.
Statistics 101 - Simulations / resampling methods.
STATPerl - General stats package based on Perl.
Stattucino - Web spreadsheets with data analysis functions.

T
TAMS - Text mining program. Text Analysis Mark-up System. Identifies themes in texts.
Tanagra - Data mining.
TELPACK - Teletraffic Analysis Package.
Tetrad - Search algorithms and statistical modelling.
TextStat - Text concordance program. A program for the analysis of texts.
TimesLab - Time series analysis program.
TMeV - Bioinformatics software. Normalized and filtered expression files can be analyzed using TIGR Multiexperiment Viewer (MeV).
TSW - Time series and econometrics package.
TWOMOK - Non-parametric scale analysis for two-level data (ecometrics).

U
UIMA - Text mining program. Unstructured Information Management Architecture.
Ultrafind - Text concordance program. Extremely fast text search.

V
VARBRUL - Designed to facilitate analysis of linguistic variables and social variables.
VisiCube - Data visualisation tool.
ViSta - Visual statistics system with work maps, guide maps and interactive graphics.
VStar - Data visualisation and analysis tool for astronomy.

W
Weft QDA - A tool to assist in the analysis of textual data such as interview transcripts, written texts and field notes.
Weka - Machine learning software written at the University of Waikato.
WinBUGS - Bayesian analysis using Markov chain Monte Carlo methods.
WinIDAMS - General stats package.
Winpepi - Epidemiology package.
WordNet - A large lexical database of English.

X
X-12-ARIMA - Seasonal adjustment software produced, distributed, and maintained by the US Census Bureau.
XDAT - Visualization and analysis of multidimensional data.
XL Statistics - A set of Microsoft Excel (ver 97+) workbooks for statistical analysis of data.
XL Toolbox - Data analysis add-on for Excel.
Xnumbers - Multi precision floating point computing and numerical methods for Excel.
XploRe - Interactive statistical methods and data exploration.
Xpro - Exact parametric inference.
Xtremes - Graphics and analysis program for extreme values.

Y
Yxilon - Statistical programming language.

Z
Zaitun Time Series - Time series software. Has the capability to deal with stock market data.
Zelig - Based on R. Automates various processes.

A fonte original, com os links de cada software está aqui: http://l-lists.com/en/lists/dz3a5t.html

quinta-feira, 21 de fevereiro de 2013

Câmera flexível e transparente faz fotos e interpreta gestos

Câmera flexível e transparente faz fotos e interpreta gestos: Imagine uma câmera sem componentes mecânicos, sem qualquer circuito eletrônico, transparente, fina e flexível como uma folha de plástico.

Para o sistema apresentado, fiquei curioso em saber como o reconhecimento de gestos é feito, porém é possível observar que os pesquisadores/desenvolvedores utilizam conectores USB ligados aos fotodiodos (como apresentado na imagem abaixo), então é dedutível que exista um computador que analisa e interpreta as imagens capturadas.


segunda-feira, 4 de fevereiro de 2013

Solução de mistério biológico impulsiona inteligência artificial

Como já deve ser de conhecimento, uma das áreas de conhecimento que mais me interessam é inteligência computacional, principalmente devido às possibilidades de aplicações em análise de dados e reconhecimento de padrões.

Uma das categorias mais conhecidas de algoritmos de reconhecimento de padrões são as redes neurais artificais (ver http://multisign.blogspot.com.br/search/label/redes%20neurais e http://multisign.blogspot.com.br/search/label/ica para mais informações) que consistem de modelos computacionais de estruturas neurais biológicas desenvolvidos para resolver um problema específico.

Por se tratarem de modelos baseados em sistemas biológicos, a evolução das redes neurais é dependente das novas descobertas em neurologia e biologia, como a apresentada a seguir.

Solução de mistério biológico impulsiona inteligência artificial: Uma descoberta associada à biologia e à teoria da evolução deverá ter um impacto direto nos algoritmos de inteligência artificial.

quarta-feira, 14 de novembro de 2012

Análise de dados com Pentaho

Esta semana eu conheci o Pentaho, um pacote de software, com uma versão livre e outra enterprise, completo para análise de dados.

O objetivo de sistemas como o Pentaho é fornecer toda a infraestrutura de software para armazenamento, cruzamento, filtragem, análise e processamento (matemático e estatístico) e visualização de dados com a finalidade de suportar tomadas de decisão por parte de gestores.

Os principais benefícios deste tipo de sistema é a capacidade de identificação de padrões e tendências em bases de dados e a possibilidade de se fazer predições fundamentadas nos dados já armazenados, como previsão de demandas, de crescimento, de lucro, de risco, etc... além de permitir também a identificação de padrões como perfis de clientes/usuários, padrões de comportamento (humano ou de um ambiente), potencial de fraude em processos ou transações, etc....

Já escrevi alguns posts sobre as técnicas de análise estatística utilizadas neste tipo de sistema:
Mas sei que os textos contidos neste blog sobre esse assunto deixam muito a desejar.

Assim, acho que vale citar dois artigos no portal IBM DeveloperWorks acerca de análise de dados, porém utilizando o software de análise estatística SPSS Modeler:


terça-feira, 16 de outubro de 2012

PlanetHunters.org - Caçadores de Planetas

Hoje conheci este site: http://www.planethunters.org/

Trata-se de um sistema de visualização de dados provenientes do telescópio espacial Kepler, mantido pela Universidade de Yale - Estados Unidos, onde qualquer usuário pode procurar por padrões em busca de novos planetas, estrelas ou outros corpos celestes.

A mais nova descoberta da astronomia é o planeta PH1 (o nome PH foi dado em homenagem ao site PlanetHunters), em que astrônomos amadores descobriram um planeta com quatro "sóis", leia mais aqui e aqui.

Projetos como este, que democratizam o conhecimento e o acesso à ciência promovem o estímo à pesquisa e têm o potencial de despertar o interesse científico em pessoas que de outra forma continuariam alheias às suas próprias capacidades.

terça-feira, 18 de setembro de 2012

Sistema anti-bêbado detecta embriaguez com câmera termal

Sistema anti-bêbado detecta embriaguez com câmera termal: Uma nova tecnologia de imageamento termal poderá ser usada para identificar os bêbados ainda no estacionamento, antes mesmo que eles peguem na direção.

Mais  uma aplicação de processamento de imagens que pode efetivamente ajudar a melhorar a sociedade, identificando pessoas embriagadas e inconsequentes através da análise de imagens térmicas.

Sistemas como este, que aplicam o conhecimento tecnológico para o bem comum deve ser sempre o foco das pesquisas ao redor do mundo, em especial em países como os pertencentes ao BRICS, para que crie-se consciência da importância da tecnologia e como os avanços podem ajudar a população como um todo e não apenas buscando formas de tirar benefícios pessoais através da tecnologia.

quarta-feira, 28 de julho de 2010

Sistema 3D de interação gestual

Hoje vi esta notícia e fiquei feliz com os avanços na área de interação homem-máquina por gestos.

Este sistema é semelhante, em certos aspectos ao SIRENE (meu projeto de mestrado), porém bem mais elaborado.

Semelhante ao SIRENE, este sistema não necessita de luvas, o que gera maior independência do sistema com relação às condições de uso. Imagine o usuário não poder usar o sistema porque sua luva está suja ou desbotada (inadequada), por exemplo.

Outro sistema, já comercial, está sendo usado com sucesso em hospitais. Em casos específicos, como ambientes estéreis (hospitais e laboratórios), é importante evitar situações de contaminação por parte dos profissionais, tocar objetos pode contaminar as mãos do usuário deste objeto, principalmente quando se trata de um objeto eletrônico, difícil de ser higienizado e usado por várias pessoas.

Deixo então um incentivo aos pesquisadores e desenvolvedores da área de interação gestual por meios sem contato, por exemplo visão computacional. Vejamos onde podemos atuar e colaborar com a melhoria daquilo que já existe empregando nossos conhecimentos.

sábado, 28 de novembro de 2009

Protótipo do SIRENE em funcionamento

Como todos sabem, estou em São Paulo - SP participando do Interaction South-America'09.

Eu tive dois artigos aceitos, sendo que um deles consiste no resumo do meu mestrado.

Para este artigo, eu preparei um protótipo do SIRENE e gerei este vídeo.



Apesar do vídeo ser curto, ele demorou alguns minutos para ser gerado, quem tiver interesse em saber como está o protótipo é só entrar em contato.

terça-feira, 1 de setembro de 2009

Classificadores estatísticos - 01

Eu acho que o MultiSign está muito parado por estes dias, então eu achei interessante fazer uma série de posts sobre classificadores estatísticos.

Para começar, vamos estudar o classificador de mínima distância ao centróide.

Imagine que você tem um conjunto de informações sobre elementos de diferentes classes, por exemplo peso e altura de diversas pessoas. E você não sabe, acerca de todos, quais destas pessoas são adultos, crianças ou bebês.

Vamos então desenvolver a solução deste problema.

Primeiramente vamos tomar as pessoas que nós já sabemos se são adultos, crianças ou bebês.

Conjunto dos bebês (1).

pessoa 1 - 0,5m e 4,3kg
pessoa 2 - 0,45m e 3,1kg
pessoa 3 - 0,6m e 5,0kg
pessoa 4 - 0,39m e 3,2kg
pessoa 5 - 0,44m e 3,8kg
pessoa 6 - 0,51m e 4,7kg

.
.
.

pessoa n - 0,55m e 5,3kg

Conjunto das crianças (2).

pessoa n + 1 - 1,5m e 34,3kg
pessoa n + 2 - 1,45m e 33,1kg
pessoa n + 3 - 1,6m e 45,0kg
pessoa n + 4 - 1,39m e 27,2kg
pessoa n + 5 - 1,44m e 33,8kg
pessoa n + 6 - 1,51m e 34,7kg

.
.
.

pessoa n + m - 1,55m e 26,3kg


Conjunto dos adultos (3).

pessoa n + m + 1 - 1,75m e 74,3kg
pessoa n + m + 2 - 1,81m e 93,1kg
pessoa n + m + 3 - 1,66m e 55,0kg
pessoa n + m + 4 - 1,73m e 67,2kg
pessoa n + m + 5 - 1,64m e 53,8kg
pessoa n + m + 6 - 1,61m e 60,7kg

.
.
.

pessoa n + m + p - 1,55m e 42,8kg


Depois de separar cada conjunto, nós calculamos a média do peso e da altura para cada conjunto.

Conjunto 1:
média(peso) - 4,8kg (mp1)
média(altura) - 0,56m (ma1)


Conjunto 2:
média(peso) - 28,1kg (mp2)
média(altura) - 1,57m (ma2)


Conjunto 3:
média(peso) - 68,7kg (mp3)
média(altura) - 1,64m (ma3)


Então, para cada pessoa do conjunto de dados que não se sabe se ela é adulto, criança ou bebê, basta usar o classificador pronto que nós implementamos:

Sendo p o peso da pessoa e a a sua altura,

se (p - mp1)² + (a - ma1)² < (p - mp2)² + (a - ma2)² e (p - mp1)² + (a - ma1)² < (p - mp3)² + (a - ma3)² então a pessoa é um bebê (pertence ao conjunto 1);

se (p - mp2)² + (a - ma2)² < (p - mp1)² + (a - ma1)² e (p - mp2)² + (a - ma2)² < (p - mp3)² + (a - ma3)² então a pessoa é uma criança (pertence ao conjunto 2);

se (p - mp3)² + (a - ma3)² < (p - mp1)² + (a - ma1)² e (p - mp3)² + (a - ma3)² < (p - mp2)² + (a - ma2)² então a pessoa é um adulto (pertence ao conjunto 3).


Essa análise, muito simples, foi apenas para apresentar o classificador estatístico mais simples de todos: o classificador de distância mínima ao centróide (DMC).

A depender do retorno que eu tenha por parte dos leitores, eu posso até colocar códigos em Scilab deste e de outros classificadores.

sexta-feira, 5 de dezembro de 2008

terça-feira, 7 de outubro de 2008

Dicas para concursos

Hoje vi este vídeo com dicas para concursos, em especial na parte de legislação.

Como os concursos públicos são muito visados atualmente (eu mesmo, talvez, preste concursos no futuro) e em todos os concursos têm muitas questões de legislação (até os engenheiros e cientistas da computação precisam fazer provas de decorar as leis), que eu particularmente tenho problemas pois minha memória não vale muito, eu achei que seria interessante fazer este post.



Pois é, quem for fazer concursos deve estudar 2 vezes muito:

1a. - Para passar no concurso.

2a. - Para aprender o necessário e desempenhar suas funções da melhor forma possível.

quinta-feira, 25 de setembro de 2008

Momentos centrados

Este é o primeiro post que faço sobre minhas pesquisas acerca do meu mestrado.

Para refrescar a memória dos que já sabem do que se trata o meu mestrado e para informar os leitores que vieram depois que parei de escrever sobre estas pesquisas:

Meu projeto de mestrado consiste em desenvolver um sistema de reconhecimento automático da Libras (Língua de Sinais Brasileira).

Este projeto tem as seguintes etapas:
  1. Aquisição da(s) imagem(ns) por uma webcam;
  2. Segmentação do objeto de interesse (mão);
  3. Extração de atributos da imagem;
  4. Classificação da imagem de acordo com os atributos.
Pois bem, como já coloquei em posts anteriores, a parte da segmentação está funcionando bem e eu já tenho os classificadores implementados (fiz-os na disciplina de reconhecimento de padrões).

Agora faltava apenas a parte de extração de atributos, mas eu estava estudando o livro de reconhecimento de padrões adotado na disciplina (quem quiser saber qual é o livro, pode pedir em comentário(s)) e vi algo sobre momentos centrados, e vi também que estes momentos são atributos extraídos dos objetos presentes em imagens para classificá-los.

Por fim, achei que seria interessante falar sobre os momentos centrados.

Os momentos centrados são provenientes da mecância clássica, pois consistem em momentos baseados no centro de massa dos corpos (objetos).

A equação abaixo mostra como são calculados os momentos centrados:
Em que f(x,y) é a imagem. Os termos p e q são ordens do momento, como fazemos em estatística nos momentos de 1ª (média), 2ª (variância), 3ª (curtosis), 4ª, etc.... ordem; podemos observar que estes momentos podem ser escritos até como termos de esperança matemática (olhe aqui).

Os centros de massa dos objetos (corpos) são dados pela equação abaixo:
Estes momentos centrados são descritores muito úteis, pois são invariantes a translação dos objetos, porém, observa-se que estes momentos são dependentes à rotação.

Para tornar obter descritores indendentes tanto a translação e a rotação, um pesquisador chamado M. Hu propôs as seguintes combinações dos momentos, gerando novas grandezas:


Com isto fecho o que espero ser pelo menos o material para minha qualificação de mestrado.

sexta-feira, 19 de setembro de 2008

OPP - Isto é engenharia social!

Hoje vi este site e tomei conhecimento do OPP (Open Prosthetics Project) que é um projeto de desenvolvimento tecnológico open-source.

O foco deste projeto é desenvolver prótestes artificiais (braços e pernas, por exemplo) em um modelo aberto e colaborativo, como já existe com o software livre.

A idéia é cada um colaborar com o que puder, seja doações financeiras ou conhecimentos e/ou recursos em engenharia, medicina, computação, marketing, etc....

Como o modelo de desenvolvimento é aberto, toda a informação desenvolvida está (e estará) disponível para qualquer pessoa no planeta a distância de um clique do mouse.

Como o modelo de desenvolvimento é colaborativo, as pessoas envolvidas poderão trocar experiências e enriquecer cada vez mais as próteses, tornando-as mais eficazes e eficientes (caso alguém queira saber a diferença entre eficácia e eficiência, é só fazer um comentário perguntando), além de baratear o custo para o usuário final.

O próprio fundador do OPP perdeu sua mão na Guerra do Iraque e foi isto que o motivou a criar o projeto.

Por fim, convido a todos os leitores do MultiSign que ao menos conheçam o trabalho que está sendo desenvolvido, é só clicar aqui.

sexta-feira, 5 de setembro de 2008

Conversa sobre redes neurais

Tenho um professor aqui na UFC que lenciona a disciplina de ICA (Inteligência Computacional Aplicada), dentre outras.

Este professor é especialista em redes neurais e sempre procura transmitir o possível de sua experiência aos alunos.

Aqui, neste post, pretendo fazer o mesmo: compartilhar um pouco das minhas experiências com redes neurais, em especial a MLP (Multi-Layer Perceptron).

Começando, digo que redes neurais são aproximadores de funções de um espaço n-dimensional em um espaço m-dimensional.

O espaço n-dimensional (domínio da função) é o espaço de entrada da rede e o m-dimensional (contra-domínio da função) é a saída da rede.

Por exemplo, para a identificação de um sistema elétrico, vamos supor que a entrada da rede seja tensão, corrente e impedância e a saída é uma de 3 classes de sistemas (predominantemente resistivo, capacitivo ou indutivo). Neste caso para cada elemento (V, I, Z) de entrada temos uma saída (S1, S2, S3) associada. A saída pode ser discreta ou contínua, no exemplo apresentado a saída pode ser a que classe pertence o sistema ou o grau de presença de cada tipo de elemento.

Uma aplicação interessante é a previsão de séries temporais, em que a rede neural "prevê o futuro" com base no passado. Neste caso, a entrada da rede podem ser n valores assumidos pela função no passado e a saída os m valores futuros. Para se prever o próximo elemento de uma função, pode-se por exemplo tomar 10 elementos anteriores e extimar o próximo a partir deles.

Limitando-nos as redes supervisionadas, dentre as quais está a MLP, a questão de aplicar a rede neural é o seguinte:
  1. Definir o problema e seus parâmetros (entrada(s) e saída(s));
  2. Projetar a arquitetura da rede neural, no caso da MLP consiste em definir os parâmetros da rede (taxa de aprendizagem), quantidade de camadas e número de neurônios por camada;
  3. Tomar dados conhecidos do problema, ou seja montar um conjunto de dados conhecido para o treinamento da rede neural, com as entradas e saídas respectivas;
  4. Realizar o treinamento da rede, em que para cada entrada é apresentada a saída desejada e assim a rede vai se adaptando ao problema;
  5. Tomar novos dados para testar (validar) a rede neural, os dados de treinamento não podem estar presentes na validação da rede neural.
Algumas dicas para o treinamento da rede neural:
  • Usar funções de ativação suaves;
  • Gerar valores de erro grandes, isto acelera a aprendizagem;
  • Usar taxas de aprendizagem baixas (da ordem de 0,001) para que a rede neural possa ajustar-se com maior precisão à função que está sendo mapeada;
  • Explorar a solução das redes neurais mais simples, começando sem camada oculta, depois com 1 camada oculta e por fim 2 camadas ocultas.

Acho que isto é tudo por enquanto. Depois faço novas postagens sobre redes neurais, se possível mais técnicas

E para fechar, o Scilab tem toolboxes de várias ferramentas que podem ser de grande ajuda no projeto de redes neurais.

segunda-feira, 4 de agosto de 2008

Algoritmos Genéticos

Para começar o período letivo 2008.2, o 1º post será sobre o assunto que deve ser também o primeiro da disciplina de ICA: Algoritmos Genéticos.

O princípio dos algoritmos genéticos (ag's) é baseado na Teoria da Evolução (biologia).

A idéia é a seguinte: primeiro deve-se analisar qual o problema e desenvolver uma solução representada por um vetor de numéros, preferencialmente binários. Depois disto, criam-se várias soluções (vetores de números binários) aleatoriamente (o conjunto de soluções denomina-se população e cada solução é denominada indivíduo), cada um destes indivíduos é então testado e atribui-se um grau de "adaptabilidade", que corresponde a quanto esta solução (indivíduo) satisfaz o problema. A partir da adaptabilidade, o indivíduo terá uma probabilidade de "cruzar" com outro indivíduo, quanto maior a adaptabilidade maior a probabilidade do indivíduo "cruzar".
O cruzamento entre indivíduos ocorre da seguinte forma: como cada indivíduo corresponde a um vetor (de números binários), toma-se um ponto aleatório neste vetor e faz-se um crossing-over, em que serão gerados 2 novos indivíduos sendo um com o começo dos "genes" de um indivíduo anterior e o final dos "genes" do outro indivíduo.

Para ilustra o problema, tomemos o seguinte problema:
Tem-se uma sala que tem N lâmpadas e deseja-se determinar quais devem ficar acesas para melhor iluminar o ambiente com o menor gasto de energia (ag's são muito usados em problemas de otimização, como este).

{Fazendo N = 10}

Cada solução corresponde a um vetor de 10 posições: s = [l0 l1 l2 l3 l4 l5 l6 l7 l8 l9] em que cada posição representa o status de uma lâmpada (0 -> apagada e 1 -> acesa).

Cria-se agora uma população de soluções, por exemplo:
s1 = [0 1 1 0 0 0 1 1 1 1]
s2 = [0 1 0 0 1 1 0 1 1 0]
s3 = [1 1 0 1 1 0 0 0 1 0]
s4 = [0 0 0 0 1 1 1 1 1 0]

Para cada solução, avalia-se quão bem o ambiente é iluminado e quanto de energia é gasto de modo a determinar a adaptabilidade de cada indivíduo. Suponto que chegue em:

adapt(s1) = 30%
adapt(s2) = 60%
adapt(s3) = 70%
adapt(s4) = 10%

Então cada indivíduo terá a probabilidade de "cruzar".

Fazendo o cruzamento dos indivíduos s1 e s3:
s1= [0 1 1 0 0 0 1 1 1 1] e s3 = [1 1 0 1 1 0 0 0 1 0]

Determina-se um ponto aleatoriamente para ocorrer o crossing-over, por exemplo 6.
s1' = [s1[0] s1[1] s1[2] s1[3] s1[4] s1[5] s3[6] s3[7] s3[8] s3[9]]
s1' = [0 1 1 0 0 0 0 0 1 0]
s2' = [s3[0] s3[1] s3[2] s3[3] s3[4] s3[5] s1[6] s1[7] s1[8] s1[9]]
s2' = [1 1 0 1 1 0 1 1 1 1]

São calculadas as adaptabilidades dos novos indivíduos e o processo é repetido até encontrar-se um indivíduo que satisfaça uma "adaptabilidade mínima".

A forma abordada é a mais simples, porém o algoritmo pode ficar complexo se forem definidos vários pontos de crossing-over, se o problema não tiver solução de natureza binária, se forem inseridas técnicas de mutação caso o algoritmo não esteja fornecendo bons resultados, enfim: pode-se complicar do jeito que quiser.

quinta-feira, 22 de maio de 2008

Sistemas de classificação

Este semestre estou fazendo a disciplina de Reconhecimento de Padrões. Nesta disciplina estudamos basicamente formas de classificação de dados.

Um sistema de reconhecimento de padrões segue a seguinte ordem:


Informações sobre as etapas:
  1. Aquisição da informação:
    Esta etapa consiste em reconhecer o problema e capturar informações sobre este, por exemplo, em um sistema de reconhecimento de padrões em áudio, o problema é reconhecer algo no som, então a informação aquisitada será o áudio por meio de um microfone.

  2. Extração de atributos:
    O sinal puro, como um sinal de áudio, é difícil de ser tratado pois existe muita informação nele, e muita desta informação é desnecessária e redundante, então o sinal deve ser tratado de forma a fornecer informações úteis.

  3. Pré-processamento (optativo):
    Como a extração dos atributos pode fornecer informações ruidosas ou redundantes (principalmente em sistemas onde a extração de atributos é automática), é interessante aplicar técnicas de eliminação de redundância e filtragem sobre as informações relativas aos atributos do sinal capturado.

  4. Classificação:
    A classificação consiste em determinar qual a classe que gerou o sinal capturado, em um sistema de reconhecimento de áudio (voz humana), este reconhecimento pode definir a pessoa que está falando, o que a pessoa está falando ou, até mesmo, o estado emocional da pessoa que está falando.
As classes devem ser conhecidas a priori e o classificador é projetado em cima destas classes e de como são os dados que elas geram.

terça-feira, 13 de maio de 2008

Projeto de Biometria Open-Source

Hoje vi um artigo sobre um projeto de reconhecimento facial open-source, o Malic.

Como este artigo está sendo bem divulgado, vou apenas fazer uma análise sintética do sistema.

O aplicativo foi desenvolvido usando OpenCV e outra biblioteca que não conheço (Malib).

O Malic tem as seguintes etapas:
  1. O usuário pôe-se frente a câmera e marca os pontos característicos em seu rosto (cantos da boca, olhos, nariz, etc...);
  2. Estes pontos são salvos em um arquivo;
  3. A fase de reconhecimento consiste em aplicar um filtro de gabor para reconhecer a face.

Para finalizar, gostaria de parabenizar a iniciativa, pois projetos desta natureza são raros em software livre.

quarta-feira, 2 de abril de 2008

Segmentação neural das mãos

Ontem eu fechei um algoritmo de segmentação de pele usando uma rede neural muito interessante: a rede SOM.

Segue o vídeo que fiz.


Neste caso, basta separar o espaço de cores em 2 clusters: fundo e objeto. O que mais chama a atenção é a fase inicial em que observa-se a aprendizagem da rede.

quinta-feira, 6 de março de 2008

Resultados da segmentação de pele

Como os resultados obtidos não estavam satisfatórios, decidi por fazer uma análise das imagens que tenho. O resultado a seguir foi muito promissor.
Porém a maioria dos resultados não foi como o esperado, como o exemplo abaixo.
Neste caso, o fundo está no mesmo padrão da pele e existem pontos na pele que não estão incorporados.

Os valores de limiar obtidos:
limCbMax = 165;
limCbMin = 120;
limCrMax = 145;
limCrMin = 115;