Desarrollo de un algoritmo Eigenfaces: segunda etapa

| Última modificación: 1 de agosto de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En un post anterior iniciamos el desarrollo de un algoritmo Eigenfaces en el cual desarrollamos las dos primeras etapas: la descarga de datos y la carga de imágenes.

Para ello, creamos el directorio donde se iban a descargar las imágenes del dataset y, posteriormente, las descargamos. Acto seguido, creamos una matriz que nos enseñara el número de la foto que buscáramos.

En este artículo seguiremos con dicho ejercicio y la siguiente etapa es la transformación de esas imágenes que hemos cargado previamente.

Transformación de imágenes

Convertimos la matriz de todas las imágenes de 250×250 en 1×62500.

Cargamos todas las imágenes de George W. Bush y de otros personajes y las guardamos en un array de N x 62500.

A continuación, dividimos esa matriz en dos, una para entrenamiento y otra para testing.

#Desarrollo de un algoritmo Eigenfaces
img <- rbind (img, img)
dim (img)

2 . 62500

#Desarrollo de un algoritmo Eigenfaces
get all pics for <- function {
i <- 0
list imgs-list()
repeat { 
i <- i + 1
img <- get_pic (name, id = 1, bw = TRUE)}
if (is.null (img)){ 
break

}
dim (img) <- c (1, 250 * 250) 
list_imgs [[i]] <- img

}
do.call ("rbind", list_imgs)

}
name <- 'George W Bush'
pics_bush <- get_all_pics_for (name)
dim (pics_bush)

530 . 62500

#Desarrollo de un algoritmo Eigenfaces
pics_other <- get_all_pics_for ('Ariel Sharon')
for (name in c ('Jose Maria Aznar', 'Hugo Chavez', 'Tony Blair', 'Colin Powell', 'Donald Rumsfeld', 'Vladimir Putin', 'Junichiro Koizumi', 'Arnold Schwarzenegger' )) {
imgs <- get_all_pics_for (name)
pics_other <- rbind (pics_other, imgs)
} d
dim (pics_other)
set.seed(1)
idx_bush <- sample (1 : nrow (pics_bush), 0.7 * nrow (pics_bush),)
train_bush <- pics_bush [idx_bush,]
test_bush <- pics_bush [-idx_bush,]

idx other <- sample (1 : nrow (pics_other), 0.7 * nrow (pics_other),) 
train other <- pics_other [idx_other,]
test_other <- pics_other [-idx_other,]

train matrix <- rbind (train_bush, train_other)
dim (train_matrix)

test matrix <- rbind (test_bush, test_other)
dim (test matrix) 

[Train]

947 . 62500

[Test]

406 . 62500

rownames (train_matrix) <- c (rep ("bush", nrow (train_bush)), rep("other", nrow(train_other)))
rownames (test_matrix) <- c (rep ("bush", nrow (test_bush)), rep ("other", nrow (test_other)))
train_matrix [sample (1 : nrow (train_matrix),10), 1 : 10]
Desarrollo de un algoritmo Eigenfaces: segunda etapa
desarrollo de un algoritmo eigenfaces
Resumen del procedimiento
plot_row_image <- function (row) {
img <- matrix (row, ncol = sqrt (length (row)))
plot (1 : 2, type = 'n')
rasterImage (img, 1, 1, 2, 2)
}
plot_row_image (train_matrix [800 , ])
Desarrollo de un algoritmo Eigenfaces: segunda etapa

Así, damos por terminado el desarrollo de un algoritmo Eigenfaces.

Si te ha gustado este ejercicio, recuerda que en nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp tenemos muchos más. Esta es una formación intensiva en la que aprenderás todo lo necesario para incursionar rápidamente en el mundo laboral y conseguir un mejor empleo. ¡Anímate y solicita más información!

Sandra Navarro

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

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado