El documento introduce conceptos de aprendizaje estadístico con Python, incluyendo NumPy, SciPy y Scikit-Learn. Luego describe aplicaciones como detección y conteo de personas en video usando histogramas de gradientes orientados (HOG) y modelos estadísticos como regresión logística y de Poisson. Finalmente, concluye destacando la habilidad de combinar paquetes de Python para crear aplicaciones complejas de procesamiento de imágenes.
El uso de Python en la Ingenieria Química - Charla CompletaCAChemE
Diapositivas para la charla completa:
El uso de Python en Ingeniería Química - PyConES 2013
Video en: http://www.youtube.com/watch?v=AGGaqjn9GuI
En la conferencia de Python nacional (PyConES) que se celebró en Madrid se propuso la introducción teórica y resolución de ejemplos mediante Python de problemas clásicos presentes en ingenierías.
La resolución de ecuaciones diferenciales parciales (EDPs) mediante métodos numéricos permite obtener soluciones a problemas típicos presentes en diferentes fenómenos físicos como la propagación del sonido o del calor, la electrostática, la electrodinámica, la dinámica de fluidos, la elasticidad, etc.
Programas de modelado algebraico permiten la resolución de diferentes problemas que van desde la selección óptima de equipos y recursos en sector industrial químico, a la gestión logística de una empresa genérica.
Resolución de ecuaciones EDO (ecuación diferencial ordinaria) para el diseño de reactores químicos.
Se introducen así Python y sus librerías con el objetivo de mostrar su potencial actual.
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
Una breve descripcion de python, la POO y su uso en ingenieria. Esta presentacion minimiza un curso de 4 meses en una sola clase.
A brief description of python and the OOP for engineering applications, it minimized a course of python from 4 months to just one class. From Corrientes to the world
El uso de Python en la Ingenieria Química - Charla CompletaCAChemE
Diapositivas para la charla completa:
El uso de Python en Ingeniería Química - PyConES 2013
Video en: http://www.youtube.com/watch?v=AGGaqjn9GuI
En la conferencia de Python nacional (PyConES) que se celebró en Madrid se propuso la introducción teórica y resolución de ejemplos mediante Python de problemas clásicos presentes en ingenierías.
La resolución de ecuaciones diferenciales parciales (EDPs) mediante métodos numéricos permite obtener soluciones a problemas típicos presentes en diferentes fenómenos físicos como la propagación del sonido o del calor, la electrostática, la electrodinámica, la dinámica de fluidos, la elasticidad, etc.
Programas de modelado algebraico permiten la resolución de diferentes problemas que van desde la selección óptima de equipos y recursos en sector industrial químico, a la gestión logística de una empresa genérica.
Resolución de ecuaciones EDO (ecuación diferencial ordinaria) para el diseño de reactores químicos.
Se introducen así Python y sus librerías con el objetivo de mostrar su potencial actual.
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
Una breve descripcion de python, la POO y su uso en ingenieria. Esta presentacion minimiza un curso de 4 meses en una sola clase.
A brief description of python and the OOP for engineering applications, it minimized a course of python from 4 months to just one class. From Corrientes to the world
Transparencias a utilizar en la presentación del Trabajo de Fin de Máster en la facultad de Informática de la Universidad del País Vasco en el Máster de Ingeniería Computacional y Sistemas Inteligentes.
Presentacion II jornadas de Lógica, Computación e Inteligencia ArtificialJoaquín Borrego-Díaz
Estas son las transparencias que usé para presentar el doctorado en las II Jornadas de Lógica, Computación e Inteligencia Artificial, celebradas en la ETS Ing. Informática de la U. de Sevilla, los días 16 y 17 de Noviembre de 2009
Transparencias a utilizar en la presentación del Trabajo de Fin de Máster en la facultad de Informática de la Universidad del País Vasco en el Máster de Ingeniería Computacional y Sistemas Inteligentes.
Presentacion II jornadas de Lógica, Computación e Inteligencia ArtificialJoaquín Borrego-Díaz
Estas son las transparencias que usé para presentar el doctorado en las II Jornadas de Lógica, Computación e Inteligencia Artificial, celebradas en la ETS Ing. Informática de la U. de Sevilla, los días 16 y 17 de Noviembre de 2009
Aprendizaje Estadístico con Python - 4to Encuentro Software libre 2013
1. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Introducci´on al aprendizaje estad´ıstico con Python
4to Encuentro Regional de Software Libre.
Talca, Octubre 2013.
Dr. Sergio Hern´andez.
shernandez@ucm.cl
Facultad de Ciencias de la Ingenier´ıa
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
2. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Introducci´on
El t´ermino Aprendizaje Estad´ıstico se refiere a un coonjunto de
t´ecnicas y modelos para analizar conjuntos de datos complejos.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
3. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Introducci´on
El t´ermino Aprendizaje Estad´ıstico se refiere a un coonjunto de
t´ecnicas y modelos para analizar conjuntos de datos complejos.
Con la explosi´on de los datos grandes (a.k.a. Big Data), ha
resurgido el inter´es en utliizar estas t´ecnicas en problemas de miner´ıa
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 estad´ıstico con Python
4. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python para datos grandes
Big Data Volumen
VelocidadVariedad
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
5. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python para datos grandes
Big Data
Volumen
Pydoop
mrjob
HadooPy
Velocidad
Cython
PyCUDA
NumbaPro
Variedad
NoSQL
HappyBase
HDF5
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
6. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
NumPy
NumPy es el coraz´on de de los paquetes de Python para realizar
computaci´on cient´ıfica. Agrega la capacidad para modelar matrices como
arreglos N-dimensionales y realizar operaciones de ´algebra lineal sobre
ellos.
Aw = b
3 6 −5
1 −3 2
5 −1 4
w1
w2
w3
=
12
−2
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 estad´ıstico con Python
7. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
SciPy y Scikit-Learn
SciPy Es un paquete de computaci´on cient´ıfica que utiliza NumPy para
resolver problemas num´ericos en ingenier´ıa y ciencias, tales como
optimizaci´on, integraci´on, c´alculo de valores propios, etc.
y = wt
x + N(0, σ2
)
E(w) =
n
i=1
(yi − wt
xi )2
(XT
X) ˆw = Xy
ˆw = (XT
X)−1
Xy
#!/ usr/bin/ python
import numpy as np
from sklearn import linear_model
from sklearn.datasets. samples_generator
import make_regression
X, y = make_regression (n_samples =100 ,
n_features =2, n_informative =1, noise
=50)
regr = linear_model . LinearRegression ()
regr.fit(X, y)
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
8. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
SciPy y Scikit-Learn
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
9. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico 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).
1http://scikits.appspot.com/
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
10. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico 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 espec´ıficos 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 podr´ıan ser incluidos en la distribuci´on de SciPy pero
est´an a´un siendo desarrollados.
1http://scikits.appspot.com/
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
11. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico 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 espec´ıficos 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 podr´ıan ser incluidos en la distribuci´on de SciPy pero
est´an a´un siendo desarrollados.
Algunos SciKits proveen m´etodos y modelos para aplicaciones en
ingenier´ıa aeron´autica, hidrolog´ıa, observaci´on de la tierra y
procesamiento de im´agentes entre otros.
1http://scikits.appspot.com/
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
12. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico 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 m´as complejas que las que incorpora el toolkit
original.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
13. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico 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 m´as complejas que las que incorpora el toolkit
original.
Un ejemplo es el SciKit-Image, el cual extiende SciPy incorporando
t´ecnicas de visi´on computacional y procesamiento de im´agenes.
0 50 100 150 200 250 300 350
0
50
100
150
200
250
300
0 50 100 150 200 250 300 350
0
50
100
150
200
250
300
#!/ usr/bin/ python
from skimage import data , io , filter
image = data.coins ()
edges = filter.sobel(image)
io.imshow(edges)
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
14. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Detecci´on 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 im´agenes.
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. ImageCollection (data_dir + ’/*.
png ’)
rgb_image = coll [1]
image = color.rgb2gray(rgb_image)
fd , hog_image = hog(image , orientations =8,
pixels_per_cell =(4, 4),
cells_per_block =(1, 1), visualise=True
)
2Dalal, N. and Triggs, B., ”Histograms of Oriented Gradients for Human Detection” IEEE Computer Society Conference on
Computer Vision and Pattern Recognition, 2005, San Diego, CA, USA.Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
15. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Regresi´on log´ıstica
Utilizando el descriptor HOG es posible entrenar un modelo estad´ıstico
que pueda discriminar escenas que contienen personas de otras que no
contienen personas.
p = σ(wt
x)
σ(wt
x) =
1
1 + exp(−wtx)
y ∼ Bernoulli(p)
#!/ usr/bin/ python
from sklearn. linear_model import
LogisticRegression
from sklearn. preprocessing import
StandardScaler
X=loadtxt(’train.csv ’)
X = StandardScaler (). fit_transform (X
)
y=loadtxt(’target.csv’)
C=1e0
classifier= LogisticRegression (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 estad´ıstico con Python
16. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Regresi´on log´ıstica
0 10 20 30 40 50 60
0
10
20
30
40
50
60
Figure : Coeficientes estimados con el modelo de regresi´on log´ıstica
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
17. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Regresi´on 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(wt
x)
y ∼ Poisson(λ)
#!/ usr/bin/ python
import numpy as np
import statsmodels.api as sm
from sklearn. preprocessing import
StandardScaler
X=loadtxt(’train.csv ’)
X = StandardScaler (). fit_transform (X
)
y=loadtxt(’target.csv’)
count = sm.Poisson(X, y)
count.fit(method="newton")
3Chan, 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 estad´ıstico con Python
18. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Estimaci´on de la madurez fen´olica 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])
4FONDEF IDeA CA12i10236 Estimaci´on de la Madurez Fen´olica del la Uva basada en Im´agenes de la SemillaDr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
19. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Latent Dirichlet Allocation
0 5 10 15 20
0
2
4
6
8
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.
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.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
20. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Conteo de personas en video
Clustering de im´agenes
Cuantizaci´on de im´agenes
Imagen Original
Figure : Imagen original de semillas de
uva
0 50 100 150 200 250 3000.000
0.002
0.004
0.006
0.008
0.010
0.012
0.014 Histograma, 256 bins
0 20 40 60 80 100 120 1400.000
0.002
0.004
0.006
0.008
0.010
0.012
0.014 Histograma, 128 bins
0 10 20 30 40 50 60 700.000
0.002
0.004
0.006
0.008
0.010
0.012
0.014 Histograma, 64 bins
0 5 10 15 20 25 30 350.000
0.002
0.004
0.006
0.008
0.010
0.012 Histograma, 32 bins
Figure : Cuantizaciones de color
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
21. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python en la investigaci´on reproducible
Python permite crear un pipeline desde la generaci´on de datos y
extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se
utilizan para explicar los datos.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
22. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python en la investigaci´on reproducible
Python permite crear un pipeline desde la generaci´on de datos y
extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se
utilizan para explicar los datos.
A nivel de investigaci´on, esto permite reproducir los resultados
obtenidos por distintos cient´ıficos y de esta manera validar que los
resultados son conmensurables.
Dr. Sergio Hern´andez. shernandez@ucm.cl Introducci´on al aprendizaje estad´ıstico con Python
23. Introducci´on
Modelos estad´ısticos
Aplicaciones de aprendizaje estad´ıstico en visi´on computacional
Conclusiones
Python en la investigaci´on reproducible
Python permite crear un pipeline desde la generaci´on de datos y
extracci´on de caracter´ısticas hasta los modelos estad´ısticos que se
utilizan para explicar los datos.
A nivel de investigaci´on, esto permite reproducir los resultados
obtenidos por distintos cient´ıficos 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 estad´ıstico con Python