Desarrollo de algoritmo Eigenfaces: primera etapa

| Última modificación: 15 de noviembre de 2024 | Tiempo de Lectura: 2 minutos
Premios Blog KeepCoding 2025

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

En este ejercicio vamos a ver como aplicar PCA al reconocimiento facial por medio del algoritmo Eigenfaces. Vamos a descargamos un dataset público con miles de imágenes de más de 5000 personas. Cada imagen tiene tiene una resolución de 250x250px y ha sido colocada de tal forma que la cara siempre se encuentra en la misma posición.

Con esto vamos a hacer un algoritmo que nos diga si una foto pertenece a George W. Bush o no.

En esta sección, desarrollaremos las dos primeras fases del algoritmo Eigenfaces: la descarga de datos y la carga de imágenes.

¿Qué encontrarás en este post?

Descarga de datos

Primero creamos el directorio donde se descargarán las imágenes.

Después, con la función curl_download, descargamos la fotos comprimidas en formato tgz. Ocupa unos 233Mbytes. La imágenes descomprimidas ocuparán unos 289Mbytes.

Primero lo que haremos será descargar el dataset de fotos:

#algoritmo Eigenfaces
ext_dir <- 'data/faces dir.create (ext_dir)
library (curl)
out_file <- 'data/faces/faces.tgz'
curl_download ("http://vis-www.cs.umass.edu/Lfw/Lfw-funneled.tgz', out_file, quiet = FALSE)
#Con untar descomprimimos el dataset
untar (out_file, exdir = ext_dir)
#aquí enseñamos el contenido
list.files (ext_dir)

‘faces.tgz’ . ‘lfw_funneled’

ext_dir <- 'data/faces'
list.files (paste0 (ext_dir, '/lfw_funneled'))
algoritmo Eigenfaces

Carga de imágenes

Vamos a usar la libreria jgpeg para cargar las imágenes.

Creamos una función que convierte las imágenes de color a blanco y negro.

El readJPEG nos permite ir leyendo las fotos que hay en el directorio.

Al final, pasaremos las imágenes a blanco y negro por medio de la variable bw.

#algoritmo Eigenfaces
library (jpeg)
get_pic <- function (name, id, root_path = ext_dir, bw = FALSE) {
img <- tryCatch (
readJPEG (paste0 (root_path, '/lfw_funneled/', name, ' / ', name, ' / ', sprintf ('%04d', id), '.jpg')), error = function (e) return (NULL))
if (!is.null (img) && bw) {
img <- (img [ , 1] + img [ , , 2] + img [ , , 3]) / 3
}
img
}
#Creamos una matriz que nos enseñe el número de la foto que busquemos. En este caso es la foto número 2.
img <- get_pic ('Tony Blair', id = 2, bw = TRUE, root_path = ext_dir)
paste ("Dimesiones:", paste0 (dim (img), collapse = 'x'))
paste ("Tipo:", class (img))

options (repr.plot.height = 4, repr.plot.width = 4)
plot (1 : 2, type = 'n')
rasterImage (img, 1, 1, 2, 2)

‘Dimensiones : 250 x 250’

‘Tipo: matrix’ . ‘Tipo: array’

algoritmo Eigenfaces
dim (img) <- c (1, 250 * 250)
dim (img)

1 . 62500

hist (img)
algoritmo Eigenfaces

¿Qué sigue?

Ahora que hemos visto las dos primeras fases del reconocimiento facial con el algoritmo Eigenfaces, podemos avanzar a la siguiente fase, que es la transformación de imágenes.

¿Quieres seguir aprendiendo? Para ello, dejamos a tu disposición nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, con el cual aprenderás todo lo necesario para incursionar rápidamente en el mundo laboral. ¡Solicita más información y cambia tu vida!

Noticias recientes del mundo tech

¡CONVOCATORIA ABIERTA!

Big Data & Data Science

Full Stack Bootcamp

Clases en Directo | Acceso a +600 empresas | 98% de empleabilidad

Descárgate también el informe de tendencias en el mercado laboral 2026.

Fórmate con planes adaptados a tus objetivos y logra resultados en tiempo récord.
KeepCoding Bootcamps
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.