top of page
Buscar
  • danielreyes107

One-hot Encoding y Preprocesamiento de imagenes

El preprocesamiento de datos es un paso importante en el proceso de minería de datos. En el caso de nuestro proyecto aplicamos procesamiento de imágenes, en los que se hace uso de algoritmos informáticos para realizar modificaciones a las fotos (distorsionar, reescalar, erupcionar …).


Estas se aplican antes de iniciar con el entrenamiento de la red y la clasificación de las imágenes, debemos realizar un preprocesamiento de imágenes con la finalidad de dar unas propiedades constantes a las fotos. Se deberán aplicar a todas y cada una de las imágenes sin distinción entre si se utilizan en el proceso de entrenar, validar y testear, esto debido a que en la capa de entrada de las redes neuronales se debe precisar aspectos como el tamaño de la imagen (ancho y alto), además de la cantidad de canales (RGB o Grayscale), de tal manera que la red solo admitirá imágenes con esas propiedades.


En este proyecto el ancho y alto que hemos precisado es de 128 pixeles, este valor es el elegido tras realizar múltiples pruebas cambiando los valores, en cuanto a la cantidad de canales realizamos comparativas entre los resultados del aprendizaje de nuestra red tanto con imágenes a color cómo en grises, esto se puede ver en el archivo llamado prueba.ipynb, en el que encontraremos entrenamientos con el nombre RGB y TFL, este último contendrá además una propiedad denominada Transfer Learning, que hacen referencia a entrenamientos en los que el lote de imágenes ha sido procesadas de tal manera que estas contengan fotos a color, por otra parte GS tendrá fotos en escala de grises.


Las imágenes son obtenidas y separadas de tal manera que por cada imagen real tenemos dos imágenes preprocesadas de 128x128 y N canales dependiendo de si son RGB o GS, no obstante, además, debemos dividir estas imágenes en tres lotes, entrenamiento, validación y testeo.

  • Set de entrenamiento: es el lote usado para entrenar y ajustar los Pesos: de la red neuronal, estos valores son ajustados por los algoritmos de optimización. El objetivo es minimizar las pérdidas y aumentar la precisión del modelo a la hora de aprender los patrones.

  • Set de validación: este set se usa también durante el entreno, pero debe estar separado, se usa para afinar los hiperparámetros y comprobar como de bien está aprendiendo la red, digamos que estas imágenes son problemas que la red debe de resolver en cada iteración tras haber realizado un aprendizaje, es decir cada vez que termina una época de entrenamiento se inicia esta prueba en la que se comprueba su aprendizaje.

  • Set de testeo: el último set que nos queda por ver es el de testeo, este contiene imágenes que la red no conoce y son usadas para comprobar el aprendizaje tras el entrenamiento, esta tiene como finalidad demostrar como de bien trabaja la red neuronal con imágenes que no conoce. Por decirlo de alguna manera es el resultado final de la red neuronal.

En este proyecto se ha dividido las imágenes de tal manera que el 72% se emplean en el entrenamiento, el 20% en la validación y el 8% restante en las pruebas.


Este es el último punto que trataremos en este capítulo, puede ser algo difuso debido a que aún no hemos explicado algunos términos, pero es algo sencillo de comprender.



Esta codificación es necesaria debido a que las redes neuronales no son capaces de procesar palabras, esta es una forma de generar categorías entendibles para nuestro modelo a partir de las etiquetas. Este principio es similar a la Tokenización que se emplea en NLP (Natural Language Processing), en NLP se le da a cada palabra un valor único para que estas sean identificables.

Otro tipo de codificación de este estilo es el Label Enconding, este directamente transforma las etiquetas en números que van desde el 0 hasta N-1 (número de clases menos uno) y las ordena.



Ilustración 9: Codificaciones (ref.)

Se aplica la codificación One-Hot cuando:

Categorías no son ordinales, es decir que no hay una necesidad relevante en el orden (enfermedades pulmonares, canceres, países…) y además el número de clases es pequeño, ya que one-hot consume muchos requisitos.

Aplicaríamos Label Encoding cuando:

Las características sean ordinales (los grados escolares, las posiciones de una carrera según las medallas …) o el volumen de clases sea muy elevado como para que one-hot produzca problemas de consumo de memoria.

8 visualizaciones0 comentarios

Entradas Recientes

Ver todo

Commentaires


bottom of page