Sei sulla pagina 1di 23

Introducci

on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Introduccion al aprendizaje estadstico con Python


4to Encuentro Regional de Software Libre.
Talca, Octubre 2013.

Dr. Sergio Hernandez.


shernandez@ucm.cl
Facultad de Ciencias de la Ingeniera

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Introduccion

El termino Aprendizaje Estadstico se refiere a un coonjunto de


tecnicas y modelos para analizar conjuntos de datos complejos.

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Introduccion

El termino Aprendizaje Estadstico se refiere a un coonjunto de


tecnicas y modelos para analizar conjuntos de datos complejos.
Con la explosi
on de los datos grandes (a.k.a. Big Data), ha
resurgido el interes en utliizar estas tecnicas en problemas de minera
de datos con aplicaciones en marketing, finanzas, agricultura de
precisi
on as como otras areas donde se requiera alg
un proceso de
reconocimiento de patrones.

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Python para datos grandes

Big Data

Variedad

Dr. Sergio Hern


andez. shernandez@ucm.cl

Volumen

Velocidad

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Python para datos grandes


HadooPy

mrjob

Pydoop

Volumen

Big Data

Variedad

Velocidad

NoSQL

NumbaPro

HappyBase

PyCUDA

HDF5

Dr. Sergio Hern


andez. shernandez@ucm.cl

Cython

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

NumPy

NumPy es el coraz
on de de los paquetes de Python para realizar
computaci
on cientfica. Agrega la capacidad para modelar matrices como
arreglos N-dimensionales y realizar operaciones de algebra lineal sobre
ellos.

3
1
5

6
3
1

Aw = b

5 w1
12
2 w2 = 2
4
w3
10

# !/ usr / bin / python


import numpy as np
A = np . array ([[3 ,6 , -5] ,
[1 , -3 ,2] ,
[5 , -1 ,4]])
b = np . array ([12 , -2 ,10])
w = np . linalg . inv ( A ) . dot ( b )
print ( w )

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

SciPy y Scikit-Learn
SciPy Es un paquete de computaci
on cientfica que utiliza NumPy para
resolver problemas numericos en ingeniera y ciencias, tales como
optimizaci
on, integraci
on, calculo de valores propios, etc.
y = w t x + N (0, 2 )
n
X
E (w ) =
(yi w t xi )2
i=1

(X T X )w
= Xy
T

w
= (X X )

Xy

# !/ usr / bin / python


import numpy as np
from sklearn import linear_model
from sklearn . datasets . sa m p l e s _ g e n e r a t o r
import m a ke _r eg r es si on
X , y = ma ke _r e gr es si o n ( n_samples =100 ,
n_features =2 , n_informative =1 , noise
=50)
regr = linear_model . L i n e a r R e g r e ss i o n ()
regr . fit (X , y )

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

SciPy y Scikit-Learn

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Scikits

Existe una variedad de add-ons para SciPy denominados SciKits1 ,


los cuales se encuentran bajo licencias OSI (Open Source Initiative).

1 http://scikits.appspot.com/
Dr. Sergio Hern
andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Scikits

Existe una variedad de add-ons para SciPy denominados SciKits1 ,


los cuales se encuentran bajo licencias OSI (Open Source Initiative).
Las diferencias entre los SciKits con SciPy y NumPy son:
Los SciKits son m
as especficos que SciPy y NumPy.
Los paquetes incluidos en SciKits tienen licencias GPL (o similares),
las cuales son incompatibles con las licencias BSD de SciPy.
Los paquetes podran ser incluidos en la distribuci
on de SciPy pero
est
an a
un siendo desarrollados.

1 http://scikits.appspot.com/
Dr. Sergio Hern
andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Scikits

Existe una variedad de add-ons para SciPy denominados SciKits1 ,


