Clasificación de imágenes

Quarto

Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see https://quarto.org.

library(imager)
Warning: package 'imager' was built under R version 4.3.2
Loading required package: magrittr
Warning: package 'magrittr' was built under R version 4.3.2

Attaching package: 'imager'
The following object is masked from 'package:magrittr':

    add
The following objects are masked from 'package:stats':

    convolve, spectrum
The following object is masked from 'package:graphics':

    frame
The following object is masked from 'package:base':

    save.image
library(dplyr)

Attaching package: 'dplyr'
The following object is masked from 'package:imager':

    where
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(ggplot2)
library(glmnet)
Warning: package 'glmnet' was built under R version 4.3.2
Loading required package: Matrix
Loaded glmnet 4.1-8
obtain_data <- function(semilla, files, obtain_cels, train_size) {
  if (length(obtain_cels) < 2) {
    stop("Escoge al menos 2 tipos de celulas: eosino,lympho,monocyte,neutro")
  }
  if (train_size > 2000) {
    stop("train_size Tiene que ser máximo 2000")
  }
  
  lista.celulas <- list(eosinofilo = vector(),
                        linfocito = vector(),
                        monocito = vector(),
                        neutrofilo = vector("character"))
  eosinophil <- files[grep("eosino", ignore.case = TRUE, files)][1:train_size]
  lymphocyte <- files[grep("lympho", ignore.case = TRUE, files)][1:train_size]
  monocyte <- files[grep("monocyte", ignore.case = TRUE, files)][1:train_size]
  neutrophil <- files[grep("neutro", ignore.case = TRUE, files)][1:train_size]
  celulas <- list(eosinofilo = eosinophil,
                  linfocito = lymphocyte,
                  monocito = monocyte,
                  neutrofilo = neutrophil)
  indx_presubset <- vector("numeric", length = length(obtain_cels))
  for (i in 1:length(obtain_cels)) {
    regex <- obtain_cels[i]
    indx_presubset[i] <- grep(regex, names(celulas))
  }
  celulas.choosen <- celulas[indx_presubset]
  names(celulas.choosen) <- names(celulas)[indx_presubset]
  set.seed(semilla)
  idx_sampleador <- sample(1:train_size, size = 0.7 * train_size)
  train_celulas <- lapply(celulas.choosen, function(x) x[idx_sampleador])
  test_celulas <- lapply(celulas.choosen, function(x) x[-idx_sampleador])
  imgs_train <- lapply(unlist(train_celulas), load.image)
  imgs_test <- lapply(unlist(test_celulas), load.image)
  retorno <- list(trainset = imgs_train, testset = imgs_test)
  return(retorno)
}

fun_preprocess <- function(imgs) {
  im <- imgs
  im <- crop.borders(im, nPix = 30)
  im <- grayscale(im)
  im <- abs(255 - im)
  im <- as.data.frame(im)
  im <- im[, ncol(im)]
  return(list(pixels = im, imagen = im))
}
files <- list.files("./dataset2-master/dataset2-master/images/TRAIN",full.names = T, recursive = T)
obtain_cels <- c("monocito","neutrofilo")
datos <- obtain_data(1234564,files=files,obtain_cels = obtain_cels,train_size = 100)
x <- list(celulas=datos$trainset,
respuesta = datos$label_train)
plot(x$celulas[[1]])

# Obtén la ruta del directorio de trabajo actual
ruta_actual <- getwd()

# Imprime la ruta en la consola
cat("Directorio de trabajo actual:", ruta_actual, "\n")
Directorio de trabajo actual: C:/Users/raule/OneDrive/Documentos/Clasificación de imágenes