La importancia del preprocesamiento de imágenes
Introducción
El presente blog brinda una definición del preprocesamiento y expone la necesidad de aplicarlo en imágenes que luego serán el insumo para procesar una red neuronal. Luego de explicar algunas de las modificaciones que se realizan con frecuencia en las imágenes, se da a conocer la experiencia obtenida en un caso de laboratorio, donde se entrenó una red neuronal para clasificar tazas, concluyéndose que el preprocesamiento facilita considerablemente el entrenamiento de la red neuronal, provocando una rápida convergencia de la precisión a la unidad en las primeras épocas de dicho entrenamiento.
¿Qué es preprocesamiento?
¿Por qué es necesario el preprocesamiento?
¿Qué incluye?
![]() |
Manipulaciones realizadas en imágenes. a) Rotación aleatoria. b) Reemplazo de datos. c) Transformaciónes geométricas. d) Escalado. e) Corrección gamma. f) Ecualización de histograma. |
- Rotaciones aleatorias. Rotar una imagen es particularmente importante cuando un modelo podría ser utilizado en posiciones aleatorias, como en una aplicación móvil. El rotar una imagen puede traer como consecuencia la generación de “pixeles muertos” en los bordes de una image y, para los rectángulos de contorno, requiere utilizar trigonometría para actualizar dichos rectángulos. La figura 1a muestra el caso de rotaciones aleatorias para una pelota de beisbol. [1]
- Reemplazo de valores nulos. Reemplazar valores nulos es usualmente la más común de las técnicas en el preprocesamiento de datos porque permite obtener como resultado un conjunto de datos completo con valores válidos dispuestos a trabajar con ellos. Para ejecutar un algoritmo de reemplazo de valores nulos como parte del preprocesamiento de la información, se sugiere utilizar Google Colab en línea o localmente Jupyter Notebook, siendo el primero máx fácil de utilizar. La clase SimpleImputer provee estrategias básicas para imputar o representar valores faltantes. La figura 1b muestra el caso en que faltan valores de una base de datos. [3]
- Transformaciones geométricas. Mientras que muchas modificaciones cambian aspectos de color, brillo y contraste en una imagen, las transformaciones geométricas buscan hacer transformaciones geométricas cambiando de posición los píxeles de una imagen. Uno de los objetivos a lograr es eliminar ls distorsión geométrica que ocurre en el momento de captura de una imagen. Tome de referencia la figura 1c. [4]
- Escalado de la imagen. El escalado de características es una técnica de preprocesamiento de datos que se utiliza para normalizar nuestro conjunto de valores de datos. La razón por la que usamos el escalado de características es que algunos conjuntos de datos pueden ser superados por otros de tal manera que el modelo de aprendizaje automático ignora los datos superados. En este caso, los conjuntos de datos representan características independientes. Una ilustración puede tomarse de la figura 1d. [3]
- Corrección gamma. Es un ajuste no lineal aplicado al valor de cada pixel. Con la normalización de la imagen pudieron realizarse operaciones lineales en píxeles individuales, como suma, resta o productos escalares; en cambio, la corrección gamma realizar operaciones que causan la saturación en la imagen. Ver figura 1e.[4]
- Ecualización de histograma. Es una técnica muy conocida para mejorar el contraste, aplicable a casi todo tipo de imágenes. Provee un método sofisticado para modificar el rango dinámico y el contraste, cambiando la imagen de manera que la intensidad en el histograma tiene la forma deseada. A diferencia de la extensión del contraste, los operadores para modelado de histograma pueden emplear funciones de transferencia no lineales y no monotónicas para mapear píxeles entre los valores de entrada y salida de las imágenes. Este caso se observa en la figura 1f. [4]
Otras modificaciones que pueden realizarse, por mencionar algunas ya que la lista es amplia, son:
• Conversión de color a escala de grises. Se realiza con objeto de reducir la complejidad de los cálculos, aprovechando que en ciertas circunstancias, puede perderse cierta información innecesaria en las imágenes.
• Tansformaciones en brillo y contraste. Representan un área importante en el procesamiento de imágenes, tanto para personas como para visión por computadora. Es ampliamente utilizado para el procesamiento de imágenes médicas y como preprocesamiento en el reconocimiento de voz, sístesis de textura y muchas otras aplicaciones en procesamiento de imágenes y vídeo.
Preprocesando tazas
Para adquirir experiencia en el entrenamiento de redes neuronales y poder clasificar objetos, se tomó de muestra 5 tazas con un diseño muy diferente entre ellas.
![]() |
Fotos de tazas utilizadas para entrenar red neuronal. a) Muestra de tazas. b) Toma de fotos. c) Fotos manipuladas, las del bloque 1 con rotación aleatoria y las del bloque 2 con desplazamiento. |
Para mejorar los niveles de precisión durante el proceso de entrenamiento, además de tomarles varias fotos desde diferentes ángulos como se ilustra en las imágenes 2a y 2b, se hizo el preprocesamiento siguiente:
• Se aplicó una rotación horaria de 30° hasta completar 360°. (Ver figura 2c en bloque 1)
• Se aplicó un total de 5 desplazamientos a la derecha, del 10% de la imagen cada uno. (Ver figura 2c en bloque 2)
Resultados
Los resultados se muestran en la figura 3, donde puede observarse que durante el proceso de aprendizaje la precisión ha alcanzado el valor de 1.000 en la quinta época, en referencia a la figura 3a, lo cual puede considerarse pronto, ya que en algunos casos puede superar 20 épocas sin lograr ese nivel de precisión.
![]() |
Resultados obtenidos del proceso de entrenamiento. a) Pérdidas y precisión por época. b) Curvas de pérdidas. c) Todos los aciertos positivos en el proceso de prueba. |
Las curvas mostradas en 3b comprueban los resultados de la rápida convergencia de la precisión a 1, ya que las pérdidas se reducen prácticamente a cero tanto en el proceso de entrenamiento como en las pruebas (Train loss y Test loss respectivamente). Finalmente, la figura 3c muestra las imágenes que han sido seleccionadas en un proceso independiente de pruebas y la clasificación ha sido exitosa en todas ellas, pensando que habrá un valor porcentual de error mínimo al tratar de identificar muchas de ellas.
Conclusiones
- El preprocesamiento de imágenes es la modificación en algunas de sus propiedades, que puede incluir pero no limitarse al escalado, rotación, desplazamiento, reemplazo de valores nulos, transformación geométrica, corrección gamma, entre otros.
- El preprocesamiento de las imágenes como un paso previo al entrenamiento de una red neuronal, facilita grandemente el proceso de entrenamiento, provocando una convergencia rápida de la precisión a la unidad. Dado que el entrenamiento requiere de muchos ciclos de máquina, reducir estos ciclos mediante el preprocesamiento permite reducir tiempo y energía en dicho entrenamiento.
Referencias
https://blog.roboflow.com/why-and-how-to-implement-random-rotate-data-augmentation/
https://gallery.azure.ai/Experiment/Methods-for-handling-missing-values-1
https://www.pyimagesearch.com/2015/10/05/opencv-gamma-correction/
Preguntas de reflexión
- ¿Existen casos en los cuales no es necesario el preprocesamiento para facilitar el entrenamiento de una red neuronal?
- ¿Cuáles herramientas de Python son más utilizadas para aplicar el preprocesamiento de imágenes?



Comments
Post a Comment