los cuales se encuentran bajo licencias OSI (Open Source Initiative).
Las diferencias entre los SciKits con SciPy y NumPy son:
Los SciKits son m
as especficos que SciPy y NumPy.
Los paquetes incluidos en SciKits tienen licencias GPL (o similares),
las cuales son incompatibles con las licencias BSD de SciPy.
Los paquetes podran ser incluidos en la distribuci
on de SciPy pero
est
an a
un siendo desarrollados.

Algunos SciKits proveen metodos y modelos para aplicaciones en


ingeniera aeronautica, hidrologa, observaci
on de la tierra y
procesamiento de imagentes entre otros.

1 http://scikits.appspot.com/
Dr. Sergio Hern
andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

SciKit Image
Una de las ventajas de usar SciPy y los SciKits es que podemos
combinar las habilidades de cada paquete por separado de modo de
realizar aplicaciones mas complejas que las que incorpora el toolkit
original.

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

SciKit Image
Una de las ventajas de usar SciPy y los SciKits es que podemos
combinar las habilidades de cada paquete por separado de modo de
realizar aplicaciones mas complejas que las que incorpora el toolkit
original.
Un ejemplo es el SciKit-Image, el cual extiende SciPy incorporando
tecnicas de visi
on computacional y procesamiento de imagenes.
0

# !/ usr / bin / python


from skimage import data , io , filter

50
100
150
200
250
300
0

50 100 150 200 250 300 350

image = data . coins ()


edges = filter . sobel ( image )
io . imshow ( edges )

0
50
100
150
200
250
300
0

50 100 150 200 250 300 350

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Deteccion y conteo de personas en video (Trabajo de Tesis


de Arturo Rojas)
HOG2 (Histograma de Gradientes Orientados) es un poderoso
descriptor que permite detectar objetos en imagenes.
Input image

Histogram of Oriented Gradients

Input image

Histogram of Oriented Gradients

Input image

Histogram of Oriented Gradients

# !/ usr / bin / python


