Desarrollo de un algoritmo Eigenfaces: segunda etapa

Autor: | Última modificación: 15 de noviembre de 2022 | Tiempo de Lectura: 2 minutos
Temas en este post:

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 1
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 2

¿Qué sigue?

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!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.