from skimage import data , io , filter
from skimage . feature import hog
from skimage import data , color , exposure
coll = io . I m ag eC ol l ec ti on ( data_dir + /*.
png )
rgb_image = coll [1]
image = color . rgb2gray ( rgb_image )
fd , hog_image = hog ( image , orientations =8 ,
p ix el s_ p er _c el l =(4 , 4) ,
c el ls _p e r_ bl oc k =(1 , 1) , visualise = True
)

Dalal, N. and Triggs, B., Histograms of Oriented Gradients for Human Detection IEEE Computer Society Conference on
Computer Vision and Dr.
Pattern
Recognition,
San Diego, CA, USA. Introducci
Sergio
Hern
andez.2005,
shernandez@ucm.cl
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Regresion logstica
Utilizando el descriptor HOG es posible entrenar un modelo estadstico
que pueda discriminar escenas que contienen personas de otras que no
contienen personas.
p = (w t x)
1
1 + exp(w t x)
y Bernoulli(p)
(w t x) =

# !/ usr / bin / python


from sklearn . linear_model import
LogisticRegression
from sklearn . preprocessing import
Stand ardScal er
X = loadtxt ( train . csv )
X = S tandardS caler () . fit_transform ( X
)
y = loadtxt ( target . csv )
C =1 e0
classifier = L o g i s t i c R e g r e s s i o n ( C =C ,
penalty = l1 , tol =0.001)
classifier . fit (X , y )
coef = classifier . coef_ . ravel ()
plt . imshow ( coef . reshape (68 ,66) ,
interpolation = nearest , cmap =
binary , vmax =1 , vmin =0)

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Regresion logstica
0
10
20
30
40
50
60
0

10

20

30

40

50

60

Figure : Coeficientes estimados con el modelo de regresi


on logstica
Dr. Sergio Hern
andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Regresion de Poisson
Aparte de detectar la presencia o no presencia de una persona, ahora se
requiere contar (estimar el n
umero) de personas en una escena. Para esto
hacemos uso de la distribuci
on de Poisson3 .
= exp(w t x)
y Poisson()

# !/ usr / bin / python


import numpy as np
import statsmodels . api as sm
from sklearn . preprocessing import
Stand ardScal er
X = loadtxt ( train . csv )
X = S tandardS caler () . fit_transform ( X
)
y = loadtxt ( target . csv )
count = sm . Poisson (X , y )
count . fit ( method = " newton " )

Chan, A. B., and N. Vasconcelos.Counting people with low-level features and Bayesian regression IEEE transactions on image
processing: a publication of the IEEE Signal Processing Society 21.4 (2012): 2160.
Dr. Sergio Hern
andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Estimacion de la madurez fenolica de la uva (Trabajo de


Tesis de David Andrade)
LDA (Latent Dirichlet Allocation) es un modelo generativo para datos
discretos que permite modelar distribuciones traslapadas
(intercambiables) de color 4 .
Dirichlet( )
zn Multinomial()
Dirichlet( )
wn p(wn |zn , )

# !/ usr / bin / python


import numpy
lambda = numpy . ones (10 , dtype = numpy .
float_ )
for d in xrange (1000) :
alpha = numpy . random . mtrand .
dirichlet ( lambda )
samples = numpy . random . multinomial
(100 , topicDist )
wn = numpy . zeros (25 , dtype = numpy .
int_ )
for t in xrange (10) :
wn += numpy . random . multinomial (
samples [ t ] , topics [ t ])

4 FONDEF IDeA CA12i10236 Estimacion de la Madurez Fenolica del la Uva basada en Imagenes de la Semilla
Dr. Sergio Hern
andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Latent Dirichlet Allocation

0
2
4
6
8
0

10

15

20

Figure : Ejemplo de un modelo


generativo para distribuciones de color.
En este ejemplo se consideran 10
t
opicos y una cuantizaci
on de 25 bins.

Dr. Sergio Hern


andez. shernandez@ucm.cl

Figure : Muestras aleatorias del modelo


generativo para distribuciones de color.
Cada fila representa una im
agen cuya
distribuci
on de color proviene de una
mezcla de distribuciones multinomiales.

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Conteo de personas en video


Clustering de im
agenes

Cuantizacion de imagenes
Imagen Original

Histograma, 256 bins

0.014

0.012

0.010

0.010

0.008

0.008

0.006

0.006

0.004

0.004
0.002

0.002
0.0000

Histograma, 128 bins

0.014

0.012

50

100

150

200

250

Histograma, 64 bins

0.014

300 0.0000

20

40

60

80

100

120

140

25

30

35

Histograma, 32 bins

0.012

0.012

0.010

0.010

0.008

0.008

0.006
0.006

0.004

0.004

0.002

0.002
0.0000

10

20

30

40

50

60

70 0.0000

10

15

20

Figure : Cuantizaciones de color

Figure : Imagen original de semillas de


uva
Dr. Sergio Hern
andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Python en la investigacion reproducible

Python permite crear un pipeline desde la generacion de datos y


extracci
on de caractersticas hasta los modelos estadsticos que se
utilizan para explicar los datos.

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Python en la investigacion reproducible

Python permite crear un pipeline desde la generacion de datos y


extracci
on de caractersticas hasta los modelos estadsticos que se
utilizan para explicar los datos.
A nivel de investigaci
on, esto permite reproducir los resultados
obtenidos por distintos cientficos y de esta manera validar que los
resultados son conmensurables.

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Introducci
on
Modelos estadsticos
Aplicaciones de aprendizaje estadstico en visi
on computacional
Conclusiones

Python en la investigacion reproducible

Python permite crear un pipeline desde la generacion de datos y


extracci
on de caractersticas hasta los modelos estadsticos que se
utilizan para explicar los datos.
A nivel de investigaci
on, esto permite reproducir los resultados
obtenidos por distintos cientficos y de esta manera validar que los
resultados son conmensurables.
https://github.com/sherna90/mlcode

Dr. Sergio Hern


andez. shernandez@ucm.cl

Introducci
on al aprendizaje estadstico con Python

Potrebbero piacerti anche